hacktricks/pentesting-web/proxy-waf-protections-bypass.md

9.2 KiB
Raw Blame History

Διαγραφή Προστασιών Proxy / WAF

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Red Team του HackTricks AWS)!

Άλλοι τρόποι υποστήριξης του HackTricks:

{% embed url="https://websec.nl/" %}

Διαγραφή Κανόνων ACL του Nginx με Αλλοίωση Ονομάτων Διαδρομής

Τεχνικές από αυτή την έρευνα.

Παράδειγμα κανόνα Nginx:

location = /admin {
deny all;
}

location = /admin/ {
deny all;
}

NodeJS - Express

Nginx Version Node.js Bypass Characters
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

Nginx Version Flask Bypass Characters
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

Nginx Version Spring Boot Bypass Characters
1.22.0 ;
1.21.6 ;
1.20.2 \x09, ;
1.18.0 \x09, ;
1.16.1 \x09, ;

PHP-FPM

Nginx FPM configuration:

location = /admin.php {
deny all;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}

Nginx είναι ρυθμισμένο να αποκλείει την πρόσβαση στο /admin.php αλλά είναι δυνατόν να παρακάμψετε αυτό προσπελαίοντας το /admin.php/index.php.

Πώς να το αποτρέψετε

location ~* ^/admin {
deny all;
}

Παράκαμψη Κανόνων Mod Security

Σύγχυση Διαδρομής

Σε αυτήν την ανάρτηση εξηγείται ότι το ModSecurity v3 (μέχρι την έκδοση 3.0.12), υλοποίησε εσφαλμένα τη μεταβλητή REQUEST_FILENAME η οποία έπρεπε να περιέχει τη διαδρομή πρόσβασης (μέχρι την έναρξη των παραμέτρων). Αυτό συνέβαινε επειδή πραγματοποιούσε αποκωδικοποίηση URL για να λάβει τη διαδρομή.
Συνεπώς, μια αίτηση όπως http://example.com/foo%3f';alert(1);foo= στο mod security θα υποθέσει ότι η διαδρομή είναι απλώς /foo επειδή το %3f μετατρέπεται σε ? τελειώνοντας τη διαδρομή URL, αλλά στην πραγματικότητα η διαδρομή που θα λάβει ο διακομιστής θα είναι /foo%3f';alert(1);foo=.

Οι μεταβλητές REQUEST_BASENAME και PATH_INFO επηρεάστηκαν επίσης από αυτό το σφάλμα.

Κάτι παρόμοιο συνέβη στην έκδοση 2 του Mod Security που επέτρεπε την παράκαμψη προστασίας που αποτρέπει τον χρήστη από την πρόσβαση σε αρχεία με συγκεκριμένες επεκτάσεις που σχετίζονται με αρχεία αντιγράφων ασφαλείας (όπως .bak) απλώς αποστέλλοντας το τελεία URL κωδικοποιημένο σε %2e, για παράδειγμα: https://example.com/backup%2ebak.

Παράκαμψη AWS WAF ACL

Μη Έγκυρη Κεφαλίδα

Αυτή η έρευνα αναφέρει ότι ήταν δυνατό να παρακαμφθούν οι κανόνες AWS WAF που εφαρμόζονται στις κεφαλίδες HTTP αποστέλλοντας μια "μη έγκυρη" κεφαλίδα που δεν αναλύθηκε σωστά από το AWS αλλά αναλύθηκε από τον εξυπηρετητή backend.

Για παράδειγμα, αποστέλλοντας το ακόλουθο αίτημα με ένα SQL injection στην κεφαλίδα X-Query:

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

Ήταν δυνατόν να παρακάμψετε το AWS WAF επειδή δεν κατανόησε ότι η επόμενη γραμμή αποτελεί μέρος της τιμής της κεφαλίδας, ενώ ο διακομιστής NODEJS το κατανόησε (αυτό διορθώθηκε).

Αναφορές

{% embed url="https://websec.nl/" %}

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι υποστήριξης του HackTricks: