SQL注入神器

没关注黑熊安全的师傅可以关注一波,会继续分享好工具,感谢。

没关注黑熊安全的师傅可以关注一波,会继续分享好工具,感谢。

没关注黑熊安全的师傅可以关注一波,会继续分享好工具,感谢。

介绍一款小众但是巨屌的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  ssrf\n2  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

如果有任何问题欢迎加xxbearyyds联系方式解答问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值