介绍一款小众但是巨屌的SQL注入自动化判断工具。
作者已经用它挖了好多注入了,个人认为是xia注入的plus版。
该工具可以挖sql注入,ssrf。
这里主要介绍sql注入功能,全部配置好了最后只需要配置一下app.config文件就行,也支持挖ssrf漏洞了,注意ceye.io有调用次数限制不推荐。
优点:最小化探测sql注入、重复请求包去重、支持设置黑白名单。
缺点:没有缺点。
支持探测类型:整型注入、排序注入、字符型(单双引号)、报错注入。
逻辑处理
扫描器整体架构图
重复请求去重
使用md5(uri+content_type+params(不包括类似csrftoken参数)+body)
class DeDuplicate(object):
def __init__(self,duplicate_list,logger):
self.duplicate_list = duplicate_list
self.logger = logger
self.duplicate_params = Config.get_instance().get("app.DUPLICATE_PARAMS").split('|')
self.duplicate_length = int(Config.get_instance().get('app.DUPLICATE_LEGNTH'))
self.black_host_list = Config.get_instance().get("app.BLACK_HOSTS").split('|')
def getHash(self,hashString):
m = hashlib.md5(hashString.encode(encoding='utf-8'))
return m.hexdigest() # 转化为16进制打印md5值
def pop_param(self, param_list):
"""
去掉黑名单的headers
:param headers_dict:
:return:
"""
keys = param_list.keys()
for key in list(keys):
if key in self.duplicate_params:
param_list.pop(key)
return param_list
def query(self,request,http):
host = request['host']
#print(host)
#print(self.black_host_list)
if host in self.black_host_list:
self.logger.info('黑名单host, pass')
return False
uri = http.parseUrl(request['full_url'])
content_type = request['content_type']
param_in_body = request['param_in_body']
param_in_url = request['param_in_url']
try:
#self.logger.info(request['body'])
body = json.loads(request['body'])
except:
body = {}
tmpObj = [param_in_body, param_in_url,body]
listobj = list(map(self.pop_param, tmpObj))
hashString = uri + str(content_type) + ''.join([str(i) for i in listobj])
#self.logger.info("----" + hashString)
md5 = self.getHash(hashString)
if md5 in self.duplicate_list:
self.logger.info('重复请求')
return False
elif len(self.duplicate_list)<=self.duplicate_length:
self.duplicate_list.append(md5)
return True
else:
self.duplicate_list.clear()
self.logger.info('exceed max length ,clear md5 list')
self.duplicate_list.append(md5)
return True
数字型SQL注入判断
order by 注入判断
字符型注入(包括单引号、双引号)注入判断
双引号字符型注入同理
报错注入判断
ssrf探测
扫描器配置
[app]
BLACK_HEADERS = content-length|if-modified-since|if-none-match|pragma|cache-control|{发送请求前需要去除的参数}
BLACK_PARAMS = nonce|ts|signature|salt|{不进行漏洞探测的参数}
SSRF_DNSLOG = {DNSLOG}
SSRF_API_KEY = {API_KEY}
PROXY = NO
PROXY_HTTP = http://127.0.0.1:8080
REDIRECT = false
TIMEOUT = 60
REPLACE_STATUS = YES
SSRF_TENCENT = YES
DUPLICATE_PARAMS = nonce|ts|signature|{去重干扰参数}
DUPLICATE_LEGNTH = 5000
BLACK_HOSTS = pingfore.qq.com|www.baidu.com|{不扫描的域名}
[mysql]
HOST = {host}
PORT = {port}
USERNAME = {username}
PASSWD = {pass}
DB = {db_name}
CHARSETS = utf8
[score]
SIMILAR = 0.88
COSINSCORE = 75
[REPLACE]
REGEX = "t":d{10}|"current":d{10}|"reqData":".*?"|"skey":".*?"|{使用正则配置需要替换为空的内容,排除动态页面内容干扰注入判断}
部分内容转载自:https://www.cnblogs.com/depycode/p/17079397.html
食用方法:
第一步:
burp加载这个插件 BurpExtender_ALL_UI.py
加载完之后是这样的
如下图:
第二步:启动一个mysql,这里直接用phpstudy启动了
第三步:使用Navicat连接或者直接连接
按照如下步骤开始创建数据库等信息
执行命令1(注意有遮挡,右边有部分命令没显示):
CREATE DATABASE `burphack` /*!40100 DEFAULT CHARACTER SET utf8 */
执行命令2(注意有遮挡,右边有部分命令没显示):
CREATE TABLE `sql_bool` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`host` varchar(255) NOT NULL,
`risk` int(11) NOT NULL,
`bool_true_resp` mediumtext NOT NULL,
`bool_true_req` mediumtext NOT NULL,
`bool_false_resp` mediumtext,
`bool_false_req` mediumtext,
`first_resp` mediumtext NOT NULL,
`payload` varchar(255) NOT NULL,
`first_req` mediumtext NOT NULL,
`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='bool型sql注入'
执行命令3(注意有遮挡,右边有部分命令没显示):
CREATE TABLE `sql_error` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`request_data` mediumtext,
`response` mediumtext,
`host` varchar(255) DEFAULT NULL,
`dbms` varchar(255) DEFAULT NULL,
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
执行命令4(注意有遮挡,右边有部分命令没显示):
CREATE TABLE `ssrf` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`payload` varchar(255) DEFAULT NULL,
`request_data` mediumtext,
`response` mediumtext,
`host` varchar(255) DEFAULT NULL,
`is_vul` int(11) DEFAULT '0' COMMENT '0 默认值n1 存在漏洞',
`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`vuType` int(11) DEFAULT NULL COMMENT '1 ssrfn2 rce',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16625 DEFAULT CHARSET=utf8 COMMENT='历史ssrf探测请求'
创建好是这样的
第四步:修改配置文件app.config
第五步:自动化注入启动!!!!
命令:python MyUDPHandler_Threads.py
上图的32743端口 我们需要在burp插件中修改
如下图红框中修改:
下面我直接拿我本地的sqli靶场演示效果
设置目标为192.168.100.237
python这个文件 MyUDPHandler_Threads.py
启动mysql
访问网站发送请求
下图如果你的mysql没有启动则会报错,但是不会中断。
扫到注入自动生成文件,存放于reports中
下载地址:
https://github.com/depycode/burpsuite_hack
原文始发于微信公众号(黑熊安全):碉堡了,SQL注入随便挖!
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论