转载请注明来源:http://www.cnblogs.com/phoenix--/archive/2013/04/12/3016332.html
问题:post方式的注入验证时遇到了csrf token的阻止,原因是csrf是一次性的,失效导致无法测试。
解决方案:Sqlmap配合burpsuite,以下为详细过程,参照国外牛人的blog(不过老外讲的不是很细致,不适合我等小白)。
(英文好的可以直接看:http://labs.asteriskinfosec.com.au/fuzzing-and-sqlmap-inside-csrf-protected-locations-part-2/):
1、打开burpsuite(以1.5为例),设置好本地代理并设置为off状态;
2、burpsuite的option选项中提供了Sessions(会话录制、分析和处理的功能)。(几乎没看到网上介绍过,所以从没有用过。。。)
3、打开option选项卡中的Sessions,添加处理规则并命名:“Add”rules description添加处理动作:rule actions,我测试遇到的是post请求,故选择“Run a post-request macro”;
4、设置scope,点击scope选项卡,只选中Tool Scope中的Proxy(use with caution),设置URL Scope,将需要拦截的请求页面地址粘贴至其中;
5、录制会话:Add macro,打开了Macro Recorder,点击“Record macro”,此时在浏览器中打开疑似存在注入的页面并提交post请求,此时在Macro Recorder中可以看到请求页面和提交请求的url及自动探测出的参数;
6、按ctrl键分别选中需要的请求,然后点击OK,将其添加到Macro Editor中;
7、选中Get请求并Configure item打开配置界面,手动添加response中的参数(csrf token)并点OK;
7、选中Post请求并Configure item打开配置界面,将csrf token的值设为Response1,及Get请求的相应中选中的参数;
8、一路点击OK,就配置好了;
9、运行sqlmap,输入正常注入语句,增加代理选项--proxy="http://127.0.0.1:8080"后执行;
10、可以在burpsuite中的的proxy选项卡中的history项中看到注入执行过程,如果页面响应都正确,则说明以上配置有效且成功。
解决过程中有几个问题记录下:
1、谷歌 搜索关键词:sqlmap CSRF protection bypass,参考了一些资料,介绍说sqlmap可以识别一些csrf token然后处理,不过测试时候没有发现;
2、之后才看到有一个人利用burpsuite进行处理的方法(上述的英文链接);
3、你懂的,看懂英文和理解起来还是有些差距的,加上作者没有非常详细的介绍,我自己测试很久都不行。最后才发现不需要关注同样变化的cookie,只需要关注csrf token即可,因为burpsuite自带的cookie jar 可以处理变化的cookie。