分析利用sqlmap和burpsuite绕过csrftoken进行SQL注入原理

作者: 云计算机网 分类: 云安全 发布时间: 2019-03-17 15:10

最新发现:由于测试语句所用的token是有效期的,因此每一次重新测试时需要重新提交新的csrf token,在Macro Editor窗口中点击下“Test Macro”重新录制,复制其中的响应中的csrf token的值到sqlmap的测试语句中即可。

问题: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; www.it165.net

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

摘自:http://www.cnblogs.com/phoenix--/archive/2013/04/12/3016332.html

网站内容禁止违规转载,转载授权联系中国云计算网