WEB TOP10 之 SQL注入漏洞 WAF ByPass (十)

0x0 WAF 概述

什么是 WAF

  • WAF(Web应用程序防火墙 Web Application Firewall )是一种安全工具,用于保护Web应用程序免受各种网络攻击,如SQL注入、跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等。WAF可以检测和阻止恶意流量,过滤恶意请求,保护Web应用程序免受攻击。
  • WAF 是通过执行一系列 针对 HTTP/HTTPS 的安全策略来专门为 Web 应用提供保护 的种网络安全产品
  • WAF 可以增大攻击者的攻击难度和攻击成本,但是不是 100% 安全

WAF 分类

  • 根据不同部署方式分类
  1. 软件WAF
    • 软件WAF是通过安装在服务器上的软件来实现Web应用程序防护的一种方式。
    • 优势:软件WAF易于部署,可以通过在服务器上安装软件或应用程序插件来快速启用防护功能。它可以直接与Web服务器集成,检测和阻止恶意流量,提供实时保护。
    • 适用场景:适用于中小型企业或个人网站,成本较低且易于管理。
    • 注意事项:软件WAF可能会对服务器性能产生一定影响,需要考虑资源消耗和维护成本。
  2. 硬件WAF
    • 硬件WAF是通过专门的硬件设备来实现Web应用程序防护的一种方式,通常部署在网络边界或数据中心的入口处。
    • 优势:硬件WAF具有强大的性能和专业的安全功能,能够处理大量的流量和复杂的攻击。它可以独立运行,不依赖于服务器资源,对Web应用程序的性能影响较小。
    • 适用场景:适用于大型企业或需要高性能、高可靠性的Web应用程序。
    • 注意事项:硬件WAF通常价格较高,需要专门的硬件设备进行部署,维护和更新可能比较复杂。
  • 根据不同工作原理分类
  1. 基于特征的WAF(Signature-Based WAF):这种类型的WAF使用预定义的规则集或模式来识别和阻止已知的攻击。通常基于特征的WAF能够准确地识别和阻止已经被广泛研究和证实的攻击方法,例如SQL注入、跨站脚本等。这种分类的WAF速度较快,但可能无法检测到新型的、未知的攻击。
  2. 基于行为的WAF(Behavior-Based WAF):这种类型的WAF根据应用程序的正常行为和特征,来检测和阻止异常或可疑的活动。基于行为的WAF可以检测到未知的攻击方法和零日漏洞,因为它们关注的是攻击行为的异常性而不是特定的攻击模式。这种分类的WAF比较适合发现新型的攻击,但也容易产生误报。
  3. 云WAF(Cloud WAF):这种分类的WAF部署在云端,通过云服务提供商来提供防护服务。云WAF可以灵活地扩展和部署到全球各地,为Web应用程序提供全面的安全保护。由于云WAF集中管理和更新规则,可以更快地响应新型威胁和漏洞。
  4. 混合WAF(Hybrid WAF):这种分类的WAF结合了基于特征和行为的检测方法,以提高检测准确性和覆盖范围。混合WAF可以结合多种技术,并根据实际情况动态调整防护策略,以适应不断变化的威胁环境。

WAF 的工作流程

  1. 检测流量:WAF会监控和分析所有进入Web应用程序的流量,识别潜在的恶意请求。
  2. 验证请求:对于每个请求,WAF会根据一系列预定义的规则进行验证,包括HTTP方法、参数、Cookie等内容。
  3. 过滤恶意请求:如果WAF发现请求不符合规则或可能包含恶意内容,它将阻止或过滤这些请求,以防止Web应用程序受到攻击。
  4. 记录和报告:WAF会记录所有检测到的恶意活动,并生成报告,以帮助管理员了解攻击类型和频率,以便改善安全策略。

判断网站是否存在 WAF

要判断一个网站是否存在WAF(Web应用程序防火墙),可以尝试以下几种方法:

  1. 请求头检查:你可以通过发送一个HTTP请求到网站,并查看响应头中是否包含一些特定的WAF厂商的标识,例如”X-WAF”、”Server: WAF”等。这些标识可能会显示网站使用了WAF来保护。
  2. 主动攻击:尝试发送一些具有恶意攻击特征的请求,如SQL注入、XSS攻击等,观察网站的响应情况。如果网站对这些攻击进行了阻止或过滤,可能是WAF在起作用。
  3. 网站响应:观察网站的响应时间和页面结构,一些WAF可能会引入额外的延迟或对页面内容进行修改以进行安全保护。
  4. 工具检测:使用一些专门的WAF检测工具,如WAFW00F、Nmap等,来扫描网站以检测是否存在WAF。

需要注意的是,有些网站可能会隐藏WAF的存在,以增加安全性,所以上述方法可能并不总是100%准确。但通过结合多种方法观察和测试,可以较为准确地判断一个网站是否使用了WAF。

0x1 WAF Bypass

  • 为什么要绕过 WAF?
    • 当我们提交一个正常的 payload 时,会被 waf 防火墙识别出来,并及时阻止它访问 web 容器。
    • 但是当我们提交一个特殊的 payload 的时,有些防火墙可能并不会对这些特殊的 payload 进行过滤,从而可以正常访问
  • Web 容器为什么 WAF 可以被绕过?
    • 安全性能的冲突
    • 买了 WAF 不会用,所有都默认设置
    • WAF 无法 100% 覆盖语言、中间件、数据库的特性
    • WAF 本身存在漏洞
WEB TOP10 之 SQL注入漏洞 WAF ByPass (十)-侠者安全社区
  1. 大小写混合:攻击者可以混合使用大小写字母来变换恶意代码,绕过 WAF 过滤规则。举例来说,可将关键字 “SELECT” 变成 “sElEcT”。
  2. 替换关键字:通过替换或插入不寻常字符如双字节字符来绕过 WAF 对关键字的识别。比如,将 “SELECT” 替换为 “SEL\0ECT”。
  3. 使用编码:使用不同类型的编码方式如 URL 编码、Base64 编码等,对恶意 Payload 进行混淆,以规避 WAF 的检测。
  4. 使用注释:插入注释 语句 // 、 –、/**/ 、# 、–+、– -、;、–a ,以混淆 Payload,使 WAF 难以识别并阻止攻击。
  5. 参数污染:通过在 URL 参数中增加额外的参数、特殊字符或敏感关键词,来绕过 WAF 对恶意 Payload 的检测。
  6. 缓冲区溢出:利用输入的数据超过系统可处理的缓冲区大小,导致系统溢出并执行任意代码,从而绕过 WAF 的防护。
  7. 分片攻击:将恶意payload分成多个小段,并通过多个请求发送,以绕过WAF对请求体的整体检测。
  8. 特殊符号:使用反引号,可以用来绕过空格和正则,特殊情况下还可以将其做注释符用,从而绕过 WAF 的防护。
  9. 性能因素:攻击者可能故意发送大量请求或大数据量的 Payload,来占用 WAF 的资源和带宽,从而干扰其正常运作,造成漏洞。
  10. 特定规避:了解WAF的规则和过滤机制,并根据具体规则设计恶意payload,以规避WAF的检测。
  11. 整合绕过:组合多种绕过技术与方法,如结合大小写混合、编码、特殊符号和替换关键字,构建复杂的攻击 Payload,提高绕过 WAF 的成功率。

00 大小写混合

  • 用于只针对小写或大写的关键字匹配技术
  • 出现原因:在 waf 里,使用的正则不完善或者是没有用大小写转换函数
  • 用法:比如,拦截了 union,那就使用 uNIoN
  • index. php?id = -3 uNIoN sELect 1,2,3
  • 注意:对于一些不太成熟的 WAF 效果显著

01 替换关键字

关键字双写

  • 出现原因:利用 waf 的不完整性,只验证一次字符串或者过滤的字符串并不完整。】
  • 用法:index. php? id=-3 UNlunionON SELselectECT 1,2,3
  • 注意:有些时候甚至构造更复杂,如: SeLSeselectleCTecT

同价词替换

  • 出现原因:WAF 主要是针对一些 特殊的关键词进行检测
  • 用法:
  1. andor 不能使用:&& 和 ‖ 代替
  2. = 不能使用的情况:可以尝试 <,> 代替
  3. 空格 不能使用(常见):%20 ,%09,%0a,%0b,%0c,%0d,%a0,/**/ 代替

特殊字符拼接

  • 出现原因:把特殊字符拼接起来绕过 WAF 的检测
  • 用法:如在函数里可以用 + 来拼接,在 Mysql 中可以利用注释/**/绕过
WEB TOP10 之 SQL注入漏洞 WAF ByPass (十)-侠者安全社区
  • mysql 字符串拼接: concat()
  • SQL server 字符串拼接: +
  • Oracle 字符串拼接 :||

02 使用编码

URL 编码

  • 输入一个连接,非保留字的字符浏览器会对其 URL 编码,如空格变为 %20、单引号 %27、左括号 %28 等
  • 注意:如果 URL 编码只进行了一次过滤,可以用两次编码绕过
  • 用法:
WEB TOP10 之 SQL注入漏洞 WAF ByPass (十)-侠者安全社区

Unicode 编码

  • 常用符号的 Unicode 编码:
    • 单引号:%u0027
    • 空格:%u0020
    • 左括号:%u0028
    • 右括号:%u0029
WEB TOP10 之 SQL注入漏洞 WAF ByPass (十)-侠者安全社区

03 使用注释

  • 常见的用于注释的符号:// 、 –、/**/ 、# 、–+、– -、;、–a
  • 出现原因:利用语言函数特性来绕过 waf 的规则

普通注释

  • // 在构造的査询语句中 插入注释,规避对空格的依赖关键字识别
  • 用法:
WEB TOP10 之 SQL注入漏洞 WAF ByPass (十)-侠者安全社区

内联注释

  • 相比普通注释,内联注释用的更多,它有一个特性 只有 MySQL 能识别 (/*! */表示注释里面的语句会被执行)
  • 用法:采用 /*! code */ 来执行我们的 SQL 语句, 内联注释可以用于整个 SQL 语句中
  • 举例:过滤器过滤了如下内容 union, where, table name, table schema,=, and information_schema,这些都是我们内联绕过需要绕过的目标
WEB TOP10 之 SQL注入漏洞 WAF ByPass (十)-侠者安全社区

04 参数污染

  • HPP (Http Parameter Polution)又称做重复参数污染,当同一参数出现多次,不同中间件会解析为不同的结果
  • 如果WAF只检测了同参数名中的第一个或最后一个,并且中间件特性正好取与WAF相反的参数,则可成功绕过
WEB TOP10 之 SQL注入漏洞 WAF ByPass (十)-侠者安全社区
WEB TOP10 之 SQL注入漏洞 WAF ByPass (十)-侠者安全社区

05 缓冲区溢出

  • 缓冲区溢出用于绕过WAF,许多WAF是C语言写的,而C语言自身没有缓冲区保护机制
  • 因此如果WAF在处理测试向量时超出了其缓冲区长度,就会引发bug从而实现绕过
WEB TOP10 之 SQL注入漏洞 WAF ByPass (十)-侠者安全社区
  • 说明:示例0xA*1000指0xA后面”A”重复1000次,一般来说对应用软件构成缓冲区溢出都需要较大的测试长度,这里1000只做参考,在某些情况下可能不需要这么长也能溢出

06 分片攻击

  • 当我们将传输的内容分块时,处理后的HTTP请求由于和已知的payload相差较大,所以可以起到一定的绕过WAF的效果
  • 举例:正常输入id=1 and 1=2,被安全狗拦住
  • 只支持POST请求
WEB TOP10 之 SQL注入漏洞 WAF ByPass (十)-侠者安全社区

07 特殊符号

  • 使用反引号,可以用来绕过空格和正则,特殊情况下还可以将其做注释符用
  • 神奇的”-+.”,select+id from users; “+” 是用于字符串连接的, ” -” 和 ” .” 在此也用于连接,可以逃过空格和关键字过滤
index.php?id=-1.0 union select"1",2,3
index.php?id=-1E0 union select~1,2,3
index.php?id=-1 union select 1,2,version"from users"
index.php?id=-1 union select `id`,1,2 from users
index.php?id=-1 union select 1,2,version()`from users`
  • 普通括号
select count(id) test from users;

index.php?id=(-1)union(select(1),(2), (3)from(users)
index.php?id=(1)or(0x50=0x50)
index.php?id=(-1)union(((((((select(1),hex(2), hex(3)from(users))))))))
  • 花括号
select {user} from{x mysql.user};

index.php?id=-1 union select 1,{x 2},3
  • 过滤掉and和or的盲注
index.php?id=strcmp(left((select%20username%20from%20users%20limit%200,1),1),0x42)%23
index.php?id=strcmp(left((select+username+from+users+limit+0,1),1),0x42)%23
select * from users where id=strcmp(left(select username from users limit 0,1),1),0x42);

08 整合绕过 (重点)

  • 整合的意思是结合使用前面的各种绕过技术,单一的技术可能无法绕过过滤机制,但多种技术的配合使用成功的可能性会增加
  • 多种技术的使用增加了更多的可能性,除非毎一种技术单独都无法使用,否则它们能大大增加绕过的成功性
© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情

    暂无评论内容