# sqlinj-ant

一、程序说明

分布式、全覆盖、半自动化 sql注入扫描器

解决问题:传统扫描器对post请求的无力,对登录后请求的无力,扫描效率低,覆盖效果差

通过使用代理服务器主动提交的方式收集全部请求保存到redis中
python调用sqlmapapi遍历上一步收集的url进行测试


二、文件说明
.
|____autoinj.py 			调用sqlmapapi提供的api进行sql注入测试 对存在注入漏洞的请求返回请求信息
|____console.py 			主程序  获取用户参数调用autoinj进行注入测试
|____main.py 				无用的
|____param.py 				参数配置
|____preprocess.py 			数据预处理程序 将redis中hash保存的请求信息以set形式保存到 待测试 key中
|____proxy.conf 			nginx代理配置 记录http请求到redis
|____spider.py 				没用的

三、使用说明
1.环境要求
python 2.7
redis
openresty 版本别太低
sqlmap

2.配置准备
a.安装redis
b.安装openresty并添加proxy.conf 配置http代理服务器 修改proxy.conf中redis地址,确保redis的连接
c.浏览器使用代理,访问web系统,redis自动记录全部请求
 ---数据搜集end---
d.修改param.py中redis连接方式  
e.在扫描节点部署sqlmap并启动sqlmapapi的服务(多节点提高速度)
f.调用preprocess.py 将要扫描的站点转移到db1下set中(原始请求数据保留在db0,db1作任务队列)
g.通过console.py调用sqlmapapi进行扫描
  python console.py http://node1.com:8775
  python console.py http://node2.com:8775
  python console.py http://node2.com:8775
  扫描结果将保存到db1中 key=sql.inj
 ---扫描end---

 如提示缺少module,请自行安装

 四、其它
 redis数据保存说明

 资源数据-HASH(全部http请求)
 key 		proxy.hostname
 field 		url
 value 		method host url args remote 等 (json格式)

待扫描数据-SET
key 		proxy.set
value 		资源数据中value的集合

扫描结果-HASH
key 		sqlinj
field 		注入点url
value 		注入请求详情