# 代理 / WAF 保护绕过
从零开始学习 AWS 黑客技术,成为 htARTE (HackTricks AWS 红队专家) 支持 HackTricks 的其他方式: * 如果您希望在 **HackTricks 中看到您的公司广告** 或 **下载 HackTricks 的 PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com) * 发现 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFT 集合**](https://opensea.io/collection/the-peass-family) * **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。** * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来**分享您的黑客技巧**。
## 绕过 Nginx ACL 规则 Nginx 限制示例: ```plaintext location = /admin { deny all; } location = /admin/ { deny all; } ``` ### NodeJS
* 由于Nginx将字符`\xa0`包含在路径名中,因此不会触发对`/admin` URI的ACL规则。结果,Nginx将HTTP消息转发到后端; * 当Node.js服务器收到URI `/admin\x0a`时,将删除字符`\xa0`,允许成功检索`/admin`端点。 | Nginx版本 | **Node.js绕过字符** | | ------------- | ----------------------------- | | 1.22.0 | `\xA0` | | 1.21.6 | `\xA0` | | 1.20.2 | `\xA0`, `\x09`, `\x0C` | | 1.18.0 | `\xA0`, `\x09`, `\x0C` | | 1.16.1 | `\xA0`, `\x09`, `\x0C` | ### Flask Flask会从URL路径中移除字符`\x85`, `\xA0`, `\x1F`, `\x1E`, `\x1D`, `\x1C`, `\x0C`, `\x0B`和`\x09`,但NGINX不会。
| Nginx版本 | **Flask绕过字符** | | ------------- | -------------------------------------------------------------- | | 1.22.0 | `\x85`, `\xA0` | | 1.21.6 | `\x85`, `\xA0` | | 1.20.2 | `\x85`, `\xA0`, `\x1F`, `\x1E`, `\x1D`, `\x1C`, `\x0C`, `\x0B` | | 1.18.0 | `\x85`, `\xA0`, `\x1F`, `\x1E`, `\x1D`, `\x1C`, `\x0C`, `\x0B` | | 1.16.1 | `\x85`, `\xA0`, `\x1F`, `\x1E`, `\x1D`, `\x1C`, `\x0C`, `\x0B` | ### Spring Boot 以下是通过在路径名末尾添加字符`\x09`或的ACL保护绕过演示:
| Nginx版本 | **Spring Boot绕过字符** | | ------------- | --------------------------------- | | 1.22.0 | `;` | | 1.21.6 | `;` | | 1.20.2 | `\x09`, `;` | | 1.18.0 | `\x09`, `;` | | 1.16.1 | `\x09`, `;` | ### PHP-FPM 考虑以下Nginx FPM配置: ```plaintext location = /admin.php { deny all; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; } ``` 可以通过访问 `/admin.php/index.php` 来绕过它:
### 如何防止 为了防止这些问题,你必须在 Nginx ACL 规则中使用 `~` 表达式而不是 `=` 表达式,例如: COPYCOPY ```plaintext location ~* ^/admin { deny all; } ``` ## 绕过 AWS WAF ACL 的行折叠技术 通过使用以下语法,可以在HTTP头中绕过AWS WAF保护,AWS WAF将无法理解X-Query头包含的是sql注入负载,而后面的node服务器却能理解: ```http GET / HTTP/1.1\r\n Host: target.com\r\n X-Query: Value\r\n \t' or '1'='1' -- \r\n Connection: close\r\n \r\n ``` ## 参考资料 * [https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies)
通过 htARTE (HackTricks AWS Red Team Expert)从零开始学习AWS黑客攻击! 支持HackTricks的其他方式: * 如果您希望在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com) * 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family) * **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。** * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。