暴力破解
概念
Burte Force(暴力破解)
又名暴力攻击、暴力猜解,从数学和逻辑学的角度,它属于枚举法在现实场景的运用,是利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏的进行检验,从中找出符合要求的答案,因此枚举法是通过牺牲时间来换取答案的全面性。
准备工作
- phpStudy
这个直接去官网下载就完了,CSDN上很多博客…
可能发生的问题:
mysql启动不起来:
这种情况下可能是mysql的端口被占用, 使用管理员权限进入cmd后,输入:sc delete mysql 命令后,删除原本配置的mysql,再次尝试即可。 - DVWA:
全称为Damn Vulnerable Web Application,意为存在糟糕漏洞的web应用。它是一个基于PHP/MySQL开发的存在糟糕漏洞的web应用,旨在为专业的安全人员提供一个合法的环境,来测试他们的工具和技能。
- 下载下来相应安装包解压后,将其放入phpstudy的www目录下即可。
- win+R 输入cmd,进入DOS页面,使用ipconfig命令,查看本机ip地址,然后使用ip地址在浏览器上登录,即可进入DVWA登录页面,用户名为admin,密码为password
- 首次登录,需要进行安装
- Burp Suite
是一个用于攻击web应用程序的集成化的渗透测试工具,它集合了多种渗透测试组件,能够使我们更好的完成对web应用的渗透测试和攻击。目前刚接触的原因,只用到了Proxy和Intrude模块,用于抓包及爆破。
后面暴力破解内容会讲到该工具使用。
进入正题
- 进入DVWA的Brute Force(暴力破解)模块,开始之前,先将难度调为Low(小白起步等级。。)
- 调等级
- 选择Brute Force
- 暴力破解应用场景最多的为管理员登录场景,而常见的管理员主要包括admin,System,Manager,Root,Test等用户名,所以可以使用这些用户名去尝试破解密码;
- 破解密码之前,需要设置代理服务器
- 设置手动代理,与Burp suite中的Proxy模块下的Options选项卡中服务器地址一致即可
- 使用Burp Suite 进行抓包
- 使用admin作为用户名,随便输入一个密码,开启Burp Suite,点击登录,进行抓包
- 抓包成功,可以看到登录时的用户名及密码
- Ctrl+I或者右击选择Send to Intruder,将抓到的包发送到Intruder
可以看到已经将包的信息发送到了Intruder,并且将所有变量进行选中,首先我们需要点击Clear按钮将所有变量选择清除,然后选中需要攻击的变量,点击ADD按钮进行添加。此处我们只需对password进行爆破,所以只选中password这一变量即可。
- 选择Payloads标签,点击Load按钮,导入常用密码字典后,点击Start attack进行爆破
- 完成后,可根据返回Length长度判断正确密码
- 取到疑是正确密码后,就可以去尝试登录了(登录前记得关掉手动代理)
- 还有一种情况就是用户名和密码均无法确认的情况,那就需要对两个变量进行爆破,就需要更改以下攻击模式,首先看下都有哪几个攻击模式,并看下都各自含义及应用场景吧
- 共四种代理模式,分别为Sniper,Battering ram,Pitchfork,Cluster bomb
- Sniper(狙击手模式)
默认的攻击模式,这个模式会使用你导入的payload(即导入的字典)去匹配你position中设置的变量,这种攻击模式适用于对常见漏洞中的请求参数单独进行测试,只能导入一个字典。攻击的总数为position中设置爆破变量的个数乘以payload的数量。(适用于对单个参数进行爆破) - Battering ram(攻城锤模式)
该模式与Sniper模式一样也是只使用一组payload,当选中多个position变量时,会重复payload并且一次把所有相同的payload放入指定位置中,即多个位置的值一样;请求的总数即payload字典中的数量。(适用于需要爆破的多个位置值相等的情况) - Pitch fork(草叉模式)
这一模式与上面两个模式不相同的点在于可以使用多个payload组,对于position不同位置变量可以使用不同的payload组,攻击会同步迭代所有的payload组;例如:position中选择两个位置,分别为A和B,A处导入a字典,B处导入b字典,则a[1]会与b[1]进行匹配并进行attack处理。请求数量为最小的payload组中的字典数量。(适用于在不同位置中需要插入不同但相关的输入的情况) - Cluster bomb(集束炸弹模式)
与草叉模式一样,该模式也可使用多个payload组,每个position位置上均可使用不同的payload组。攻击会迭代每个payload组,各个payload的组的每种组合都会被尝试;例如:position中选择A,B两个位置,A位置导入a字典,B位置导入b字典,则两个字典会循环搭配进行attack处理,即a[1]会与b[1],b[2]搭配进行处理,a[2]还是会与b[1]b[2]进行搭配处理;攻击请求的总数是各payload组中数量的乘积。(适用于攻击位置需要不同且不相关或者未知的输入攻击)
注:该攻击模式所耗时间成本非常之高。。。
- 看完上述攻击模式,相信大家已经知道如何选择了,只要你不怕等,那就闭眼入Cluster bomb即可
防范措施
- 设置带有干扰的验证码(比如验证码上加个横线啥的)
- 设置登录次数,比如超过几次就多长时间内不允许登录
- 多次登录失败后,锁定IP地址
- 注册时,规定密码的复杂度