暴力破解学习

暴力破解

暴力破解的产生是由于服务器端没有限制,导致攻击者可以通过暴力的手段破解所需信息,比如用户名、密码等。
如果破解一个四位数字的验证码,那暴力破解的范围就是0000~9999,所以暴力破解需要一个庞大的字典。 一般我们用 burpsuite 的
intruder 模块进行暴力破解,它可以通过文件方式载入 .txt 文本的字典。关于字典可以到网上下载,样式非常多。
暴力破解的原理就是通过字典里已有的那些字符去一个个尝试登录,理论上说,只要字典足够大,这样的穷举就能够成功。
不过字典越大,工具尝试的次数就越多,那消耗的时间就越长。

暴力破解流程
尝试登录,进行抓包,查看数据包中的信息,观察含有的元素元素,比如可能含有token。

查看返回信息,确认目标是否存在暴力破解的可能。

暴力破解漏洞修复
1、如果用户登录次数超过设置的阈值,则锁定账号。

2、如果某个IP登录次数超过设置的阈值,则锁定IP。(这个方式有一个缺陷,可能一个IP有多个用户使用,那可能导致用户无法登录)

3、使用安全的验证码,比如通过发送手机验证码。

下面通过 pikachu 靶场中的暴力破解模块对几种暴力破解的方式进行测试。

基于表单的暴力破解

进入可以看到一个登录界面。
在这里插入图片描述
先尝试登录,随便输入123/123,可以看到返回信息为不存在,也没有其他的什么验证机制。
在这里插入图片描述
用 burp 抓包,可以看到他的一些元素,只有账号和密码。
在这里插入图片描述
按 ctrl + i 把包发送到 intruder 模块进行暴力破解。

注意如果只爆破一个参数的话,选择 sniper 。但是我们这里需要爆破两个参数,就选择cluster bomb。
在这里插入图片描述
如果标记的信息不只是账号和密码或存在错误,那我们需要重新进行标记。

先点 clear 对标记进行清除,然后在选中我们要爆破的账号密码123/123点击 add 标记。
在这里插入图片描述
在playload 一栏中,payload set处选择2,即爆破2个参数。

进行载入字典,可以点 load 载入字典文件,也可以在 add 那一行进行手动输入可能存在的账号密码。
在这里插入图片描述
最后点击 Start attack 进行爆破,可以看到正在爆破的界面。

通过在length一项来判断,长度不一样的即为爆破成功的信息。
在这里插入图片描述

验证码绕过(on server)

同样是一个登录界面,与前面相比多了一项验证码的输入。
在这里插入图片描述
尝试随便输入123/123/123,这里我们知道输入的三项都是错误的,但是返回信息只显示了验证码错误。
在这里插入图片描述
再尝试随便输入123/123,验证码按要求正确输入。

这个时候才回显了账号或密码错误。
在这里插入图片描述
进行抓包,可以看到数据中的参数与前面相比多了一项vcode,就是输入的验证码的参数。
在这里插入图片描述
这个时候,我们先随便输入账号密码123/123,输入要求的正确的验证码,然后按 ctrl + R 尝试发送到 repeater 模块测试回显。

在箭头所指的搜索栏进行搜索回显信息的关键字(前面我们已经测试了不同填写方式的两种回显),然后就可以看到成功回显了信息,指我们的 username or password 错误,但是验证码正确。
在这里插入图片描述
我们再尝试修改这条请求的信息,把账号或者密码修改一下,再次发送。

根据回显信息得知得到的仍然是账号密码错误,验证码正确的结果。
在这里插入图片描述
也就是说,我们现在抓到的这个包可以直接进行爆破,因为在这个包验证码是可以一直用的,和前面一样爆破账号和密码这两个参数。

回到代理界面,把包发送到 intruder 模块进行爆破,方法和前面一样。
在这里插入图片描述

验证码绕过(on slient)

界面中同样需要输入账号密码、验证码三项。
在这里插入图片描述
老样子,尝试随便输入123/123/123,可以看到有弹窗出现显示验证码错误。
在这里插入图片描述
按要求输入正确的验证码后,就回显了 username or password 错误。
在这里插入图片描述
在这之前,似乎和前面那题没有什么区别。
再用 burp 抓包看看,这里也和前面一样,有账号密码、验证码三个参数。
在这里插入图片描述
再把包发到 repeater 模块进行测试。

这个时候发现即使是错误的验证码,他的响应却没有显示验证码错误,而是显示 username 或 password 错误。
在这里插入图片描述
那这样就证明其实这个验证码是形同虚设的,后端不会对验证码进行验证。

既然验证码正不正确这个请求的响应都是一样的,那就可以直接去爆破了,爆破账号和密码这两个参数。

虽然到此可以进行暴力破解出账户和密码了,不过我们还可以了解一下这个验证码的源码。

在刚刚 repeater 模块测试的时候,可以在响应界面明显发现一串 JavaScript 代码,是与验证码有关的。

这里就体现了前面我们尝试验证码错误的时候是以弹窗的方式出现,而不是和前面一样在界面上回显信息。

而且这个验证码的验证是在客户端上实现的,后台不会对错误的验证码进行验证。

这个 JavaScript 代码里有 createcode() 和 validate() 这两个函数。

createcode() 函数会从0-9和26个大写字母中随机挑选5个作为验证码,然后用 validate() 函数去验证我们输入内容的准确性。
在这里插入图片描述
再回到 pikachu 网页,按 F12 查看源代码,用定位符找到验证码位置处的代码,可以看到每次出现验证码,都会调用createcode() 函数改变验证码。
在这里插入图片描述

token防爆破

进入看到是一个普通的登录界面。
在这里插入图片描述
随便输入123/123,看看是否有啥异常。

显示账号或密码错误,用 burp 进行抓包。

可以看到除了 username 和 password ,还有一个 token 参数。

token 参数就是用来防止暴力破解的,因为 token 是一个随机值,无法被破解。

pikachu靶场后面的 csrf 测试模块中也有 token 这个东西用来防 csrf 漏洞。

这样看来 token 参数是一个很nb的东西(很安全的东西)。
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Goodric

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值