HTTP Connection Request Smuggling
Reading time: 5 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Αυτή η σελίδα συνοψίζει, επεκτείνει και ενημερώνει την πρωτοποριακή έρευνα του PortSwigger σχετικά με Browser-Powered Desync Attacks και την επακόλουθη εργασία σχετικά με την κακή χρήση της κατάστασης σύνδεσης HTTP/2. Επικεντρώνεται σε ευπάθειες όπου μια προέλευση καθορίζεται μόνο μία φορά ανά σύνδεση TCP/TLS, επιτρέποντας σε έναν επιτιθέμενο να “λαθρέψει” αιτήματα σε έναν διαφορετικό εσωτερικό διακομιστή μόλις η σύνδεση έχει καθοριστεί.
Connection-State Attacks
First-request Validation
Όταν δρομολογούν αιτήματα, οι αντίστροφοι διακομιστές μεσολάβησης μπορεί να εξαρτώνται από την κεφαλίδα Host (ή :authority στο HTTP/2) για να καθορίσουν τον προορισμό διακομιστή, συχνά βασιζόμενοι σε μια λευκή λίστα διακομιστών που επιτρέπεται η πρόσβαση. Ωστόσο, υπάρχει μια ευπάθεια σε αρκετούς διακομιστές μεσολάβησης όπου η λευκή λίστα επιβάλλεται μόνο στην πρώτη αίτηση σε μια σύνδεση. Ως εκ τούτου, οι επιτιθέμενοι μπορούν να αποκτήσουν πρόσβαση σε εσωτερικούς εικονικούς διακομιστές στέλνοντας πρώτα μια επιτρεπόμενη αίτηση και στη συνέχεια επαναχρησιμοποιώντας την ίδια υποκείμενη σύνδεση:
GET / HTTP/1.1
Host: allowed-external-host.example
GET /admin HTTP/1.1
Host: internal-only.example
Πρώτη-αίτηση Δρομολόγηση
Πολλοί HTTP/1.1 αντίστροφοι διακομιστές μεσολάβησης αντιστοιχίζουν μια εξερχόμενη σύνδεση σε μια πίσω πισίνα βασισμένοι αποκλειστικά στην πρώτη αίτηση που προωθούν. Όλες οι επόμενες αιτήσεις που αποστέλλονται μέσω της ίδιας μπροστινής υποδοχής επαναχρησιμοποιούνται σιωπηλά, ανεξάρτητα από την κεφαλίδα Host τους. Αυτό μπορεί να συνδυαστεί με κλασικές επιθέσεις κεφαλίδας Host όπως η δηλητηρίαση επαναφοράς κωδικού πρόσβασης ή δηλητηρίαση web cache για να αποκτηθεί πρόσβαση παρόμοια με SSRF σε άλλους εικονικούς διακομιστές:
GET / HTTP/1.1
Host: public.example
POST /pwreset HTTP/1.1
Host: private.internal
tip
Στο Burp Suite Professional ≥2022.10 μπορείτε να ενεργοποιήσετε το HTTP Request Smuggler → Connection-state probe για να ανιχνεύσετε αυτόματα αυτές τις αδυναμίες.
ΝΕΟ το 2023-2025 – Κατάχρηση Συγκέντρωσης Σύνδεσης HTTP/2/3
Οι σύγχρονοι περιηγητές συνήθως συγκεντρώνουν τα αιτήματα HTTP/2 και HTTP/3 σε μία μόνο σύνδεση TLS όταν το πιστοποιητικό, το πρωτόκολλο ALPN και η διεύθυνση IP ταιριάζουν. Εάν ένα front-end εξουσιοδοτεί μόνο το πρώτο αίτημα, κάθε επόμενο συγκεντρωμένο αίτημα κληρονομεί αυτή την εξουσιοδότηση – ακόμα και αν αλλάξει το Host/:authority.
Σενάριο εκμετάλλευσης
- Ο επιτιθέμενος ελέγχει το
evil.com
που επιλύεται στον ίδιο κόμβο CDN με τον στόχοinternal.company
. - Ο περιηγητής του θύματος έχει ήδη μια ανοιχτή σύνδεση HTTP/2 με το
evil.com
. - Ο επιτιθέμενος ενσωματώνει μια κρυφή
<img src="https://internal.company/…">
στη σελίδα του. - Επειδή οι παράμετροι σύνδεσης ταιριάζουν, ο περιηγητής επαναχρησιμοποιεί τη υπάρχουσα σύνδεση TLS και πολλαπλασιάζει το αίτημα για το
internal.company
. - Εάν το CDN/router έχει επικυρώσει μόνο το πρώτο αίτημα, ο εσωτερικός κόμβος εκτίθεται.
PoCs για Chrome/Edge/Firefox είναι διαθέσιμα στην ομιλία του James Kettle “HTTP/2: The Sequel is Always Worse” (Black Hat USA 2023).
Εργαλεία
- Burp Suite 2023.12 εισήγαγε ένα πειραματικό σημείο εισαγωγής HTTP/2 Smuggler που προσπαθεί αυτόματα τη συγκέντρωση και τις τεχνικές TE/CL.
- smuggleFuzz (https://github.com/microsoft/smugglefuzz) – Ένα πλαίσιο Python που κυκλοφόρησε το 2024 για να βρει βίαια διανύσματα desync front-end/back-end μέσω HTTP/2 και HTTP/3, συμπεριλαμβανομένων των παραλλαγών κατάστασης σύνδεσης.
Μετριασμοί
- Πάντα επικυρώστε ξανά το Host/:authority σε κάθε αίτημα, όχι μόνο κατά τη δημιουργία σύνδεσης.
- Απενεργοποιήστε ή περιορίστε αυστηρά τη συγκέντρωση προέλευσης σε επίπεδα CDN/φορτωτή (π.χ.
http2_origin_cn
απενεργοποιημένο στο NGINX). - Αναπτύξτε ξεχωριστά πιστοποιητικά ή διευθύνσεις IP για εσωτερικά και εξωτερικά ονόματα κόμβων ώστε ο περιηγητής να μην μπορεί νομίμως να τα συγκεντρώσει.
- Προτιμήστε το connection: close ή
proxy_next_upstream
μετά από κάθε αίτημα όπου είναι πρακτικό.
Πραγματικές Περιπτώσεις (2022-2025)
Έτος | Συστατικό | CVE | Σημειώσεις |
---|---|---|---|
2022 | AWS Application Load Balancer | – | Ο επικεφαλής Host επικυρώθηκε μόνο στο πρώτο αίτημα; διορθώθηκε με την επιδιόρθωση του μηχανισμού κανόνων (αποκαλύφθηκε από το SecurityLabs). |
2023 | Apache Traffic Server < 9.2.2 | CVE-2023-39852 | Επέτρεψε την εκμετάλλευση αιτημάτων μέσω επαναχρησιμοποίησης σύνδεσης HTTP/2 όταν είχε ρυθμιστεί το CONFIG proxy.config.http.parent_proxy_routing_enable . |
2024 | Envoy Proxy < 1.29.0 | CVE-2024-2470 | Ακατάλληλη επικύρωση του :authority μετά την πρώτη ροή επέτρεψε την εκμετάλλευση αιτημάτων μεταξύ ενοικιαστών σε κοινά δίκτυα. |
Φύλλο Ελέγχου Ανίχνευσης
- Στείλτε δύο αιτήματα στην ίδια σύνδεση TCP/TLS με διαφορετικούς επικεφαλής Host ή :authority.
- Παρατηρήστε αν η δεύτερη απάντηση προέρχεται από τον πρώτο κόμβο (ασφαλές) ή τον δεύτερο κόμβο (ευάλωτο).
- Στο Burp:
Repeat → keep-alive → Send → Follow
. - Όταν δοκιμάζετε HTTP/2, ανοίξτε μια αφιερωμένη ροή (ID 1) για έναν αβλαβή κόμβο, στη συνέχεια πολλαπλασιάστε μια δεύτερη ροή (ID 3) σε έναν εσωτερικό κόμβο και αναζητήστε μια απάντηση.
Αναφορές
- PortSwigger Research – HTTP/2: The Sequel is Always Worse (Black Hat USA 2023)
- Envoy Security Advisory CVE-2024-2470 – Ακατάλληλη επικύρωση εξουσίας
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.