本文仅作为技术讨论及分享,严禁用于任何非法用途。
前言
在WEB渗透中经常可以看到页面存在一次性token校验的情况,即请求包中包含token,而token值需通过其它页面获取,导致burpsuite抓包后无法重放。
开始
下面以一个简单例子来做个说明。目标网站如下,页面存在一个图片验证码,题目要求暴力破解得到账号密码。这题可以有多种方式实现,这里以burpsuite宏进行实验。
发现
- 目标URL为:http://1.1.1.1/c/hdyzma/welcome.php,抓个包测试一下,发现其会对token参数校验,拒绝重放的数据包。![]() ![]() 
- 在登陆页面http://1.1.1.1/c/hdyzma/可发现token值:![]() 
- 通过上面的发现,可以使用burpsuite的宏功能自动把登陆页的token值抓取出来填入登陆请求
创建Macros
- 创建Macros,获取token值![]() 
- 在Macro Recorder中选择包含要获取的token的页面![]() 
- 配置Macros![]() ![]() 
 用鼠标选中token值,burpsuite会自动填写开始标记以及结束标记,并且写上Parameter name为token,注意这里的参数名token是与要爆破页面里的token名称一致:![]() 
 定义Macro描述,方便区分:![]() 
创建Session Handling Rules
- 然后在Session Handling Rules里面新建一条规则: ![]() 
 设置一个名字,这里叫- update_token:![]() 
 选中刚刚录制好的宏,并且设置要更新的参数名,这里是- token:![]() 
- 然后是设置宏的影响范围,因为我们只需要暴力破解账号密码,所以 - Tools Scope这里只选中- Repeater、- Intruder就行了,其它模块可根据实际需要勾选:![]() 
暴力破解
- 回到Repeater,点击Go重新发包,可以看到现在token参数会自动刷新:![]() ![]() 
- 使用Intruder暴力破解账号密码:![]() 
 因为多线程会同时刷新token,导致部分请求包拿到的token已经被刷新了,所以只能设置单线程跑:![]() 
 成功暴破得到账号admin/123456a![]() 
题目源码
源码来自3sNwgeek,附上题目:https://github.com/3sNwgeek/BruteForc_test

















