burpsuite 集成 sqlmap 插件
0x00:前言
之前测试 sql 注入的时候很多平台中的很多查询功能都类似,于是通常就只测第一个功能,如果有问题,报告中就加一句类似此功能请逐一检查并修复。如果没问题,就直接过了。
那么这样测合适么,答案是否定的。一个系统不可能是一个人开发的,多人开发就可能会出现第一个没问题,第二个类似功能却有问题了。那么,逐一测么,这个问题不讨论,看情况。
通常怎么测的呢,burp 拦截包后,在 sqlmap 目录下新建一个文本文档叫个 1.txt,然后复制进去 sqlmap -r 跑一下,后来,需要测的多了,我就开始再建一个 2.txt,然后再开一个 sqlmap 跑,这个方法不知道有多少人试过,感觉很繁琐。
后来为了找一个方便的插件,我就去 burp 的插件市场下载了一个 sqlipy 的插件,当是我点 scan 扫描的时候一直扫不出结果,后来就放弃了。换了一个 Co2 的插件,用 owasp 测试的,有一个注入类型没有检测到,调用 sqlmap 理论不应该的,后来就又放弃了。于是就又试 sqlmap 插件,后来能用,就留下了,burp 中直接右键 send to sqlmap 就行,也挺方便,如果有好插件推荐欢迎留言讨论。
0x01:使用
首先下载 python 然后配置环境变量,需要用 python2,3 不支持 sqlmap,那么有必要卸载 3 装 2 么,没有。你可以两个都装上。
其次下载 sqlmap 配置环境变量,确保 burp 调用 sqlmap 能成功调用。
最后去下载 sqlmap.jar,github 的地址是 https://github.com/difcareer/sqlmap4burp, 不过下载下来的是 source,需要编译成 jar 文件,如果嫌麻烦,可以去搜现成的直接用。
随后导入 burp 中,位置是:extender-extensions-add - 选择 sqlmap.jar 即可,如下图:
然后就会多出来 sqlmap 一栏,点开后只有一个框,这个是添加 sqlmap 参数的,这个后面说。导入后随便拦截一个数据包,然后右键会有一个 send to sqlmap 选项,点击后会直接调用 sqlmap 进行扫描。
原理是会在临时目录下创建一个临时文本文件,然后把数据包存到了这个文本文件中,扫描时 - r 后面跟的就是这个文本文件,如下图:
随后会调用 cmd 去执行 sqlmap.py -r 文本文件这个命令,如下图:
文件是以 req 结尾了,这个是没问题的,可以扫描,查看的时候直接选择一些代码编辑器都能打开。那这个临时文件扫完后会被删除么,答案是不会,所以定期清理这个目录, 其中 AppData 是隐藏文件夹,需要显示一下才能查看。
0x02:拓展
先说一下碰到的问题,sqlmap 加入环境变量中后,cmd 下 sqlmap.py 是可以正常运行的,burp send to sqlmap 就不行了,会提示没有找到这个命令不是内部程序。
解决办法是把系统中的 python 环境变量和 sqlmap 环境变量同样在 administrator 中设置一份,如下图:
设置往后重启生效。为什么系统环境变量没有生效而 administrator 生效了,可以理解成 burp 调用 sqlmap 和 python 时,用的是当前用户 administrator 的环境变量而不是系统的。
再说一下 sqlmap 插件之前说到的那个框,你会发现 sqlmap 插件执行的是一个基本的命令只有一个 - r 参数,如果有特殊需求怎么办,例如 - level 5,这时候打开这个框输入 - level 5 然后保存就可以了,再次运行插件的时候这个参数就会加上,如下图:
最后,再说一**入复测时的问题,当一个注入点被测出来后,开发去修改,改好后再复测依然存在,可是开发修了,参数化查询了,特殊符号也过滤了,那么可能就是缓存的问题,怎么判断?
没有扫描过程,直接输出注入点 payload 就是缓存,sqlmap 扫描时会先去自己的扫描记录里过一遍,有记录的话就会直接出记录的结果,这个目录在 C:UsersAdministrator.sqlmapoutput 中,里面都是以文件夹方式存放的之前的扫描项目,删除即可。或者用参数 --purge-output,清除所有的记录。
0x03:总结
虽然说常规的跨站注入等漏洞没以前多了,但是现在依然不少,能导致注入的原因也有很多,有时候查询参数多了,即使有经验的开发也会有参数遗漏,所以 sql 注入依然没有老,尽管没有当初年轻了。
更多关于代码审计、WEB渗透、网络安全的运维的知识,请关注微信公众号:发哥微课堂。