WEBKT

WAF绕过与反绕过:矛与盾的较量

3 0 0 0

什么是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的规则只针对小写或大写的关键字,比如selectUNION等。黑客可以把这些关键字改成大小写混合的形式,比如sEleCtuNIoN,来绕过规则。

举个例子:

原始的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绕过和反绕过有一个更深入的了解。如果你有任何问题,或者想分享你的经验,欢迎在评论区留言!

安全老司机 WAF网络安全安全攻防

评论点评

打赏赞助
sponsor

感谢您的支持让我们更好的前行

分享

QRcode

https://www.webkt.com/article/8444