burpsuite设置宏绕过csrf token
为了防止csrf和表单重复提交,有些系统使用了Token机制,具体机制可自行研究,这对我们的个别测试造成了一定的不便。
解决思路:
1、将获取token的操作设置为宏,自动完成每次重新获取token的操作(最为省时,但比较麻烦)
2、测试阶段让开发将token设为一个定值(最为方便)
3、全部测试均使用proxy模块(最为简单,但最为耗时,且无法完成高级自动化测试功能)
针对思路1,百度了一下,发现答案同质化严重,基本均参考外国博客:
https://labs.asteriskinfosec.com.au/fuzzing-and-sqlmap-inside-csrf-protected-locations-part-1/
实际试了下,发现还是英文原版的看的明白,中文的写的都太简略
如下为burpsuite绕过token的方法:
1、进入options选项、选择sessions
2、添加一个session handing rules,在弹出的session handing rules editor中输入rule的名字,并添加一个action
3、在点击Add弹出的菜单中选择run a macro(设置一个宏)
4、之后选择添加一个宏(点击Add)
5、此时会弹出两个页面:macro recorder和macro editor
首先看macro recorder页面,使用方式和proxy模块中http history一样
具体操作方式(以最简单的登录为例):
(1)设置好浏览器,关闭burpsuite的拦截器
(2)清掉之前的请求记录,开启一个新的浏览器(防止之前请求的影响)
(3)访问登录页面,此时可以看到响应中有_csrf参数,目的达到
(4)ctrl选中刚才的get请求,点击OK
6、此时macro recorder页面会关闭,进入macro editor页面
可以在此页面测试宏(对于比较复杂的宏)
7、点击OK,回到action editor界面,选择只替换token参数
8、回到rule editor界面,选择scope页,选择此宏的作用域
9、如下我们就绕过了登陆页面的token,即可以拿一个请求重复发送,每次重新登陆获取token的步骤burpsuite自动帮我们做了。
在intruder里验证,好的,我们发现我们可以对密码进行爆破了~
但是实际使用中遇到了一些问题:
如果token不是位于参数里而是位于header里,即X-CSRF-TOKEN,目前无法替换,不知道可有好的方法。