【安全】【测试思路】基于Burpsuite工具中的intruder执行暴力破解
基于Burpsuite工具中的intruder执行暴力破解测试工具序号工具版本备注1JDK环境1.7及以上burpsuite工具运行所需2Burpsuite1.4及以上请根据个人情况,选择Community或Professional版本常规暴力破解 对于一般或中小型项目软件来说,用户进行登录操作时,发送的鉴权请求可能只有一条,即:以用户账号、...
测试工具
序号 | 工具 | 版本 | 备注 |
---|---|---|---|
1 | JDK环境 | 1.7及以上 | burpsuite工具运行所需 |
2 | Burpsuite | 1.4及以上 | 请根据个人情况,选择Community或Professional版本 |
3 | DVWA | 当前最新是1.9 | 集成多种渗透测试工具,可根据测试场景,调整应用程序的安全等级,环境部署参考点击此处 |
常规暴力破解
对于一般或中小型项目软件来说,用户进行登录操作时,发送的鉴权请求可能只有一条,以用户账号、密码、验证码(若有)作为入参,发送给服务器进行验证,根据鉴权结果返回登录失败或成功。此类登录请求,只需在intruder中选取请求中的密码参数作为载荷标记,配置好对应的载荷内容,即可执行破解操作。
测试流程
-
拦截登录请求,并发送到intruder中。
-
选择攻击类型。
Attack type (类型) | Payload set (载荷集) | 描述 | 适用场景 |
---|---|---|---|
Sniper | 最多1个 | 单位置单遍历,即所有载荷标记使用同一个载荷集,每次攻击只替换一个载荷标记。攻击总数=载荷标记数量 * 载荷集清单数量 | 只有一个位置需要替换,或者多个位置依次替换 |
Battering ram | 最多1个 | 多位置同时遍历,即所有载荷标记使用同一个载荷集,且每次攻击会同时替换所有载荷标记。 攻击总数=载荷集清单数量 | 存在多个位置需要替换,且多个位置被替换内容需要同时一致 |
Pitchfork | 至少2个 | 各个载荷标记使用对应的载荷集,每次同时取载荷集中的第N个元素替换对应的标记。攻击总数=所有载荷集清单最少数量 | 2个以上位置同时被替换,被替换的内容存在一一对应关系 |
Cluster bomb | 至少2个 | 集束爆破,攻击总数等于所有载荷集清单数量的笛卡尔积。 | 2个以上位置同时被替换,被替换的内容无需存在对应关系,可自由组合。 |
-
选取载荷标记。
add:手动选取一个载荷标记位置,以成对的§符号标记起来。
clear:清除所有的载荷标记位置。
auto:工具自动选取需要被替换的标记位置。
refresh:刷新编辑器中的内容,使之语法高亮。
-
添加载荷内容。
paste:从系统粘贴板中获取数据,点击paste按钮添加。
load:选择并读取本地文件,每一行作为一条数据。
remove:移除所选数据。
clear:清除所有数据。
add:单个数据添加。
add from list:从工具自带的数据列表中添加。
-
执行破解,查看破解请求。
点击Start attack按钮,即可开始破解(为了提高破解几率,可先在options中将线程数设置为1)。
从图中可发现,在执行第86次替换时,返回的长度length比其他的要少;再通过查看该攻击请求的返回报文,发现该请求已经正确返回了登录后的网页源码;与此同时,在所有的攻击请求中,没有一条返回“账号被锁定”或“IP地址被锁定”的错误信息(具体返回内容,请根据项目实际情况判断)。
故由此得出,该系统的登录模块,未做任何防暴力破解的措施,极易被破解出密码。
特殊登录请求暴力破解
在接触到的某些大型项目中,为了进一步提高项目的安全防护,可能会在登录验证请求之前,先向服务器发送一条获取随机值的请求,服务器返回随机值后,登录验证请求会携带此随机值,连同登录用户账号、密码、验证码(若有),一同发送给服务器进行鉴权验证,并且此随机值长度一般可达到32位或以上,同时可能存在时间限制,以此来达到双重保障安全登录及长时间未登录销毁登录会话的目的。
模拟登录流程如下:
如果此时咱们使用上述的常规暴力破解方式,未将登录随机值放入登录请求中,服务器一般会返回“登录会话失效”或者“登录随机值已过期”等等消息,而此类测试结果并不能作为项目存在防暴力破解机制的依据。
因此,咱们可以使用到burpsuite工具中自带的宏录制的功能,将获取随机值的请求录制成宏,然后再将宏命令应用到intruder功能中,便可让登录请求入参携带由服务器返回的随机值,达到“欺骗”服务器正常登录的目的。
测试流程
大体流程与常规破解一致,区别在于前期的配置宏命令(步骤4~10)。
-
以DVWA程序中的Brute Force为例,输入username和password,点击Login按钮,触发一次登录请求。
-
在burpsuite中可看出,登录请求中的参数,不仅包含了用户名、密码,还包含了一条user_token,并且是随机的。
-
登录失败后,在获取新页面的返回报文中,可看到新生成了一条user_token。
-
进入Project options->Sessions->Marcos中,点击Add新增一条Marco。
-
在Macro Editior界面中,点击Record macro按钮,在弹出的窗口中,选择那条获取登录随机值的请求,点击OK。
-
在Macro Editior界面中,输入Macro description,在Macro items中选择上述保存的请求,点击Configure item按钮进入Configure Macro Item界面。
-
点击Add按钮,在弹出的Define Custom Paramter界面中,选择那串user_token随机值,工具将自动填写随机值的起止位置表达式,记录下来备用。点击OK按钮保存,回到工具主界面。
-
在Project options的Session Handling Rules中,新增一条规则。在弹出的Session handling rule editor窗口中,取一个规则的名字,在Rule Actions中点击Add,选择Run a macro。
-
在Session handling action editor中,自动填上了第1~4步配置的macro,选中即可,下面的选项保持默认。点击OK按钮保存。
-
返回到Session handling rule editor窗口,切换到Scope页签。确保规则应用的工具包含Intruder,URL Scope中选择“Include all URLs”选项。点击OK按钮以保存。
-
至此,宏命令的配置就完成了,接下来的intruder配置和执行破解操作,与常规暴力破解的步骤类似,不再赘述。
-
验证:
a. 在发起的Intruder中,可看到每一次发起的破解请求中,其携带的user_token都是不同的,且有效(如果随机值无效会返回HTTP302 Not Found)。
b. 返回报文中,可看到返回的消息是账号或密码不正确,且smithy账号由于尝试登录错误次数过多,已被锁定了。
更多推荐
所有评论(0)