解密-burp暴力破解模式-手把手教黑客教程
萌新小白猫学习的第一课。
一、测试环境1.靶场
使用虚拟机运行靶场,IP地址为192.168.10.7。
一共有4个暴力破解模块,试一试能过几关。
2.攻击工具
10虚拟机,IP地址为192.168.10.2。
Burp Suite ,安装好JDK,设置好Proxy就可以开始了。
二、基于表单的暴力破解Step 1.原理分析
登录页面很简洁,只有和两个表单,尝试填入123/123,提示: or is not ~
先开启BP,抓包看看情况。
可以看到提交了和两个表单,Login是固定的,不用管他。
我们点击Login发送后,和的值就会传到服务器进行验证,当然验证是错误的,就返回了 or is not ~
Step 2.进行攻击
由于只涉及到和两个变量,我们可以利用BP的模块,进行暴力破解。
右键将 Send to
type = bomb
选中两个变量为和的值,Add高亮。
1 导入字典, 2 导入字典。
其他的不用动了,直接点击!!!
Step.3 获取成果
因为 bomb的攻击模式会对两个字典所有的匹配情况进行遍历,所以结果就是和的积。
总共有450个。
因为验证正确和验证错误的长度一般会不一样,所以直接排序,可以找到正确的用户名和密码。如果凑巧是一样的长度,还可以设置关键字去筛选。
我们找到了3组用户名和密码,admin/,test/,/,这里有个小失误,字典没有去重,所以出现了两个test,不过无伤大雅,成功攻破第一关。
三、验证码绕过(on )Step.1 原理分析
可以看到比上一个模块,多了一个验证码表单,下面还有一个图形验证码。
尝试输入用户名密码和验证码,发现会返回两种提示。
如果是验证码错误,那么会提示:验证码输入错误哦!如果是验证码正确,那么再验证用户名和密码,因为是随便输的,所以返回 or is not ~
我们再抓包看一下。
比上次多提交了一个vcode,服务器返回错误后,验证码更新了。这样就不能像上次一样暴力破解,要想想新的办法。
我们试着把打开看看。
我们截获了一些数据包,分析一下情况。
这个和正常的验证没什么区别,但是我们发现后面又接了一个GET。
这个GET是什么作用呢,我们可以看到他是发给服务器,关闭本次,这样这个验证码就会作废了,页面会重新刷新验证码。
目前BP是截获了这个GET,还没发出去,所以我们可以看到页面的验证码是空白的,并没有刷新。
把这个GET包出去,验证码果然刷新了。
简单猜想一下,如果我们截获GET不发送,服务器没收到关闭会话的包,本次会话一直保持,那么服务器将不会更新验证码,这个验证码在本次会话关闭前一直有效!!!我们可以利用一次会话尝试多次破解。
Step.2 进行攻击
所以这次攻击要开着,不然验证码就更新了。
设置攻击方式和第一次差不多, type = bomb,和的值Add高亮。导入字典。
其他的不用动了,直接点击!!!
Step.3 获取成果
果然,服务器一直保持这个会话直到攻击结束。
成功找到了3组用户名和密码,test/,admin/,/,第二关通过。
三、验证码绕过(on )Step.1 原理分析
可以看到和上一个模块差不多,验证码是灰色的,按一按还会变。
尝试输入用户名密码和验证码,发现验证码错误会弹出窗口提示你。
但是,我们发现,BP并没有抓到包,排除BP可能设置错误的问题,我们发现,不管是点击更新验证码,还是提交错误的验证码,浏览器都不会发送请求给服务器。
只有验证码正确的情况下,才会发送POST到服务器。
服务器没有发送和接受任何数据,但是验证码又验证了,只能说明这个验证码是本地产生和验证的。
尝试页面F12查看源代码,果然找到了一段JS代码。
.php的这段代码,表明验证码是本地生成并验证的。只有验证码对了,才会POST到服务器,所以可以想办法绕过这个验证码。
猜想一下,既然验证码是在本地生成的,服务器并不知道验证码是多少,所以只要我们提交了格式正确的POST,那么服务器就会默认验证码是正确的,从而返回用户名和密码的验证信息。
而且,验证码错误的话,本地页面会阻止我们提交POST,所以我们可以直接用任意验证码的POST包,直接发给服务器,这样就绕过了本地页面的验证机制,服务器就直接被耍了。
Step.2 进行攻击
试试就逝世,随便抓个包,随便填个验证码,ABCDE就挺好的,其他设置照旧。
就是这么随意,!!!
Step.3 获取成果
果然,服务器完全不验证的。
成功找到了3组用户名和密码,test/,admin/,/,第三关通过。
四、token防爆破Step.1 原理分析
简而言之,token其实就是一种用于身份验证的令牌,用了一次就失效了,所以可以防止重复提交POST的暴力破解。
那么,我们看看有没有什么漏洞可以钻吧。
表面上看来平平无奇,和第一个页面差不多,但是没这么简单的。
除了用户名和密码,还提交了一个token,而且看上去很复杂的样子,但是服务器是怎么验证这个token的呢?
我们在服务器返回的里找到了一个token,但是这两个值明显是不同的。服务器为什么会发一个不一样的token回来呢?
我们再试着登录一下,抓个包分析一下。
可以很明显的看到,第二次POST的token,正是第一次服务器发给本地浏览器的token。
所以这个逻辑就很清晰了,服务器每次都会发送一个新的token给本地浏览器,用于下一次登录的token验证,如果不一致,说明这个POST是非法的,会被服务器拒绝。
我们可以用模块验证一下上面的猜想。
重放的结果,只有浏览器看的懂,所以可以Show in 。
果然,提示token错误。如果按照之前的方法,是无法成功验证token的,所以我们可以想一想,如何解决这个问题。
那就是使用BP截获服务器返回的token,然后放在下一次的POST进行攻击,幸好强大的BP有这个功能。
Step.2 进行攻击
攻击模式选择,这次是设置2个不同的,所以Add的顺序一定要注意不要搞乱了(之前的也不要)。
注意用户名和密码要全选上哦。
设置,因为第一个变量包含了用户名密码,中间还有一段多余的&=,所以需要切成三块。
,就是用户名字典,,是固定的&=,就是密码字典。这样第一个就是三个部分的组合。
因为整个字段里有=和&,所以要把这个地方的=和&删掉,不然就都过滤了。
下面这步是关键,里面设置Grep-,点击Add,找到token的位置,刷新一下,把token值选中,然后点OK。下面的要选。另外token的初始值要复制过来。
然后回来设置,选择,刚才抓取的代码就自动过来了,把初始值填在下面,打个勾就行了。
最后 Pool要设置成单线程,只能按顺序一条条提交,不然token就乱了,单线操作还是稳的。因为跑了两个虚拟机,还开了一堆东西,服务器响应比较慢,我直接开到100ms慢慢跑。
先去吃个淄博烧烤,回来看结果。
Step.3 收菜
虽然麻烦了点,但是还是成功破解了token,闯关成功。
五、总结
爆破的几种模式:
攻击模式攻击效果
一个参数不变,另一个遍历字典
ram
两个参数同步遍历一个字典
N(取决于参数有几个)
两个参数同步遍历两个不同的字典
bomb
N(取决于参数有几个)
两个字典的笛卡尔积
网络安全学习路线图(思维导图)
网络安全学习路线图可以是一个有助于你规划学习进程的工具。你可以在思维导图上列出不同的主题和技能,然后按照逻辑顺序逐步学习和掌握它们。这可以帮助你更清晰地了解自己的学习进展和下一步计划。
1. 网络安全视频资料
2. 网络安全笔记/面试题
3. 网安电子书PDF资料
~