在渗透测试时,为了获取登录凭据有时需要使用Intruder进行暴力破解,但如果登录请求中包含CSRF token或特定的cookie等动态变化的数值就不太好办了。本文章就是专门讲述怎么解决此类问题的。
下面以实例展现整个过程。
首先捕获请求并查看响应。以下是响应的示例
![](https://img.haomeiwen.com/i11594169/19c6b39b30a3c908.png)
在此响应中,我们注意到除了username和password字段之外,现在还有一个session,以及表单中作为hidden字段的CSRF token(名为loginToken)。刷新页面会发现session 和loginToken都会随着每个请求而更改。每次提交登录的POST请求时,需要附加上次GET请求获取的session和loginToken。
![](https://img.haomeiwen.com/i11594169/9a365d2693f40cfa.png)
这意味着对于每次登录尝试,我们都需要提取cookie中的session和 loginToken 的有效值。
为了实现这一点,我们将使用Burp Macros来定义在每个请求之前执行的一组重复操作(宏)。该宏将提取session和loginToken的数值,并在我们攻击的每个后续请求中替换它们。
首先,我们调用Intruder,设置Attack Type为Pitchfork,在Payloads选项卡加载我们获知的username和password的字典文件。
![](https://img.haomeiwen.com/i11594169/e5a06cc9ce506cfe.png)
到目前为止,我们以与之前的撞库攻击几乎相同的方式配置了Intruder,下面就是事情变得更加复杂的地方。我们现在需要找到一种方法来获取不断变化的loginToken和名为session的cookie。下面演示怎样使用Burp Macro实现。
》切换到 Burp 右上角的Settings选项卡。
![](https://img.haomeiwen.com/i11594169/94ef70a3a1be2797.png)
》单击Sessions,向下滚动到底部的Macros部分,然后单击Add按钮
![](https://img.haomeiwen.com/i11594169/075cb987efc3b106.png)
》弹出的菜单将向我们显示所有的请求历史记录,选择导航到http://10.10.26.46/admin/login/的GET请求,单击OK按钮
![](https://img.haomeiwen.com/i11594169/082f77ae1d6d5439.png)
》最后,为宏指定一个名称,譬如Grab CSRF。然后再次单击OK
![](https://img.haomeiwen.com/i11594169/1dc22483c3e08a68.png)
现在我们已经定义了宏,需要设置会话处理规则来定义如何使用宏。
》仍然在Sessions窗口,向上滚动到Session handling rules部分,然后单击Add按钮,添加新规则。
![](https://img.haomeiwen.com/i11594169/fbb3019bbe71d979.png)
》在新弹出的窗口中,有两个选项卡:Details、Scope。默认情况下,我们位于Details选项卡。填写适当的描述,譬如Rule 1,然后切换到Scope选项卡。
![](https://img.haomeiwen.com/i11594169/5fbade2fa8429923.png)
》在Tools scope部分,仅选择Intruder。因为我们不需要将此规则应用到其他地方。在URL scope部分,选择Use custom scope,并添加http://10.10.26.46/到此范围
![](https://img.haomeiwen.com/i11594169/32a74eb60a919649.png)
》现在我们切换到Details选项卡,并查看Rule actions部分。单击Add按钮,将出现下拉菜单
![](https://img.haomeiwen.com/i11594169/01cc36ac6a7ca4f0.png)
》从列表中选择Run a macro
![](https://img.haomeiwen.com/i11594169/26b91de7ffb39f61.png)
》在出现的新窗口中,选择之前创建的宏Grab CSRF。
现在,这个宏将在我们发送Intruder请求之前覆盖所有参数。这意味着我们需要将loginToken和名为session的cookie直接添加到我们的请求中。也就是说,我们要在开始攻击前说明需要更新哪些参数和cookie。
》选择Update only the following parameters and headers,然后单击输入框旁边的Edit按钮
![](https://img.haomeiwen.com/i11594169/cbb766d1de06fd21.png)
》在文本框输入loginToken,单击Add按钮,再按Close按钮
![](https://img.haomeiwen.com/i11594169/2e43991b62aa32ab.png)
》选择Update only the following cookies,然后单击Edit按钮
![](https://img.haomeiwen.com/i11594169/986d4d45ccbf5558.png)
》在文本框输入session,按Add按钮,然后按Close按钮。
![](https://img.haomeiwen.com/i11594169/e6c039e21216dded.png)
》最后按OK,确认上述操作。
![](https://img.haomeiwen.com/i11594169/94a1ad7f549ab244.png)
![](https://img.haomeiwen.com/i11594169/f7027b3db5fe21e3.png)
现在已定义了一个宏,它将替换CSRF令牌和名为session的cookie,剩下要做的就是切换回Intruder并开始Attack。然后按长度排序,以找到有效的登录凭据。
![](https://img.haomeiwen.com/i11594169/e52640d541500b6c.png)
网友评论