Proxy / WAF Protections Bypass
Διαγραφή Κανόνων ACL του Nginx με Αλλοίωση Ονομάτων Διαδρομής
Τεχνικές από αυτή την έρευνα.
Παράδειγμα κανόνα Nginx:
NodeJS - Express
Nginx Version | Node.js Bypass Characters |
1.22.0 |
|
1.21.6 |
|
1.20.2 |
|
1.18.0 |
|
1.16.1 |
|
Flask
Nginx Version | Flask Bypass Characters |
1.22.0 |
|
1.21.6 |
|
1.20.2 |
|
1.18.0 |
|
1.16.1 |
|
Spring Boot
Nginx Version | Spring Boot Bypass Characters |
1.22.0 |
|
1.21.6 |
|
1.20.2 |
|
1.18.0 |
|
1.16.1 |
|
PHP-FPM
Nginx FPM configuration:
Nginx είναι ρυθμισμένο να αποκλείει την πρόσβαση στο /admin.php
αλλά είναι δυνατόν να παρακάμψετε αυτό προσπελαίοντας το /admin.php/index.php
.
Πώς να το αποτρέψετε
Παράκαμψη Κανόνων 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:
Ήταν δυνατόν να παρακάμψετε το AWS WAF επειδή δεν κατανόησε ότι η επόμενη γραμμή αποτελεί μέρος της τιμής της κεφαλίδας, ενώ ο διακομιστής NODEJS το κατανόησε (αυτό διορθώθηκε).
Αναφορές
Last updated