使用Burp和sqlmap进行自动化sql注入

Tips:
本文主要用于sql注入攻击自查,请不要做犯法的事情。

之前已经讲过如何用Burp和Sqlmap配合进行sql注入攻击,但是使用起来特别麻烦,对有大量接口调用的项目如何自动化的进行检测便变得重要,本篇注重介绍如何使用Burp以及sqlmap的批量注入来完成自动化注入攻击。

整体流程为:

  1. 使用BurpSuite保存request记录log
  2. 因为BurpSuite的日志记录了所有走代理的流量,包括静态资源啊,重复的提交啊,这些都会影响SqlMap的分析效率,所以对Request日志进行过滤。
  3. 对过滤后的日志文件进行批量注入攻击。
使用BurpSuite保存request记录log

使用的BurpSuite版本为1.7.26进行的操作,各个版本有可能不一样,请注意。

勾选BurpSuite输出日志

输入要保存为的文件名称

对日志进行过滤

强大的SqlMap支持使用BurpSuite的日志进行批量分析,但是BurpSuite的日志记录了所有走代理的流量,包括静态资源啊,重复的提交啊,这些都会影响SqlMap的分析效率,所以需要对访问日志进行过滤,只筛选出我们需要的。

使用burplogfilter.py过滤日志,点击下载
介绍:

1
2
3
4
5
6
7
8
9
10
Usage: python3 burplogfilter.py [options]

Options:
-h Show this showHelp
-f filepath The BurpSuite log to analyze
--host keyword, --host=keyword Host name filter
-v Show debug message

Examples:
python3 burplogfilter.py -f /tmp/burp.log --host='google.com' > burp-proxy.log

参考本文BurpSuite日志分析过滤工具,加快SqlMap进行批量扫描的速度
git地址
使用:

1
2
python3 burplogfilter.py -f ~/temp/burp/sql_map_log --host=xxxx >  ~/temp/burp/sql_map_log_proxy
# 保存过滤日志到新的文件

在使用burplogfilter过程中,发现报以下错误“TypeError: cannot use a string pattern on a bytes-like object”

修改burplogfilter.py以下位置即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def scrapBlocks(filename):
global DEBUG

if DEBUG:
print("Try to anayze file %s"%filename)

blocks=None
with open(filename, 'rb') as f:
content=f.read()
content = content.decode('ISO-8859-1') #添加这句话
blocks = re.findall(r'======================================================'
r'.*?======================================================'
r'.*?======================================================', content, re.S)
if DEBUG:
print("The file contains %s block(s)"%len(blocks))

return blocks

对过滤后的日志文件进行批量注入攻击

进入sqlmap.py所在目录,

1
2
3
4
python sqlmap.py -l /Users/daren/temp/burp/sql_map_log_1_filter --batch -smart --dbms=oracle
# -l 访问日志文件
# batch:自动选yes。
# smart:启发式快速判断,节约时间。

到此完成自动化批量注入攻击。

参考资料
分享到