使用Burp Suite爆破Web应用密码
0X01 背景
Burp Suite是一款非常优秀的针对Web应用的攻击平台,网上的教程也比较多,甚至在淘宝还有收费教程。由于Burp
Suite功能强大,可实现多种web攻击,我总感觉网上现有的教程过于复杂,对于新手不那么容易理解。所以我决定自己写一点东西,结合原理,简单介绍
Burp Suite的基础功能。
这篇来谈使用Burp Suite爆破密码,截图来自真实环境的一次实验,为避免麻烦,敏感信息已模糊处理。后面我会把相关漏洞通过正规渠道通知责任方。
声明:只用于技术交流,严禁用于非法行为和破坏行为。
0X02 基础
Burp Suite可以简单理解为,架设在攻击者浏览器和目标Web应用之间的一台代理服务器,所有流经二者之间的http数据均通过Burp
Suite转发。因此,Burp Suite可拦截、修改、重新发送所有这些数据,以达到攻击目的。因此,安装好Burp
Suite之后,在软件的Proxy标签?Options标签下,可以看到代理设置:127.0.0.1:8080。攻击者需要在自己的IE浏览器中将此
设置为代理服务器。
安装Burp Suite过程和如何设置代理服务器不属于本文讨论范围,有问题问google。
0X03 踩点
想使用Burp Suite攻击,首先需要让Burp Suite认识目标。
设置好IE的代理服务器之后,此时浏览器所有数据包都流经Burp Suite。我们先访问一次目标应用。这次选取的是某企业的邮件系统。
在IE中访问https://mail.AAA.com,发现浏览器并未加载任何内容,同时,在Burp Suite界面中,Proxy标签和Intercept标签成了黄色,提醒攻击者,这里有新的数据。
Burp Suite默认是拦截所有数据包等待攻击者修改后才发送给web服务器的,所以,我们点开Intercept标签,点“forward”按钮,通过数据包。这时,IE才正常加载了邮件系统登陆页面。
我们输入需要爆破的用户名,和一个随意的密码,点登录。这时,Burp Suite的Proxy标签?Intercept标签再次变黄,提醒拦截到了数据。仍旧点Forward,通过这些数据包。此时,IE里面,系统提示登录失败,用户名密码错误。
完整的“踩点”,就完成了。回顾过程,我们访问了一次目标系统,进行了一次登录操作,向web系统提交了一个POST包,包含有待爆破的用户名和一
个错误的密码。而Web系统校验了这次登录行为,返回了登录失败的信息。所有这些数据,都已经被Burp Suite拦截和记录了下来,如下图:
在这个界面,可清晰看到我们向服务器提交的POST包的具体内容,红色框内就是我们提交的用户名liuzXXXhao和那个错误的密码1。
0X04 爆破
现在是来真格的时候啦。
首先,我们在这个post包上点右键,选send to Intruder
我们来到Intruder标签?positions标签下,看到发送过来的详细内容,所有动态的参数都被用黄色显示且前后加有$符号。
我们这次攻击是已知用户名,来爆破密码,所以,我们通过点击右边的“clear$”按钮,把除了$password$以外的参数都移除掉。
我们再来到payload标签下,点击“Load…”按钮,加载攻击payload:我们的字典文件。
加载完成后就是上面图中的样子了,字典是我自己搜集的大陆网民常用的一百多个弱口令。如果想加快爆破速度,可以在options标签里修改线程数。默认是5个线程。
现在就可以爆破啦。点最上面的“Intruder”按钮,点“Start attack”即可。
爆破过程如果所示:
字典里111个密码挨个试,下面进度条很快就走完了,大概耗时几十秒。
全部跑完以后,如何找到爆出来的真实密码呢?我们在结果界面中仔细看,正确的密码登录后web服务器返回的包长度和错误的密码返回的包长度肯定是不一样的,找到他,那就是最终结果!
看到了吗?那个Length为430的,就是最终结果。亲测有效。不再截图。
0X05 尾声
简单回顾攻击过程:
使用浏览器访问一次目标系统并登陆一次?-Burp Suite截取并记录了数据?-找到post包发送给攻击模块?-修改需要攻击的参数??加载字典?-开始爆破?-通过区别于其他Length,找到最终密码。
需要说明的是,能实现这种爆破是有前提的:
1.登录界面没有验证码。
2.登录过程没有错误三次后XX分钟内不可登录的限制。
3.你需要知道用户名。
但是,不要以为有这种限制,这种爆破的成功率就很低,根据我的经验,目前国内很多企业、政府的web系统都是公网可访问且没有验证码限制、没有登录错误次数限制的,你只需要通过一点点社工知晓了用户名,再准备一个足够强大的字典即可,爆破成功只是时间问题。
防御方面:
1.重要web系统不要对公网公开访问,最起码要限制登录IP,或者,做登录准入,比如加域。
2.加个验证码不复杂,做错误登录次数限制也不复杂,程序员们别偷懒。
3.密码还是复杂一点吧,什么123321、qazwsx之类的密码还是不要用了。
爆破这种密码,还可以使用Hydra,但Hydra需要比较复杂的命令参数,需要对post数据比较熟悉,成功率似乎也低一点。Burp Suite更强大,爆破密码只是很基础的功能之一,更强大功能有待进一步学习。
最后再次声明,本文只用来技术交流,严禁用于非法行为。所有漏洞我会在合适的时候以正规渠道通知对方。