SQL_BypassWaf.pdf

preview
需积分: 0 0 下载量 42 浏览量 更新于2022-04-08 收藏 2.46MB PDF 举报
【SQL注入与WAF绕过】SQL注入是一种常见的网络安全攻击手法,通过在应用程序的输入字段中插入恶意SQL代码,以获取、修改、删除数据库中的数据。而WAF(Web Application Firewall)则是为了防止这种攻击而设立的一道防线,它通过监控和过滤HTTP请求,阻止含有恶意SQL代码的请求到达服务器。然而,WAF并非无懈可击,攻击者可以通过各种技巧绕过WAF的检测。 【SQL注入技巧】SQL注入攻击中,注释符是关键的绕过手段之一。MySQL、Oracle和MSSQL都有各自的注释符,如`/*`、`#`、`--`等,攻击者可以利用这些注释符隐藏恶意代码。此外,使用特殊的字符如`+`、`-`、`@`、`!`、`'`、`"`、`~`、`{`等,配合注释符和空白字符(如 `%0a`、`%0d`等),可以构造出混淆WAF的查询语句。 【WAF类型】WAF主要分为硬件类、软件类和基于云的WAF。硬件WAF如绿盟、天融信、安恒的产品;软件WAF包括安全狗、云锁、ModSecurity等;云WAF如阿里云、创宇盾等。软件类和云WAF因为易于部署和更新规则,是当前研究的重点。 【WAF绕过策略】绕过WAF主要依赖于对SQL语法的深入理解和创新应用。比如,使用等价替换,当WAF拦截常规的攻击语句时,可以用不常见的但功能相同的SQL命令替代。例如,用`case when`代替`if`,用`find_in_set()`或正则表达式代替比较运算符`<`, `>`。 【函数替换与等价功能】在SQL注入中,函数的使用至关重要。对于函数过滤的情况,可以查找官方文档,寻找所有API函数,使用如`xor user()`等模糊测试方法。例如,当`mid`、`substr`被过滤,可以尝试`replace`、`LPAD`、`REVERSE`等函数进行替换。 【特殊字符与注释符结合】结合注释符和特殊字符,如在`SELECT`、`UNION`、`FROM`等关键字前后添加特殊字符,可以混淆WAF的检测逻辑。例如,使用`--+`或`/**/`等组合,有时候能避开WAF的关键词过滤。 【战略与思考】绕过WAF不仅仅是技术层面的挑战,还需要策略性的思考。主要目标是绕过`SELECT col FROM table`这样的基础查询拦截,次要目标是绕过`UNION SELECT`。这需要对WAF的工作原理有深刻理解,同时灵活运用各种SQL语法技巧,以及对攻击和防御双方心理的把握。 SQL注入与WAF绕过是信息安全领域中的持续对抗,攻击者不断寻找新的方法来突破防御,而防守方则需要不断提升WAF的智能性和灵活性。了解和掌握这些技巧,对于安全研究人员和开发者来说,都是保护系统免受SQL注入攻击的关键步骤。