优化SQLMAP的批量测试功能


发布人:admin分类:网络安全浏览量:25发布时间:2017-12-12

0×01 背景

做为一只甲方安全汪,平时工作很多系内部业务复杂,查询功能较多,此时任意功能都可能存在注入点。使用自动化扫描工具awvs,可以通过爬虫爬完所有页面,但现在很多的请求写在ajax里,对于在ajax交互这一块awvs并不能很好的支持经常漏测;手工测试时间紧,容易纰漏。

此时需要Burp Suite把所有的请求都记得到history记录里,再使用其他工具提取history记录并自动帮你分析问题所在。

0×02 过程

之前,有其他安全工作者自己开发proxy+sqlmapapi的方式批量检测(http://www.freebuf.com/tools/74445.html),小哥我最近偶尔也在看sqlmap源代码(为什么说偶尔?做为一只甲方安全汪,杂事太多T_T),这次给大家带来的方式是通过sqlmap提取history记录实现批量sql检测。

讲到这里,可能你会吐嘈“sqlmap里不是有个-r或-l参数提取burp的history记录批量检测么?搞毛毛啊!”……先听我讲sqlmap源代码有个小bug,导致不能全量检测会漏掉一些URL和参数

具体源代码如下:lib/core/option.py中_parseBurpLog()模块代码第366行,如下图:

当kb.targets不为空或url不在addedTargetUrls里时就添加检测队列,这会导致什么问题呢?

例如:

#1:

post /1.php
a=ok&b=ok

#2:

post /1.php
a=ok&c=inject

两个url相同#1的参数不存在注入,#2的c参数存在注入。但sqlmap在批量提取url时由于两个url相同,所以只取了#1,而#2因为url跟#1的url一样,所以没添加到检测队列里。就这样我们的sqlmap就漏测#2存在注入的c参数了(真实被坑过)。

基于以上原因,我决定对sqlmap加入检测队列算法进行修造,加入检测队列在url的基础上加入data的key做为判断条件(url+key),这样相同url而key不同请求history记录sqlmap也不漏测

首先,把data里的Key提取出来,并对key进行一次按字符顺序排序,然后跟url组合是否加入检测队列的判断条件。

具体实现代码如下:

if not(conf.scope and not re.search(conf.scope, url, re.I)):
            #处理data参数,把key提取出来,key值做为判断重复的条件之一
            a = data
            b = a.split('&')
            #print b
            c = []
            for i in b:
                if i.find('=') > 0:
                    arr = i.split('=')
                    c.append(arr[0])
            #print c
            #提取的key使用sorted按字符顺序排序一把,再组合成字符串。(如果数据庞大的话,建议把keystr转成hash值)
            keystr = "%s%s"%(url,''.join(sorted(c)))
            #if not kb.targets or url not in addedTargetUrls:
            if not kb.targets or keystr not in addedTargetUrls:
                kb.targets.add((url, method, data, cookie, tuple(headers)))
                #addedTargetUrls.add(url)
                addedTargetUrls.add(keystr)

0×03 优化效果

测试数据:

优化前:

优化后:

0×04 后话

sqlmap真的很强大,大家可以熟读sqlmap源代码做二次开发,加入新功能比如检测XXE,LIF,RCE等功能,让sqlmap功能变得更强大。好了,本篇文章到此结束,很感谢大家很有耐心的看完本篇文章。如果有什么好玩的点子,想法也希望大家一起交流、学习、进步,谢谢。


被黑站点统计 - 文章版权1、本主题所有言论和图片纯属会员个人意见,与本文章立场无关
2、本站所有主题由该文章作者发表,该文章作者与被黑站点统计享有文章相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和被黑站点统计的同意
4、文章作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、被黑站点统计管理员有权不事先通知发贴者而删除本文

免责声明

本站主要通过网络搜集国内被黑网站信息,统计分析数据,为部署安全型网络提供强有力的依据.本站所有工作人员均不参与黑站,挂马或赢利性行为,所有数据均为网民提供,提交者不一定是黑站人,所有提交采取不记名,先提交先审核的方式,如有任何疑问请及时与我们联系.

admin  的文章


微信公众号

微信公众号


Copyright © 2012-2022被黑网站统计系统All Rights Reserved
页面总访问量:21452606(PV) 页面执行时间:109.232(MS)
  • xml
  • 网站地图