WAF绕过与反绕过:矛与盾的较量
什么是WAF?它防什么?
常见的WAF绕过技术
1. 大小写混合
2. 编码绕过
3. 注释绕过
4. 特殊符号绕过
5. 函数/变量绕过
6. HTTP参数污染
7. 分块传输
8. 缓冲区溢出
9. 寻找WAF的“盲点”
10. 利用WAF本身的漏洞
WAF反绕过:如何识别和防御绕过行为?
1. 完善规则库
2. 使用语义分析
3. 使用机器学习/深度学习
4. 使用蜜罐技术
5. 加强日志分析
WAF日志分析:火眼金睛识破绕过
1. 关注异常请求
2. 关注拦截记录
3. 关注绕过特征
4. 使用工具辅助分析
5. 结合威胁情报
总结:“攻”与“防”的永恒博弈
“嘿,哥们儿,知道WAF是啥不?”
“这还用问?Web Application Firewall,Web应用防火墙嘛!现在哪个网站不用这玩意儿?”
“那你觉得,WAF真的是固若金汤,无懈可击吗?”
“这…… 理论上,再强的防御也可能有漏洞吧。毕竟,‘道高一尺,魔高一丈’。”
“没错!今天咱就来聊聊WAF的‘矛’与‘盾’——绕过技术和反绕过技术。别眨眼,这可比你看过的任何安全‘大片’都刺激!”
什么是WAF?它防什么?
在正式开聊之前,咱们还是得先给不太了解WAF的朋友们简单科普一下。
WAF,全称Web Application Firewall,Web应用防火墙。顾名思义,它就像一道“防火墙”,架设在Web应用程序(比如你经常访问的网站、App的后端服务等)前面,专门用来抵御各种针对Web应用的攻击。
它主要防什么呢?常见的Web攻击,比如:
- SQL注入:黑客通过构造恶意的SQL语句,试图获取、修改数据库里的敏感信息,甚至直接控制数据库服务器。
- 跨站脚本攻击(XSS):黑客在网页里注入恶意脚本,当其他用户访问这个页面时,脚本就会执行,可能导致用户信息泄露、被钓鱼等。
- 跨站请求伪造(CSRF):黑客诱导用户点击恶意链接或访问恶意网站,在用户不知情的情况下,以用户的身份执行某些操作,比如转账、发帖等。
- 文件包含漏洞:黑客利用服务器端的漏洞,读取或执行服务器上的敏感文件。
- 恶意扫描:黑客利用扫描工具,探测网站的漏洞,为进一步的攻击做准备。
- CC攻击:黑客控制大量“肉鸡”(被黑客控制的计算机或服务器),向目标网站发起大量请求,导致网站瘫痪。
……
总之,WAF就是Web安全的“守门员”,它的职责就是把这些“坏家伙”挡在门外。
常见的WAF绕过技术
“那WAF是怎么工作的呢?它怎么知道哪些请求是‘坏’的,哪些是‘好’的呢?”
“一般来说,WAF会内置一些规则,这些规则描述了各种攻击的特征。当WAF收到一个请求时,它会把这个请求和规则进行比对,如果匹配上了某个规则,就认为这个请求是恶意的,然后拦截掉。”
“那绕过WAF,是不是就是想办法让请求看起来不像‘坏’的,骗过WAF的规则?”
“聪明!你已经掌握了绕过的精髓。下面,咱们就来看看,黑客们常用的绕过‘套路’有哪些。”
1. 大小写混合
这是最简单的一种绕过方式。有些WAF的规则只针对小写或大写的关键字,比如select
、UNION
等。黑客可以把这些关键字改成大小写混合的形式,比如sEleCt
、uNIoN
,来绕过规则。
举个例子:
原始的SQL注入语句:
SELECT * FROM users WHERE username = 'admin' AND password = ' OR 1=1 -- ';
大小写混合绕过:
SeLeCt * FrOm users WhErE username = 'admin' AnD password = ' Or 1=1 -- ';
2. 编码绕过
Web应用通常支持多种编码方式,比如URL编码、HTML实体编码、Unicode编码等。黑客可以把请求中的关键字进行编码,来绕过WAF的规则。
举个例子:
原始的SQL注入语句:
SELECT * FROM users WHERE username = 'admin' AND password = ' OR 1=1 -- ';
URL编码绕过:
%53%45%4c%45%43%54%20%2a%20%46%52%4f%4d%20%75%73%65%72%73%20%57%48%45%52%45%20%75%73%65%72%6e%61%6d%65%20%3d%20%27%61%64%6d%69%6e%27%20%41%4e%44%20%70%61%73%73%77%6f%72%64%20%3d%20%27%20%4f%52%20%31%3d%31%20%2d%2d%20%27%3b
3. 注释绕过
在SQL语句中,可以使用注释符(比如--
、/* */
)来添加注释。黑客可以利用注释符,把关键字“分割”开,或者在关键字中间插入注释,来绕过WAF的规则。
举个例子:
原始的SQL注入语句:
SELECT * FROM users WHERE username = 'admin' AND password = ' OR 1=1 -- ';
注释绕过:
SELECT/**/ * /**/FROM/**/ users/**/ WHERE/**/ username = 'admin' AND password = '/**/ OR 1=1 -- ';
4. 特殊符号绕过
有些WAF会对一些特殊符号进行过滤,比如单引号、双引号、空格等。黑客可以利用一些特殊的符号或函数,来代替这些被过滤的符号。
举个例子:
- 用
+
或%20
代替空格。 - 用反引号(`)代替单引号(在MySQL中,反引号可以用来引用表名和列名)。
- 用
concat()
函数代替字符串连接符(||
或+
)。
5. 函数/变量绕过
有些WAF会对一些敏感函数进行过滤,比如sleep()
、benchmark()
等。黑客可以利用一些不常用的函数,或者自定义函数,来代替这些被过滤的函数。
此外,黑客还可以利用数据库的内置变量,比如@@version
、@@datadir
等,来构造绕过语句。
6. HTTP参数污染
HTTP参数污染是指,在HTTP请求中,同一个参数名出现多次。不同的Web服务器对这种情况的处理方式不一样,有的会取第一个参数值,有的会取最后一个参数值,有的会把所有参数值拼接起来。
黑客可以利用这种特性,把攻击载荷分散到多个同名参数中,来绕过WAF的规则。
举个例子:
原始的SQL注入语句:
?id=1' UNION SELECT 1,2,3 --
HTTP参数污染绕过:
?id=1'&id=' UNION&id= SELECT 1,2,3 --
7. 分块传输
HTTP协议支持分块传输(Chunked Transfer Encoding),可以将HTTP消息分成多个块进行传输。黑客可以利用这种特性,把攻击载荷分散到多个块中,来绕过WAF的规则。
8. 缓冲区溢出
缓冲区溢出是指,向缓冲区写入的数据超过了缓冲区的容量,导致数据溢出到相邻的内存区域。黑客可以利用缓冲区溢出漏洞,覆盖WAF的规则,甚至直接控制WAF。
这种绕过方式比较复杂,需要对WAF的底层实现有深入的了解,通常需要结合其他技术来实现。
9. 寻找WAF的“盲点”
有些WAF可能只对常见的HTTP方法(比如GET、POST)进行检测,而忽略了其他方法(比如PUT、DELETE、OPTIONS等)。黑客可以尝试使用这些不常用的方法,来绕过WAF的检测。
此外,有些WAF可能只对HTTP请求头、请求体进行检测,而忽略了HTTP响应头、响应体。黑客可以在HTTP响应中注入恶意内容,来绕过WAF的检测。
10. 利用WAF本身的漏洞
WAF本身也是软件,是软件就可能有漏洞。黑客可以利用WAF本身的漏洞,来绕过WAF的检测,甚至直接控制WAF。
WAF反绕过:如何识别和防御绕过行为?
“听起来,WAF绕过技术还真不少!那咱们这些‘良民’,该怎么防御呢?”
“别慌,‘魔高一尺,道高一丈’。WAF厂商和安全工程师们也在不断研究新的防御技术,来对抗绕过行为。这就是‘反绕过’。”
反绕过的核心思想是:加强WAF的规则,提高WAF的检测能力,让绕过行为无所遁形。
具体来说,可以从以下几个方面入手:
1. 完善规则库
WAF厂商会不断更新规则库,添加新的规则,来识别新的绕过技术。安全工程师也可以根据实际情况,自定义规则,来增强WAF的防御能力。
举个例子:
针对大小写混合绕过,可以添加不区分大小写的规则,比如:
(?i)select
针对编码绕过,可以添加解码规则,比如:
%[0-9a-fA-F]{2}
2. 使用语义分析
传统的WAF规则主要是基于关键字匹配,容易被绕过。语义分析技术可以对HTTP请求进行更深入的分析,理解请求的真正意图,从而更准确地识别攻击行为。
举个例子:
对于SQL注入攻击,语义分析可以识别出请求中是否包含SQL语句,以及SQL语句的类型(SELECT、INSERT、UPDATE、DELETE等),从而判断请求是否具有恶意。
3. 使用机器学习/深度学习
机器学习/深度学习技术可以自动学习攻击样本的特征,构建攻击检测模型,从而更准确地识别绕过行为。
举个例子:
可以使用机器学习算法,训练一个SQL注入攻击检测模型。这个模型可以从大量的SQL注入攻击样本中学习特征,然后对新的请求进行分类,判断是否为SQL注入攻击。
4. 使用蜜罐技术
蜜罐技术是指,部署一些“诱饵”服务器或应用,模拟真实的服务,吸引黑客来攻击。通过分析黑客的攻击行为,可以了解最新的攻击技术,从而改进WAF的防御策略。
5. 加强日志分析
日志是WAF的“眼睛”,记录了WAF拦截的所有请求。通过对日志进行分析,可以发现潜在的绕过行为,及时调整WAF的规则。
“那具体怎么分析日志呢?有没有什么技巧?”
“当然有!下面,咱们就来聊聊WAF日志分析的‘独门秘籍’。”
WAF日志分析:火眼金睛识破绕过
1. 关注异常请求
- 请求频率异常:某个IP地址或用户在短时间内发起大量请求,可能是CC攻击或恶意扫描。
- 请求参数异常:请求参数中包含特殊字符、关键字、超长字符串等,可能是SQL注入、XSS攻击等。
- 请求方法异常:使用不常用的HTTP方法(比如PUT、DELETE、OPTIONS等),可能是绕过WAF的尝试。
- 请求头异常:User-Agent、Referer等字段异常,可能是伪造的请求。
- 请求体异常:请求体中包含恶意代码,可能是Webshell上传等。
2. 关注拦截记录
- 拦截规则:查看WAF拦截了哪些规则,了解主要的攻击类型。
- 拦截频率:统计某个规则的拦截次数,了解该攻击的活跃程度。
- 误报情况:分析WAF是否存在误报,及时调整规则,避免影响正常业务。
3. 关注绕过特征
- 大小写混合:检查请求中是否包含大小写混合的关键字。
- 编码:检查请求中是否包含URL编码、HTML实体编码、Unicode编码等。
- 注释:检查请求中是否包含SQL注释符(
--
、/* */
)。 - 特殊符号:检查请求中是否包含一些特殊的符号或函数,比如反引号、
concat()
函数等。 - HTTP参数污染:检查请求中是否包含同名参数。
- 分块传输:检查请求头中是否包含
Transfer-Encoding: chunked
。
4. 使用工具辅助分析
- 日志分析工具:ELK Stack(Elasticsearch、Logstash、Kibana)、Splunk等。
- 安全分析平台:SIEM(Security Information and Event Management)系统。
这些工具可以帮助你快速检索、分析大量的WAF日志,发现潜在的绕过行为。
5. 结合威胁情报
威胁情报是指,关于网络攻击的最新信息,包括攻击者的IP地址、域名、攻击手法等。结合威胁情报,可以更准确地识别绕过行为,及时更新WAF的规则。
总结:“攻”与“防”的永恒博弈
“听了这么多,感觉WAF绕过和反绕过,就像一场‘猫鼠游戏’,永无止境啊!”
“没错!网络安全就是一场‘攻’与‘防’的永恒博弈。WAF绕过技术不断发展,WAF反绕过技术也在不断进步。作为安全工程师,咱们要做的就是,不断学习,不断提升自己的‘武功’,才能在这场‘战争’中立于不败之地。”
“嗯,明白了!感谢‘大神’指点迷津!”
“客气啥!记住,安全无小事,时刻保持警惕,才能保护好咱们的‘数字家园’!”
希望这篇文章能帮助你对WAF绕过和反绕过有一个更深入的了解。如果你有任何问题,或者想分享你的经验,欢迎在评论区留言!