caarlosousa/tcc-waf-bypass

GitHub: caarlosousa/tcc-waf-bypass

该项目是一个学术实验仓库,专注于通过请求体检查限制绕过AWS WAF和ModSecurity,用于对比分析WAF防护效果。

Stars: 0 | Forks: 0

# 🛡️ TCC:通过WAF检查限制耗尽进行实战评估 本代码库用于存储为毕业论文开发的实践项目(漏洞应用与自动化*脚本*)。该项目聚焦于**AWS WAF**与**ModSecurity**的对比分析,重点探索请求体检查限制(*Body Inspection Limit*)。 ⚠️ **注意:** 本代码库所有*脚本*与技术文档仅用于学术与教育目的。所有测试均在作者拥有的受控实验室环境中进行。 ## 📂 项目结构 代码库按逻辑分为目标应用与自动化攻击向量两部分: ``` TCC-WAF-BYPASS/ ├── app-vulneravel/ │ ├── index.php # Página principal da aplicação │ └── sqli-login.php # Aplicação PHP intencionalmente vulnerável a SQLi └── scripts-ataque/ ├── alteracao_logica/ # Testes de linha de base (Baseline) │ ├── ataque 1-1.py # Bypass de autenticação clássico (OR '1'='1) │ ├── ataque 1-2.py # Ofuscação com comentários SQL (/*...*/) │ └── ataque 1-3.py # Uso de operadores alternativos (XOR) ├── blind_SQL/ │ └── ataque_time_based.py # Injeção baseada em tempo (SLEEP) └── OWASP/ # Ataques avançados utilizando Bypass Volumétrico (8KB) ├── ataque_boolean_blind.py # Inferência booleana (SUBSTRING) ├── ataque_error_based.py # Exfiltração via erro XML (ExtractValue) └── ataque_union.py # Fabricação de registros (UNION SELECT) ``` ## ⚙️ 核心技术:*请求体检查限制绕过* `OWASP`文件夹内攻击的基本原理是利用云端WAF的架构特性(*Fail Open*)。AWS的应用负载均衡器(ALB)等边缘服务对POST请求体前**8,192字节(8 KB)**有严格的检查限制。 为规避检测规则,Python*脚本*实现了**载荷填充**技术: 1. 生成包含8,192个无害字符的参数(如:`垃圾数据 = "A" * 8192`) 2. 将恶意*载荷*紧接在此数据块之后 3. WAF仅检查前8KB内容,未发现威胁即放行请求 4. PHP解释器处理完整载荷,MariaDB执行注入操作 ## 🔬 攻击逻辑分解(PoC) 以下详述各*载荷*与MariaDB/MySQL数据库的交互机制。 ### 📁 模块:`OWASP`(体积逃逸型攻击) #### 1. 联合查询SQL注入 (`ataque_union.py`) * **载荷:** `' UNION SELECT 1, 2, 3 -- ` * **原理:** 目标应用执行逻辑判断`if ($result->num_rows > 0)`。由于不存在空用户,原始查询返回空结果集。`UNION`操作符将我们的第二条查询结果(`SELECT 1, 2, 3`)附加到结果集。数据库返回该构造行,满足PHP条件并授权访问。 #### 2. 报错型SQL注入 (`ataque_error_based.py`) * **载荷:** `' AND ExtractValue(1, concat(0x3a, @@version)) -- ` * **原理:** 利用XML处理函数`ExtractValue()`。`concat()`函数连接十六进制字符`0x3a`(代表":")与全局变量`@@version`。由于XPath语法不允许表达式以":"开头,MariaDB生成包含系统版本的致命错误:`XPATH语法错误: ':10.11.13-MariaDB'`。该信息通过服务器日志泄露。 #### 3. 布尔型盲注SQL注入 (`ataque_boolean_blind.py`) * **载荷:** `' OR (SUBSTRING(@@version, 1, 1) = '1') -- ` * **原理:** 攻击者向数据库发送条件查询。`SUBSTRING`函数提取数据库版本首字符并验证是否等于'1'。查询变为`FALSE OR TRUE`,强制触发*登录*。通过迭代此过程,可通过页面行为(成功/失败)推断式提取整个数据库。 ### 📁 模块:`blind_SQL` #### 时间型盲注SQL注入 (`ataque_time_based.py`) * **载荷:** `' OR SLEEP(5) -- ` * **原理:** 当查询首个条件失败(用户不存在)时,数据库因`OR`运算符必须评估第二个表达式。`SLEEP(5)`函数使数据库管理系统执行*线程*暂停整整5秒。攻击成功与否通过HTTP请求的往返时间(RTT)衡量。
标签:逆向工具