pikachu靶场通关之暴力破解

喜欢ヅ旅行 2023-10-02 10:09 80阅读 0赞

暴力破解

攻击者在不知道目标系统的账号密码的情况下,一种对目标系统尝试性的登录

连续性尝试+字典=自动化

字典

一个有效的字典,可以大大提高暴力破解的效率

字典会在下篇文章分享

如果一个网站没有对登录接口实施防暴力破解的措施,或者实施了不合理的措施。

那么这个网站就存在暴力破解漏洞。

是否要求用户设置了复杂的密码;
是否每次认证都使用安全的验证码;
是否对尝试登录的行为进行判断和限制;
是否在必要的情况下采用了双因素认证;
…等等。
存在暴力破解漏洞的网站可能会遭受暴力破解攻击,但该暴力破解攻击成功的可能性并不是100% !
所以有些网站即虽然存在暴力破解漏洞,但其管理员可能会忽略它的危害。

字典优化技巧

技巧一:
根据注册提示信息进行优化
对目标站点进行注册,搞清楚账号密码的一些限制,比如目标站点要求密码必须是6位以上,字
母数字组合,则可以按照此优化字典,比如去掉不符合要求的密码。
技巧二:
如果爆破的是管理后台,往往这种系统的管理员是admin/administrator/root的机率比较高,可以使用这三个账号+随便一个密码,尝试登录,观看返回的结果,确定用户名。
比如:
输入xxx/yyyf返回“用户名或密码错误” ;
输入admin/yyy返回 “密码错误” ,则基本可以确定用户名是admin ;
因此可以只对密码进行爆破即可,提高效率。

暴力破解漏洞测试流程

1、确认登录接口的脆弱性

确认目标是否存在暴力破解的漏洞。( 确认被暴力破解的“可能性”)
比如:尝试登录—-抓包—-观察验证元素和response信息,判断否存在被暴力破解的可能。
2、对字典进行优化
根据实际的情况对字典进行优化,提高爆破过程的效率。
3、工具自动化操作
配置自动化工具(比如线程、超时时间、重试次数等),进行自动化操作。

基于表单的暴力破解实验burp suite-intruder介绍

target选项卡
设置攻击目标,可以通过proxy发送;
Pasitions选项卡:
指定需要暴力破解的参数并设置成变量,同时选择攻击模式:
Sniper:狙击手
设置一个payload,先将第一个变量使用字典进行测试,然后在将第二个变量使用字典进行测试;
Battering ram:冲撞车
设置一个payload ,所有的变量-起用字典内容被替换,然后一起尝试;
Ptichfork:草叉型
每个变量设置一个payload ,分别使用对应的字典对变量进行同时替换;
Cluster bomb:焦束炸弹
需要为每个变量设置一个payload ,分别使用字典内容组合对变量进行替换,

Payloads选项卡
设置字典,并可以对字典进行统一的策略处理; 设置字典,并可以对字典进行统一的策略处理;
options选项卡
对扫描的线程、失败重试等进行配置;
对结果设置匹配的flag:通过一个标识符来区别结果,并在结果栏中flag出来;

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16

不安全的验证码-on client常见问题

●使用前端js实现验证码(纸老虎);
●将验证码在cookie中泄露,容易被获取;
●将验证码在前端源代码中泄露,容易被获取;
验证码一定要在服务端进行认证 服务端认证不严格也会有相应的问题

不安全的验证码-on server常见问题

(服务端认证不严格)
●验证码在后台不过期,导致可以长期被使用;
●验证码校验不严格,逻辑出现问题;
●验证码设计的太过简单和有规律,容易被猜解

一、基于表单的暴力破解

账号密码Admin 123

发现提示 账号密码错误 账号不变 修改密码

查看提示 会不会变 以确定 有木有漏洞让我们发现 账号正确

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 1

Bp抓包、发送到爆破模块、设置字典、重放攻击

抓包发送到爆破模块

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 2

设置变量watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 3

设置字典 这里我们使用数字(由于已知密码是123456 做一个简单的演示)watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 4

攻击得到结果 密码为123456

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 5

巧用grep-match grep-extract模块

将错误提示 或者 正确提示 复制 添加到match模块

攻击后得到结果会有一栏显示

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 6

在extract模块中 直接点击添加 弹窗 在回显报文中 选择需要会显得元素

那么在攻击后的结果中会有一栏 显示 此元素信息

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 7

攻击得到结果 发现我们添加的信息watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 8

二、验证码绕过(on server)(服务端)(验证码复用)(后端认证)

存在问题:

看源代码

使用过的验证码应该销毁 此关没有进行销毁

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 9

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 10

Session要设置过期时间 一般为一分钟 此关没有设置

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 11

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 12 watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 13

重放模块+爆破模块

随机填写账号密码验证码 bp抓包 将抓到的包的验证码修改为正确的

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 14

提示账号密码错误

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 15

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 16

多发送几次发现验证码任然有效 既可以爆破

发送到爆破模块

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 17

配置两个字典

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 18

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_19_color_FFFFFF_t_70_g_se_x_16

配置两个正则,发起攻击

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_18_color_FFFFFF_t_70_g_se_x_16

得到结果watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 19

三、验证码绕过(on client)(客户端)(前端认证)

重放模块+爆破模块

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 20

利用重放模块 右键发送

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 21

更改验证码 发现返回数据为账号或者密码错误

可知 这是前端验证

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 22 watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 23

设置攻击模式 两个变量 两个字典

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 24

设置两个payloud

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_15_color_FFFFFF_t_70_g_se_x_16

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_16_color_FFFFFF_t_70_g_se_x_16

设置正则

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_15_color_FFFFFF_t_70_g_se_x_16 1

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_14_color_FFFFFF_t_70_g_se_x_16

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 25

发起攻击 得到结果watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 26

四、Token爆破

https://www.cnblogs.com/KbCat/p/9317545.html

关键 token 不变

抓取返回包 得到token 再把token放入请求包

token只要是用来防御csrf(跨站请求攻击),但无法防止暴力破解。因为当将随机产生的token参数加入到请求包中时。每次请求攻击者只能够盗取到被攻击这的cookice而不能伪造当次请求的token,这是因为token是由服务器随机生成的,只有匹配当次的token,服务器才会与客户端进行连接,否则拒绝连接。而token无法防止暴力破解的原因是因为token是随机生成的,攻击者只要能够想办法获取到前端的token值即可进行暴力破解。

进入靶场页面是一个登录页面、该关卡是一个token的暴力破解关卡,抓取登录请求包即可看出再包中添加了token字段,该token字段也是可以放在cookie中存储的。

1. token介绍

Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。如果这个 Token 在服务端持久化(比如存入数据库),那它就是一个永久的身份令牌。

Token 完全由应用管理,所以它可以避开同源策略

Token 可以避免 CSRF 攻击(http://dwz.cn/7joLzx)

Token 可以是无状态的,可以在多个服务间共享

2. 利用**burp**进行暴力破解

在网站上随便输入用户名和密码 用burp进行抓包

可以看到对应的参数,选取password和token进行爆破,因为我们是一次password对应上一次服务器返回的一个token,所以选择pichfork模式。(Pichfork(草叉模式):类似于Battering ram模式,但是使用的是多个字典,并且多个点的字典内容一一匹配进行爆破)

再进入intruder模块options中设置抓取返回数据包的token值,

将包发送至intruder ctrl+i 或者右键 破解类型选择pitchfork 设置password和token是变量

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_15_color_FFFFFF_t_70_g_se_x_16 2

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_18_color_FFFFFF_t_70_g_se_x_16 1

在options中的grep-extract中打勾点击add添加过滤条件 点击refetch response找到响应包中的token 选中复制token值点击确定

在Redirections重定向功能中,选择always始终跟随url重定向

点击response按钮,会发送一次请求,显示返回的数据包,我们在数据中查找token的值并选中,其实也可以在前面分析时记录token值的位置,直接添加正则表达式,便不需要发送这一次请求了。

这一串token值需要记录下来,等会有用,发送第一个数据包的token值就来之于此。

为了方便观察暴力破解我们可以提取提交登录请求后的返回值,显示到结果页面、更为直观的看出账号密码是否正确登录成功。账号密码错误会返回username or password is not exists~,搜索该串字符串,添加正则。

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_9_color_FFFFFF_t_70_g_se_x_16watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_15_color_FFFFFF_t_70_g_se_x_16 3

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_11_color_FFFFFF_t_70_g_se_x_16

将最下方的redirections选择为always

设置payload set为1 type为runtime file 文件选择为密码字典

第一个payload选择一个密码字典

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_16_color_FFFFFF_t_70_g_se_x_16 1

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_14_color_FFFFFF_t_70_g_se_x_16 1

set为2 type为recursive grep时 复制刚才的token值到first request

第二payload选择grep模式,选择提取token值的正则表达式,将我们之前保存的token值粘贴到该空框中,作为第一个发送包的token值。

点击start attack进行破解时遇到了报错

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_15_color_FFFFFF_t_70_g_se_x_16 4

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 27

需要在options中将线程设置为1

设置进程数,设置进程数为1,每连接只发出一个请求包,若同时发送几个请求,会返回多个token,暴力破解将会失败,bp也会报错

重新爆破 爆破完成后可以看到相应包长度不同的包中有一个登录成功

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 28

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 29

可以多设置一个字段 得到 一个回显

方便我们的得到结果

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_20_color_FFFFFF_t_70_g_se_x_16 30

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_19_color_FFFFFF_t_70_g_se_x_16 1

五、防范措施

●设计安全的验证码(安全的流程+复杂而又可用的图形) ;
●对认证错误的提交进行计数并给出限制,比如连续5次密码错误,锁定2小时;
●必要的情况下,使用双因素认证;

聊一聊token防爆破

一个简单的token实例

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5bCP6J2J5a2m5a6J5YWo_size_18_color_FFFFFF_t_70_g_se_x_16 2

一般的做法:
1、将token以”type= ‘hidden’ ”的形式输出在表单中;
2、在提交的认证的时候一起提交,并在后台对其进行校验;
但,由于其token值输出在了前端源码中,容易被获取,因此也就失去了防暴力破解的意义。
一般Token在防止CSRF 上会有比较好的功效。

发表评论

表情:
评论列表 (有 0 条评论,80人围观)

还没有评论,来说两句吧...

相关阅读