6.6 KiB
Contournement des protections Proxy / WAF
Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!
Autres moyens de soutenir HackTricks :
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT!
- Obtenez le merchandising officiel PEASS & HackTricks
- Découvrez La Famille PEASS, notre collection d'NFTs exclusifs
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez-moi sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de hacking en soumettant des PR aux dépôts github HackTricks et HackTricks Cloud.
Contournement des règles ACL Nginx
Exemple de restriction Nginx :
location = /admin {
deny all;
}
location = /admin/ {
deny all;
}
NodeJS
- Comme Nginx inclut le caractère
\xa0
dans le chemin, la règle ACL pour l'URI/admin
ne sera pas déclenchée. Par conséquent, Nginx transmettra le message HTTP au backend ; - Lorsque l'URI
/admin\x0a
est reçu par le serveur Node.js, le caractère\xa0
sera supprimé, permettant ainsi de récupérer avec succès le point de terminaison/admin
.
Version Nginx | Caractères de contournement 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 supprime les caractères \x85
, \xA0
, \x1F
, \x1E
, \x1D
, \x1C
, \x0C
, \x0B
, et \x09
du chemin de l'URL, mais NGINX ne le fait pas.
Version Nginx | Caractères de contournement 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
Ci-dessous, vous trouverez une démonstration de la façon dont la protection ACL peut être contournée en ajoutant le caractère \x09
ou ;
à la fin du chemin :
Version Nginx | Caractères de contournement Spring Boot |
---|---|
1.22.0 | ; |
1.21.6 | ; |
1.20.2 | \x09 , ; |
1.18.0 | \x09 , ; |
1.16.1 | \x09 , ; |
PHP-FPM
Considérons la configuration Nginx FPM suivante :
location = /admin.php {
deny all;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
Il est possible de le contourner en accédant à /admin.php/index.php
:
Comment prévenir
Pour prévenir ces problèmes, vous devez utiliser l'expression ~
au lieu de l'expression =
dans les règles ACL de Nginx, par exemple :
COPYCOPY
location ~* ^/admin {
deny all;
}
Contournement de AWS WAF ACL avec le pliage de ligne
Il est possible de contourner la protection AWS WAF dans un en-tête HTTP en utilisant la syntaxe suivante où le AWS WAF ne comprendra pas que l'en-tête X-Query contient une charge utile d'injection SQL alors que le serveur node derrière le comprendra :
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
Références
Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!
Autres moyens de soutenir HackTricks :
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT!
- Obtenez le merchandising officiel PEASS & HackTricks
- Découvrez La Famille PEASS, notre collection d'NFTs exclusifs
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez-moi sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de hacking en soumettant des PR aux dépôts github HackTricks et HackTricks Cloud.