Translated ['src/pentesting-web/http-request-smuggling/README.md'] to el

This commit is contained in:
Translator 2025-08-20 19:29:10 +00:00
parent b5528bab26
commit 295c6f82fe

View File

@ -4,7 +4,7 @@
## Τι είναι
Αυτή η ευπάθεια συμβαίνει όταν μια **αποσυγχρονισμένη** κατάσταση μεταξύ των **proxy front-end** και του **server back-end** επιτρέπει σε έναν **επιτιθέμενο** να **στείλει** ένα HTTP **request** που θα **ερμηνευθεί** ως **ένα μόνο request** από τους **proxy front-end** (load balance/reverse-proxy) και **ως 2 requests** από τον **server back-end**.\
Αυτή η ευπάθεια συμβαίνει όταν μια **αποσυγχρονισμένη** κατάσταση μεταξύ των **proxy front-end** και του **server back-end** επιτρέπει σε έναν **επιτιθέμενο** να **στείλει** ένα HTTP **request** που θα **ερμηνευτεί** ως **ένα μόνο request** από τους **proxy front-end** (load balance/reverse-proxy) και **ως 2 requests** από τον **server back-end**.\
Αυτό επιτρέπει σε έναν χρήστη να **τροποποιήσει το επόμενο request που φτάνει στον server back-end μετά το δικό του**.
### Θεωρία
@ -25,7 +25,7 @@
### Πραγματικότητα
Οι **Front-End** (ένα load-balance / Reverse Proxy) **επεξεργάζονται** την κεφαλίδα _**content-length**_ ή την κεφαλίδα _**transfer-encoding**_ και ο **Back-end** server **επεξεργάζεται την άλλη** προκαλώντας μια **αποσυγχρονισμένη** κατάσταση μεταξύ των 2 συστημάτων.\
Αυτό μπορεί να είναι πολύ κρίσιμο καθώς **ένας επιτιθέμενος θα είναι σε θέση να στείλει ένα request** στον reverse proxy που θα **ερμηνευθεί** από τον **server back-end** **ως 2 διαφορετικά requests**. Ο **κίνδυνος** αυτής της τεχνικής έγκειται στο γεγονός ότι ο **server back-end** **θα ερμηνεύσει** το **2ο request που εισάγεται** σαν να **προήλθε από τον επόμενο πελάτη** και το **πραγματικό request** αυτού του πελάτη θα είναι **μέρος** του **εισαγμένου request**.
Αυτό μπορεί να είναι πολύ κρίσιμο καθώς **ένας επιτιθέμενος θα είναι σε θέση να στείλει ένα request** στον reverse proxy που θα **ερμηνευτεί** από τον **server back-end** **ως 2 διαφορετικά requests**. Ο **κίνδυνος** αυτής της τεχνικής έγκειται στο γεγονός ότι ο **server back-end** **θα ερμηνεύσει** το **2ο request που εισάγεται** σαν να **προήλθε από τον επόμενο πελάτη** και το **πραγματικό request** αυτού του πελάτη θα είναι **μέρος** του **εισαγμένου request**.
### Ιδιαιτερότητες
@ -38,7 +38,7 @@
## Βασικά Παραδείγματα
> [!TIP]
> Όταν προσπαθείτε να εκμεταλλευτείτε αυτό με το Burp Suite **απενεργοποιήστε το `Update Content-Length` και το `Normalize HTTP/1 line endings`** στο repeater γιατί ορισμένα gadgets εκμεταλλεύονται τις νέες γραμμές, τις επιστροφές καροτσιού και τα κακώς διαμορφωμένα content-lengths.
> Όταν προσπαθείτε να εκμεταλλευτείτε αυτό με το Burp Suite **απενεργοποιήστε το `Update Content-Length` και το `Normalize HTTP/1 line endings`** στον επαναλήπτη γιατί ορισμένα gadgets εκμεταλλεύονται τις νέες γραμμές, τις επιστροφές καροτσιού και τα κακώς διαμορφωμένα content-lengths.
Οι επιθέσεις HTTP request smuggling κατασκευάζονται στέλνοντας ασαφή requests που εκμεταλλεύονται τις διαφορές στον τρόπο που οι servers front-end και back-end ερμηνεύουν τις κεφαλίδες `Content-Length` (CL) και `Transfer-Encoding` (TE). Αυτές οι επιθέσεις μπορούν να εκδηλωθούν σε διάφορες μορφές, κυρίως ως **CL.TE**, **TE.CL**, και **TE.TE**. Κάθε τύπος αντιπροσωπεύει έναν μοναδικό συνδυασμό του πώς οι servers front-end και back-end δίνουν προτεραιότητα σε αυτές τις κεφαλίδες. Οι ευπάθειες προκύπτουν από την επεξεργασία του ίδιου request από τους servers με διαφορετικούς τρόπους, οδηγώντας σε απροσδόκητα και δυνητικά κακόβουλα αποτελέσματα.
@ -79,7 +79,7 @@ Foo: x
- **Back-End (CL):** Επεξεργάζεται το request με βάση την κεφαλίδα `Content-Length`.
- **Σενάριο Επίθεσης:**
- Ο επιτιθέμενος στέλνει ένα chunked request όπου το μέγεθος του chunk (`7b`) και το πραγματικό μήκος περιεχομένου (`Content-Length: 4`) δεν ευθυγραμμίζονται.
- Ο επιτιθέμενος στέλνει ένα chunked request όπου το μέγεθος του κομματιού (`7b`) και το πραγματικό μήκος περιεχομένου (`Content-Length: 4`) δεν ευθυγραμμίζονται.
- Ο server front-end, τιμώντας το `Transfer-Encoding`, προωθεί ολόκληρο το request στον back-end.
- Ο server back-end, σεβόμενος το `Content-Length`, επεξεργάζεται μόνο το αρχικό μέρος του request (`7b` bytes), αφήνοντας το υπόλοιπο ως μέρος ενός μη προγραμματισμένου επόμενου request.
- **Παράδειγμα:**
@ -129,9 +129,9 @@ Transfer-Encoding
: chunked
```
#### **CL.CL Σενάριο (Content-Length που χρησιμοποιείται και από τους Front-End και Back-End)**
#### **CL.CL Σενάριο (Content-Length που χρησιμοποιείται και από τους δύο Front-End και Back-End)**
- Και οι δύο servers επεξεργάζονται το request βασισμένο αποκλειστικά στην κεφαλίδα `Content-Length`.
- Και οι δύο servers επεξεργάζονται το request αποκλειστικά με βάση την κεφαλίδα `Content-Length`.
- Αυτό το σενάριο συνήθως δεν οδηγεί σε smuggling, καθώς υπάρχει ευθυγράμμιση στον τρόπο που και οι δύο servers ερμηνεύουν το μήκος του request.
- **Παράδειγμα:**
@ -189,7 +189,7 @@ EMPTY_LINE_HERE
#### Εξανα forcing μέσω κεφαλίδων hop-by-hop
Καταχρώντας τις κεφαλίδες hop-by-hop, θα μπορούσατε να υποδείξετε στον proxy να **διαγράψει την κεφαλίδα Content-Length ή Transfer-Encoding ώστε να είναι δυνατή η κατάχρηση του HTTP request smuggling**.
Καταχρώντας τις κεφαλίδες hop-by-hop μπορείτε να υποδείξετε στον proxy να **διαγράψει την κεφαλίδα Content-Length ή Transfer-Encoding ώστε να είναι δυνατή η κατάχρηση του HTTP request smuggling**.
```
Connection: Content-Length
```
@ -201,7 +201,7 @@ Connection: Content-Length
## Εύρεση HTTP Request Smuggling
Η αναγνώριση ευπαθειών HTTP request smuggling μπορεί συχνά να επιτευχθεί χρησιμοποιώντας τεχνικές χρονομέτρησης, οι οποίες βασίζονται στην παρατήρηση του πόσο χρόνο χρειάζεται ο διακομιστής για να απαντήσει σε παραποιημένα αιτήματα. Αυτές οι τεχνικές είναι ιδιαίτερα χρήσιμες για την ανίχνευση ευπαθειών CL.TE και TE.CL. Εκτός από αυτές τις μεθόδους, υπάρχουν άλλες στρατηγικές και εργαλεία που μπορούν να χρησιμοποιηθούν για να βρουν τέτοιες ευπάθειες:
Η αναγνώριση ευπαθειών HTTP request smuggling μπορεί συχνά να επιτευχθεί χρησιμοποιώντας τεχνικές χρονομέτρησης, οι οποίες βασίζονται στην παρατήρηση του χρόνου που χρειάζεται ο διακομιστής για να απαντήσει σε παραποιημένα αιτήματα. Αυτές οι τεχνικές είναι ιδιαίτερα χρήσιμες για την ανίχνευση ευπαθειών CL.TE και TE.CL. Εκτός από αυτές τις μεθόδους, υπάρχουν άλλες στρατηγικές και εργαλεία που μπορούν να χρησιμοποιηθούν για να βρουν τέτοιες ευπάθειες:
### Εύρεση Ευπαθειών CL.TE Χρησιμοποιώντας Τεχνικές Χρονομέτρησης
@ -227,7 +227,7 @@ A
- Ο διακομιστής back-end, περιμένοντας ένα chunked μήνυμα, περιμένει το επόμενο chunk που ποτέ δεν φτάνει, προκαλώντας καθυστέρηση.
- **Δείκτες:**
- Χρονοouts ή μεγάλες καθυστερήσεις στην απάντηση.
- Χρονοθυρίδες ή μεγάλες καθυστερήσεις στην απάντηση.
- Λήψη σφάλματος 400 Bad Request από τον διακομιστή back-end, μερικές φορές με λεπτομερείς πληροφορίες διακομιστή.
### Εύρεση Ευπαθειών TE.CL Χρησιμοποιώντας Τεχνικές Χρονομέτρησης
@ -259,13 +259,13 @@ X
- **Χρησιμοποιώντας Αυτοματοποιημένα Εργαλεία:**
- Εργαλεία όπως η επέκταση 'HTTP Request Smuggler' του Burp Suite μπορούν αυτόματα να δοκιμάσουν αυτές τις ευπάθειες στέλνοντας διάφορες μορφές ασαφών αιτημάτων και αναλύοντας τις απαντήσεις.
- **Δοκιμές Διαφορετικών Τιμών Content-Length:**
- Στείλτε αιτήματα με διαφορετικές τιμές `Content-Length` που δεν ευθυγραμμίζονται με το πραγματικό μήκος περιεχομένου και παρατηρήστε πώς ο διακομιστής χειρίζεται τέτοιες ασυμφωνίες.
- Στείλτε αιτήματα με μεταβαλλόμενες τιμές `Content-Length` που δεν ευθυγραμμίζονται με το πραγματικό μήκος περιεχομένου και παρατηρήστε πώς ο διακομιστής χειρίζεται τέτοιες ασυμφωνίες.
- **Δοκιμές Διαφορετικών Τιμών Transfer-Encoding:**
- Στείλτε αιτήματα με παραποιημένες ή κακώς διαμορφωμένες κεφαλίδες `Transfer-Encoding` και παρακολουθήστε πώς αντιδρούν διαφορετικά οι διακομιστές front-end και back-end σε τέτοιες παραποιήσεις.
### Δοκιμή Ευπάθειας HTTP Request Smuggling
Αφού επιβεβαιωθεί η αποτελεσματικότητα των τεχνικών χρονομέτρησης, είναι κρίσιμο να επαληθευτεί αν τα αιτήματα του πελάτη μπορούν να παραποιηθούν. Μια απλή μέθοδος είναι να προσπαθήσετε να δηλητηριάσετε τα αιτήματά σας, για παράδειγμα, κάνοντάς το αίτημα προς το `/` να αποδώσει μια απάντηση 404. Τα παραδείγματα `CL.TE` και `TE.CL` που συζητήθηκαν προηγουμένως στο [Basic Examples](#basic-examples) δείχνουν πώς να δηλητηριάσετε ένα αίτημα πελάτη για να προκαλέσετε μια απάντηση 404, παρά το γεγονός ότι ο πελάτης στοχεύει να αποκτήσει πρόσβαση σε έναν διαφορετικό πόρο.
Αφού επιβεβαιωθεί η αποτελεσματικότητα των τεχνικών χρονομέτρησης, είναι κρίσιμο να επαληθευτεί αν τα αιτήματα του πελάτη μπορούν να παραποιηθούν. Μια απλή μέθοδος είναι να προσπαθήσετε να δηλητηριάσετε τα αιτήματά σας, για παράδειγμα, κάνοντάς το αίτημα προς το `/` να αποδώσει μια απάντηση 404. Τα παραδείγματα `CL.TE` και `TE.CL` που συζητήθηκαν προηγουμένως στο [Basic Examples](#basic-examples) δείχνουν πώς να δηλητηριάσετε ένα αίτημα πελάτη για να προκαλέσετε μια απάντηση 404, παρά το γεγονός ότι ο πελάτης στοχεύει να αποκτήσει πρόσβαση σε διαφορετικό πόρο.
**Κύριες Σκέψεις**
@ -273,17 +273,17 @@ X
- **Διακριτές Συνδέσεις Δικτύου:** Τα "επίθεση" και "κανονικά" αιτήματα θα πρέπει να αποστέλλονται μέσω ξεχωριστών συνδέσεων δικτύου. Η χρήση της ίδιας σύνδεσης και για τα δύο δεν επιβεβαιώνει την παρουσία της ευπάθειας.
- **Συνεπής URL και Παράμετροι:** Στοχεύστε να χρησιμοποιήσετε ταυτόσημα URLs και ονόματα παραμέτρων και για τα δύο αιτήματα. Οι σύγχρονες εφαρμογές συχνά δρομολογούν αιτήματα σε συγκεκριμένους διακομιστές back-end με βάση το URL και τις παραμέτρους. Η αντιστοίχιση αυτών αυξάνει την πιθανότητα ότι και τα δύο αιτήματα θα επεξεργαστούν από τον ίδιο διακομιστή, προϋπόθεση για μια επιτυχημένη επίθεση.
- **Χρονομέτρηση και Συνθήκες Αγώνα:** Το "κανονικό" αίτημα, που προορίζεται να ανιχνεύσει την παρέμβαση από το "επίθεση" αίτημα, ανταγωνίζεται άλλα ταυτόχρονα αιτήματα εφαρμογής. Επομένως, στείλτε το "κανονικό" αίτημα αμέσως μετά το "επίθεση" αίτημα. Οι πολυάσχολες εφαρμογές μπορεί να απαιτούν πολλές δοκιμές για την επιβεβαίωση της ευπάθειας.
- **Χρονομέτρηση και Συνθήκες Ανταγωνισμού:** Το "κανονικό" αίτημα, που προορίζεται να ανιχνεύσει την παρέμβαση από το "επίθεση" αίτημα, ανταγωνίζεται άλλα ταυτόχρονα αιτήματα εφαρμογής. Επομένως, στείλτε το "κανονικό" αίτημα αμέσως μετά το "επίθεση" αίτημα. Οι πολυάσχολες εφαρμογές μπορεί να απαιτούν πολλές δοκιμές για την επιβεβαίωση της ευπάθειας.
- **Προκλήσεις Φορτίου Ισορροπίας:** Οι διακομιστές front-end που λειτουργούν ως ισοσταθμιστές φορτίου μπορεί να διανέμουν αιτήματα σε διάφορα συστήματα back-end. Εάν τα "επίθεση" και "κανονικά" αιτήματα καταλήξουν σε διαφορετικά συστήματα, η επίθεση δεν θα επιτύχει. Αυτό το στοιχείο ισορροπίας φορτίου μπορεί να απαιτήσει πολλές προσπάθειες για την επιβεβαίωση μιας ευπάθειας.
- **Ακούσια Επίδραση στους Χρήστες:** Εάν η επίθεσή σας επηρεάσει κατά λάθος το αίτημα άλλου χρήστη (όχι το "κανονικό" αίτημα που στείλατε για ανίχνευση), αυτό υποδεικνύει ότι η επίθεσή σας επηρέασε έναν άλλο χρήστη της εφαρμογής. Η συνεχής δοκιμή θα μπορούσε να διαταράξει άλλους χρήστες, απαιτώντας προσεκτική προσέγγιση.
## Διαχωρισμός των τεχνικών HTTP/1.1 pipelining από την πραγματική request smuggling
Η επαναχρησιμοποίηση συνδέσεων (keep-alive) και το pipelining μπορεί εύκολα να δημιουργήσουν ψευδαισθήσεις "smuggling" σε εργαλεία δοκιμών που στέλνουν πολλαπλά αιτήματα στην ίδια υποδοχή. Μάθετε να διαχωρίζετε αβλαβή στοιχεία πελάτη από πραγματική ασυμφωνία διακομιστή.
Η επαναχρησιμοποίηση συνδέσεων (keep-alive) και η pipelining μπορεί εύκολα να δημιουργήσουν ψευδαισθήσεις "smuggling" σε εργαλεία δοκιμών που στέλνουν πολλαπλά αιτήματα στην ίδια υποδοχή. Μάθετε να διαχωρίζετε αβλαβή στοιχεία πελάτη από πραγματική ασυγχρονία διακομιστή.
### Γιατί το pipelining δημιουργεί κλασικά ψευδώς θετικά
### Γιατί η pipelining δημιουργεί κλασικά ψευδώς θετικά
Το HTTP/1.1 επαναχρησιμοποιεί μια μόνο σύνδεση TCP/TLS και συνενώνει αιτήματα και απαντήσεις στην ίδια ροή. Στο pipelining, ο πελάτης στέλνει πολλαπλά αιτήματα το ένα μετά το άλλο και βασίζεται σε απαντήσεις με τη σειρά. Ένα κοινό ψευδώς θετικό είναι να ξαναστείλετε ένα κακώς διαμορφωμένο payload τύπου CL.0 δύο φορές σε μια μόνο σύνδεση:
Το HTTP/1.1 επαναχρησιμοποιεί μια μόνο σύνδεση TCP/TLS και συνενώνει αιτήματα και απαντήσεις στην ίδια ροή. Στην pipelining, ο πελάτης στέλνει πολλαπλά αιτήματα το ένα μετά το άλλο και βασίζεται σε απαντήσεις με τη σειρά. Ένα κοινό ψευδώς θετικό είναι να ξαναστείλετε ένα κακώς διαμορφωμένο payload τύπου CL.0 δύο φορές σε μια μόνο σύνδεση:
```
POST / HTTP/1.1
Host: hackxor.net
@ -306,7 +306,7 @@ Content-Type: text/plain
User-agent: *
Disallow: /settings
```
Αν ο διακομιστής αγνόησε το κακώς σχηματισμένο `Content_Length`, δεν υπάρχει αποσυγχρονισμός FE↔BE. Με την επαναχρησιμοποίηση, ο πελάτης σας έστειλε πραγματικά αυτό το ρεύμα byte, το οποίο ο διακομιστής ανάλυσε ως δύο ανεξάρτητες αιτήσεις:
Αν ο διακομιστής αγνόησε το κακώς σχηματισμένο `Content_Length`, δεν υπάρχει αποσυγχρονισμός FE↔BE. Με την επαναχρησιμοποίηση, ο πελάτης σας έστειλε πραγματικά αυτό το ρεύμα byte, το οποίο ο διακομιστής το ανέλυσε ως δύο ανεξάρτητες αιτήσεις:
```
POST / HTTP/1.1
Host: hackxor.net
@ -342,20 +342,20 @@ Impact: κανένα. Απλώς αποσυνδέσατε τον πελάτη σ
5. Οπτικοποιήστε το καλώδιο
- Χρησιμοποιήστε την επέκταση Burp "HTTP Hacker" για να επιθεωρήσετε τη συγχώνευση και το πλαίσιο μηνυμάτων απευθείας ενώ πειραματίζεστε με την επαναχρησιμοποίηση και τα μερικά αιτήματα.
### Κλειδωμένη αποστολή αιτημάτων (απαιτείται επαναχρησιμοποίηση)
### Αποστολή αιτημάτων κλειδώματος σύνδεσης (απαιτείται επαναχρησιμοποίηση)
Ορισμένα front-ends επαναχρησιμοποιούν μόνο τη σύνδεση upstream όταν ο πελάτης επαναχρησιμοποιεί τη δική του. Υπάρχει πραγματική αποστολή, αλλά είναι υπό προϋποθέσεις επαναχρησιμοποίησης από την πλευρά του πελάτη. Για να διακρίνετε και να αποδείξετε τον αντίκτυπο:
Ορισμένα front-ends επαναχρησιμοποιούν μόνο τη σύνδεση upstream όταν ο πελάτης επαναχρησιμοποιεί τη δική του. Υπάρχει πραγματική αποστολή αλλά είναι υπό προϋποθέσεις επαναχρησιμοποίησης από την πλευρά του πελάτη. Για να διακρίνετε και να αποδείξετε τον αντίκτυπο:
- Αποδείξτε το σφάλμα από την πλευρά του διακομιστή
- Χρησιμοποιήστε τον έλεγχο εσωτερικής απάντησης HTTP/2, ή
- Χρησιμοποιήστε μερικά αιτήματα για να δείξετε ότι το FE επαναχρησιμοποιεί μόνο το upstream όταν το κάνει ο πελάτης.
- Δείξτε πραγματικό αντίκτυπο ακόμη και αν η άμεση κακή χρήση υποδοχής χρήστη είναι αποκλεισμένη:
- Μολυσμένη προσωρινή αποθήκευση: μολύνετε κοινές προσωρινές αποθήκες μέσω της αποσύνδεσης ώστε οι απαντήσεις να επηρεάζουν άλλους χρήστες.
- Δείξτε πραγματικό αντίκτυπο ακόμη και αν η άμεση κακή χρήση υποδοχής χρηστών είναι αποκλεισμένη:
- Μόλυνση cache: μολύνετε κοινές cache μέσω της αποσύνδεσης ώστε οι απαντήσεις να επηρεάζουν άλλους χρήστες.
- Αποκάλυψη εσωτερικών κεφαλίδων: αντανάκλαση κεφαλίδων που εισάγονται από το FE (π.χ., κεφαλίδες auth/trust) και μετά πηγαίνετε σε παράκαμψη αυθεντικοποίησης.
- Παράκαμψη ελέγχων FE: αποστολή περιορισμένων διαδρομών/μεθόδων πέρα από το front-end.
- Κακή χρήση κεφαλίδας host: συνδυάστε με ιδιορρυθμίες δρομολόγησης host για να μεταβείτε σε εσωτερικούς vhosts.
- Παράκαμψη ελέγχων FE: αποστείλετε περιορισμένα μονοπάτια/μεθόδους πέρα από το front-end.
- Κακή χρήση κεφαλίδας host: συνδυάστε με ιδιοτροπίες δρομολόγησης host για να μεταβείτε σε εσωτερικά vhosts.
- Ροή εργασίας χειριστή
- Αναπαραγωγή με ελεγχόμενη επαναχρησιμοποίηση (Turbo Intruder `requestsPerConnection=2`, ή ομάδα καρτελών Burp Repeater → "Αποστολή ομάδας σε σειρά (μία σύνδεση)").
- Στη συνέχεια, αλυσίδα σε μολυσμένα/κεφαλίδα-διαρροής/παράκαμψη ελέγχου και δείξτε αντίκτυπο διασύνδεσης χρήστη ή εξουσιοδότησης.
- Στη συνέχεια, αλυσίδα σε primitives μόλυνσης cache/διαρροής κεφαλίδων/παράκαμψης ελέγχου και δείξτε αντίκτυπο διασύνδεσης χρηστών ή εξουσιοδότησης.
> Δείτε επίσης επιθέσεις κατάστασης σύνδεσης, οι οποίες σχετίζονται στενά αλλά δεν είναι τεχνικά αποστολή:
>
@ -365,27 +365,27 @@ Impact: κανένα. Απλώς αποσυνδέσατε τον πελάτη σ
### Περιορισμοί αποσύνδεσης από την πλευρά του πελάτη
Αν στοχεύετε σε αποσύνδεση από την πλευρά του πελάτη/προγράμματος περιήγησης, το κακόβουλο αίτημα πρέπει να μπορεί να σταλεί από ένα πρόγραμμα περιήγησης διασυνοριακά. Τεχνάσματα απόκρυψης κεφαλίδων δεν θα λειτουργήσουν. Επικεντρωθείτε σε πρωτόκολλα που είναι προσβάσιμα μέσω πλοήγησης/λήψης, και στη συνέχεια μεταβείτε σε μολυσμένη προσωρινή αποθήκευση, αποκάλυψη κεφαλίδων ή παράκαμψη ελέγχου front-end όπου τα downstream στοιχεία αντικατοπτρίζουν ή αποθηκεύουν απαντήσεις.
Αν στοχεύετε σε αποσύνδεση από την πλευρά του πελάτη/του προγράμματος περιήγησης, το κακόβουλο αίτημα πρέπει να μπορεί να σταλεί από ένα πρόγραμμα περιήγησης διασυνοριακά. Τεχνάσματα απόκρυψης κεφαλίδων δεν θα λειτουργήσουν. Επικεντρωθείτε σε primitives που είναι προσβάσιμα μέσω πλοήγησης/λήψης, και στη συνέχεια μεταβείτε σε μόλυνση cache, αποκάλυψη κεφαλίδων ή παράκαμψη ελέγχου front-end όπου τα downstream στοιχεία αντικατοπτρίζουν ή αποθηκεύουν απαντήσεις.
Για υπόβαθρο και ροές εργασίας από άκρο σε άκρο:
{{#ref}}
-browser-http-request-smuggling.md
browser-http-request-smuggling.md
{{#endref}}
### Εργαλεία για βοήθεια στην απόφαση
- HTTP Hacker (Burp BApp Store): αποκαλύπτει χαμηλού επιπέδου συμπεριφορά HTTP και συγχώνευση υποδοχών.
- HTTP Hacker (Burp BApp Store): εκθέτει χαμηλού επιπέδου συμπεριφορά HTTP και συγχώνευση υποδοχών.
- "Αποστολή ή προσωρινή αποθήκευση;" Burp Repeater Custom Action: https://github.com/PortSwigger/bambdas/blob/main/CustomAction/SmugglingOrPipelining.bambda
- Turbo Intruder: ακριβής έλεγχος της επαναχρησιμοποίησης σύνδεσης μέσω `requestsPerConnection`.
- Burp HTTP Request Smuggler: περιλαμβάνει μια δοκιμή κατάστασης σύνδεσης για να εντοπίσει τη δρομολόγηση/επικύρωση πρώτου αιτήματος.
> [!NOTE]
> Αντιμετωπίστε τα αποτελέσματα μόνο επαναχρησιμοποίησης ως μη ζητήματα εκτός αν μπορείτε να αποδείξετε αποσύνδεση από την πλευρά του διακομιστή και να συνδέσετε συγκεκριμένο αντίκτυπο (μολυσμένο αντικείμενο προσωρινής αποθήκευσης, διαρροή εσωτερικής κεφαλίδας που επιτρέπει παράκαμψη προνομίων, παρακάμψη ελέγχου FE, κ.λπ.).
> Αντιμετωπίστε τις επιδράσεις μόνο επαναχρησιμοποίησης ως μη ζητήματα εκτός αν μπορείτε να αποδείξετε αποσύνδεση από την πλευρά του διακομιστή και να συνδέσετε συγκεκριμένο αντίκτυπο (μολυσμένο αντικείμενο cache, διαρροή εσωτερικής κεφαλίδας που επιτρέπει παράκαμψη προνομίων, παρακάμψη ελέγχου FE, κ.λπ.).
## Κακή χρήση HTTP Request Smuggling
### Παράκαμψη Ασφαλείας Front-End μέσω HTTP Request Smuggling
### Παράκαμψη ασφάλειας Front-End μέσω HTTP Request Smuggling
Μερικές φορές, οι front-end διακομιστές επιβάλλουν μέτρα ασφαλείας, εξετάζοντας τα εισερχόμενα αιτήματα. Ωστόσο, αυτά τα μέτρα μπορούν να παρακαμφθούν εκμεταλλευόμενα το HTTP Request Smuggling, επιτρέποντας μη εξουσιοδοτημένη πρόσβαση σε περιορισμένα endpoints. Για παράδειγμα, η πρόσβαση στο `/admin` μπορεί να απαγορεύεται εξωτερικά, με τον front-end διακομιστή να μπλοκάρει ενεργά τέτοιες προσπάθειες. Παρ' όλα αυτά, αυτός ο διακομιστής μπορεί να παραλείψει να εξετάσει τις ενσωματωμένες αιτήσεις μέσα σε ένα λαθραίο HTTP αίτημα, αφήνοντας ένα παραθυράκι για την παράκαμψη αυτών των περιορισμών.
@ -426,13 +426,13 @@ a=x
0
```
Αντίθετα, στην επίθεση TE.CL, το αρχικό `POST` αίτημα χρησιμοποιεί `Transfer-Encoding: chunked`, και το επόμενο ενσωματωμένο αίτημα επεξεργάζεται με βάση την κεφαλίδα `Content-Length`. Παρόμοια με την επίθεση CL.TE, ο πρόξενος του front-end παραβλέπει το λαθραίο αίτημα `GET /admin`, παραχωρώντας ακούσια πρόσβαση στη περιορισμένη διαδρομή `/admin`.
Αντίθετα, στην επίθεση TE.CL, το αρχικό `POST` αίτημα χρησιμοποιεί `Transfer-Encoding: chunked`, και το επόμενο ενσωματωμένο αίτημα επεξεργάζεται με βάση την κεφαλίδα `Content-Length`. Παρόμοια με την επίθεση CL.TE, ο προεπιλεγμένος διακομιστής παρακάμπτει το λαθραίο αίτημα `GET /admin`, παραχωρώντας ακούσια πρόσβαση στο περιορισμένο `/admin` μονοπάτι.
### Αποκάλυψη αναδιατύπωσης αιτημάτων front-end <a href="#revealing-front-end-request-rewriting" id="revealing-front-end-request-rewriting"></a>
### Αποκάλυψη αναδιατύπωσης αιτήματος front-end <a href="#revealing-front-end-request-rewriting" id="revealing-front-end-request-rewriting"></a>
Οι εφαρμογές συχνά χρησιμοποιούν έναν **server front-end** για να τροποποιούν τα εισερχόμενα αιτήματα πριν τα περάσουν στον server back-end. Μια τυπική τροποποίηση περιλαμβάνει την προσθήκη κεφαλίδων, όπως `X-Forwarded-For: <IP του πελάτη>`, για να μεταφέρει τη διεύθυνση IP του πελάτη στον back-end. Η κατανόηση αυτών των τροποποιήσεων μπορεί να είναι κρίσιμη, καθώς μπορεί να αποκαλύψει τρόπους για **να παρακαμφθούν οι προστασίες** ή **να αποκαλυφθούν κρυμμένες πληροφορίες ή σημεία πρόσβασης**.
Οι εφαρμογές συχνά χρησιμοποιούν έναν **διακομιστή front-end** για να τροποποιούν τα εισερχόμενα αιτήματα πριν τα περάσουν στον διακομιστή back-end. Μια τυπική τροποποίηση περιλαμβάνει την προσθήκη κεφαλίδων, όπως `X-Forwarded-For: <IP του πελάτη>`, για να μεταφέρει τη διεύθυνση IP του πελάτη στον back-end. Η κατανόηση αυτών των τροποποιήσεων μπορεί να είναι κρίσιμη, καθώς μπορεί να αποκαλύψει τρόπους για **να παρακαμφθούν οι προστασίες** ή **να αποκαλυφθούν κρυφές πληροφορίες ή σημεία πρόσβασης**.
Για να ερευνήσετε πώς ένας πρόξενος τροποποιεί ένα αίτημα, εντοπίστε μια παράμετρο POST που ο back-end επαναλαμβάνει στην απάντηση. Στη συνέχεια, δημιουργήστε ένα αίτημα, χρησιμοποιώντας αυτή την παράμετρο τελευταία, παρόμοια με το εξής:
Για να ερευνήσετε πώς ένας διακομιστής μεσολάβησης τροποποιεί ένα αίτημα, εντοπίστε μια παράμετρο POST που ο διακομιστής back-end επαναλαμβάνει στην απάντηση. Στη συνέχεια, δημιουργήστε ένα αίτημα, χρησιμοποιώντας αυτή την παράμετρο τελευταία, παρόμοια με το εξής:
```
POST / HTTP/1.1
Host: vulnerable-website.com
@ -485,7 +485,7 @@ csrf=gpGAVAbj7pKq7VfFh45CAICeFCnancCM&postId=4&name=asdfghjklo&email=email%40ema
Ωστόσο, αυτή η τεχνική έχει περιορισμούς. Γενικά, καταγράφει δεδομένα μόνο μέχρι τον διαχωριστή παραμέτρου που χρησιμοποιείται στο λαθραίο αίτημα. Για υποβολές φορμών με κωδικοποίηση URL, αυτός ο διαχωριστής είναι ο χαρακτήρας `&`. Αυτό σημαίνει ότι το καταγεγραμμένο περιεχόμενο από το αίτημα του θύματος θα σταματήσει στον πρώτο `&`, ο οποίος μπορεί ακόμη και να είναι μέρος της συμβολοσειράς ερωτήματος.
Επιπλέον, αξίζει να σημειωθεί ότι αυτή η προσέγγιση είναι επίσης βιώσιμη με μια ευπάθεια TE.CL. Σε τέτοιες περιπτώσεις, το αίτημα θα πρέπει να ολοκληρώνεται με `search=\r\n0`. Ανεξαρτήτως χαρακτήρων νέας γραμμής, οι τιμές θα προστεθούν στην παράμετρο αναζήτησης.
Επιπλέον, αξίζει να σημειωθεί ότι αυτή η προσέγγιση είναι επίσης εφικτή με μια ευπάθεια TE.CL. Σε τέτοιες περιπτώσεις, το αίτημα θα πρέπει να ολοκληρωθεί με `search=\r\n0`. Ανεξαρτήτως χαρακτήρων νέας γραμμής, οι τιμές θα προστεθούν στην παράμετρο αναζήτησης.
### Χρήση HTTP request smuggling για την εκμετάλλευση του Reflected XSS
@ -519,7 +519,7 @@ A=
1. Να ξεκινήσει ένα `POST` αίτημα, φαινομενικά τυπικό, με ένα `Transfer-Encoding: chunked` header για να υποδείξει την αρχή της λαθραίας μεταφοράς.
2. Να ακολουθήσει με ένα `0`, που σηματοδοτεί το τέλος του σώματος του chunked μηνύματος.
3. Στη συνέχεια, εισάγεται ένα λαθραίο `GET` αίτημα, όπου το `User-Agent` header είναι εγχυμένο με ένα script, `<script>alert(1)</script>`, που ενεργοποιεί το XSS όταν ο διακομιστής επεξεργάζεται αυτό το επόμενο αίτημα.
3. Στη συνέχεια, εισάγεται ένα λαθραίο `GET` αίτημα, όπου το header `User-Agent` είναι εγχυμένο με ένα script, `<script>alert(1)</script>`, που ενεργοποιεί το XSS όταν ο διακομιστής επεξεργάζεται αυτό το επόμενο αίτημα.
Με την παραποίηση του `User-Agent` μέσω της λαθραίας μεταφοράς, το payload παρακάμπτει τους κανονικούς περιορισμούς αιτημάτων, εκμεταλλευόμενο έτσι την ευπάθεια Reflected XSS με έναν μη τυπικό αλλά αποτελεσματικό τρόπο.
@ -530,11 +530,11 @@ A=
Η έκδοση HTTP/0.9 ήταν προηγούμενη της 1.0 και χρησιμοποιεί μόνο **GET** ρήματα και **δεν** απαντά με **headers**, μόνο το σώμα.
Στην [**παρούσα αναφορά**](https://mizu.re/post/twisty-python), αυτό εκμεταλλεύτηκε με μια λαθραία μεταφορά αιτήματος και ένα **ευάλωτο endpoint που θα απαντήσει με την είσοδο του χρήστη** για να λαθραία μεταφέρει ένα αίτημα με HTTP/0.9. Η παράμετρος που θα αντανακλαστεί στην απάντηση περιείχε μια **ψεύτικη απάντηση HTTP/1.1 (με headers και σώμα)** έτσι ώστε η απάντηση να περιέχει έγκυρο εκτελέσιμο JS κώδικα με `Content-Type` `text/html`.
Σε [**αυτή τη γραφή**](https://mizu.re/post/twisty-python), αυτό εκμεταλλεύτηκε με μια λαθραία μεταφορά αιτήματος και ένα **ευάλωτο endpoint που θα απαντήσει με την είσοδο του χρήστη** για να λαθραία μεταφέρει ένα αίτημα με HTTP/0.9. Η παράμετρος που θα αντανακλαστεί στην απάντηση περιείχε μια **ψεύτικη απάντηση HTTP/1.1 (με headers και σώμα)** έτσι ώστε η απάντηση να περιέχει έγκυρο εκτελέσιμο JS κώδικα με `Content-Type` `text/html`.
### Εκμετάλλευση Εντός Ιστοσελίδων Ανακατευθύνσεων με HTTP Request Smuggling <a href="#exploiting-on-site-redirects-with-http-request-smuggling" id="exploiting-on-site-redirects-with-http-request-smuggling"></a>
### Εκμετάλλευση Εντός Σελίδας Ανακατευθύνσεων με HTTP Request Smuggling <a href="#exploiting-on-site-redirects-with-http-request-smuggling" id="exploiting-on-site-redirects-with-http-request-smuggling"></a>
Οι εφαρμογές συχνά ανακατευθύνουν από μια διεύθυνση URL σε άλλη χρησιμοποιώντας το hostname από το `Host` header στην ανακατευθυνόμενη URL. Αυτό είναι κοινό με διακομιστές ιστού όπως οι Apache και IIS. Για παράδειγμα, η αίτηση ενός φακέλου χωρίς τελικό slash έχει ως αποτέλεσμα μια ανακατεύθυνση για να συμπεριληφθεί το slash:
Οι εφαρμογές συχνά ανακατευθύνουν από μια διεύθυνση URL σε άλλη χρησιμοποιώντας το hostname από το header `Host` στην ανακατευθυνόμενη URL. Αυτό είναι κοινό με διακομιστές ιστού όπως ο Apache και ο IIS. Για παράδειγμα, η αίτηση ενός φακέλου χωρίς τελικό slash έχει ως αποτέλεσμα μια ανακατεύθυνση για να συμπεριληφθεί το slash:
```
GET /home HTTP/1.1
Host: normal-website.com
@ -570,7 +570,7 @@ Host: vulnerable-website.com
HTTP/1.1 301 Moved Permanently
Location: https://attacker-website.com/home/
```
Σε αυτό το σενάριο, το αίτημα ενός χρήστη για ένα αρχείο JavaScript έχει υποκλαπεί. Ο επιτιθέμενος μπορεί δυνητικά να συμβιβάσει τον χρήστη παρέχοντας κακόβουλο JavaScript ως απάντηση.
Σε αυτό το σενάριο, το αίτημα ενός χρήστη για ένα αρχείο JavaScript παρεμποδίζεται. Ο επιτιθέμενος μπορεί δυνητικά να συμβιβάσει τον χρήστη παρέχοντας κακόβουλο JavaScript ως απάντηση.
### Εκμετάλλευση της Δηλητηρίασης Cache Ιστοσελίδας μέσω HTTP Request Smuggling <a href="#exploiting-web-cache-poisoning-via-http-request-smuggling" id="exploiting-web-cache-poisoning-via-http-request-smuggling"></a>
@ -580,7 +580,7 @@ Location: https://attacker-website.com/home/
Αυτή η τεχνική γίνεται ιδιαίτερα ισχυρή αν ανακαλυφθεί μια **ευπάθεια Open Redirect** ή αν υπάρχει **ανακατεύθυνση στον ιστότοπο σε μια ανοιχτή ανακατεύθυνση**. Τέτοιες ευπάθειες μπορούν να εκμεταλλευτούν για να αντικαταστήσουν το αποθηκευμένο περιεχόμενο του `/static/include.js` με ένα σενάριο υπό τον έλεγχο του επιτιθέμενου, επιτρέποντας ουσιαστικά μια εκτενή επίθεση Cross-Site Scripting (XSS) σε όλους τους πελάτες που ζητούν το ενημερωμένο `/static/include.js`.
Παρακάτω είναι μια απεικόνιση της εκμετάλλευσης της **δηλητηρίασης cache σε συνδυασμό με μια ανακατεύθυνση στον ιστότοπο σε ανοιχτή ανακατεύθυνση**. Ο στόχος είναι να τροποποιηθεί το περιεχόμενο της cache του `/static/include.js` για να εξυπηρετήσει κώδικα JavaScript υπό τον έλεγχο του επιτιθέμενου:
Παρακάτω παρατίθεται μια απεικόνιση της εκμετάλλευσης **δηλητηρίασης cache σε συνδυασμό με μια ανακατεύθυνση στον ιστότοπο σε ανοιχτή ανακατεύθυνση**. Ο στόχος είναι να τροποποιηθεί το περιεχόμενο της cache του `/static/include.js` για να εξυπηρετήσει κώδικα JavaScript που ελέγχεται από τον επιτιθέμενο:
```
POST / HTTP/1.1
Host: vulnerable.net
@ -598,20 +598,20 @@ Content-Length: 10
x=1
```
Σημειώστε το ενσωματωμένο αίτημα που στοχεύει το `/post/next?postId=3`. Αυτό το αίτημα θα ανακατευθυνθεί στο `/post?postId=4`, χρησιμοποιώντας την **τιμή κεφαλίδας Host** για να προσδιορίσει το domain. Αλλάζοντας την **κεφαλίδα Host**, ο επιτιθέμενος μπορεί να ανακατευθύνει το αίτημα στο domain του (**on-site redirect to open redirect**).
Σημειώστε το ενσωματωμένο αίτημα που στοχεύει το `/post/next?postId=3`. Αυτό το αίτημα θα ανακατευθυνθεί στο `/post?postId=4`, χρησιμοποιώντας την **τιμή κεφαλίδας Host** για να προσδιορίσει το domain. Αλλάζοντας την **κεφαλίδα Host**, ο επιτιθέμενος μπορεί να ανακατευθύνει το αίτημα στο domain του (**ανακατεύθυνση εντός του ιστότοπου σε ανοιχτή ανακατεύθυνση**).
Μετά από επιτυχή **socket poisoning**, θα πρέπει να ξεκινήσει ένα **GET request** για το `/static/include.js`. Αυτό το αίτημα θα μολυνθεί από το προηγούμενο αίτημα **on-site redirect to open redirect** και θα ανακτήσει το περιεχόμενο του script που ελέγχεται από τον επιτιθέμενο.
Μετά από επιτυχή **δηλητηρίαση socket**, θα πρέπει να ξεκινήσει ένα **GET αίτημα** για το `/static/include.js`. Αυτό το αίτημα θα μολυνθεί από το προηγούμενο αίτημα **ανακατεύθυνσης εντός του ιστότοπου σε ανοιχτή ανακατεύθυνση** και θα ανακτήσει το περιεχόμενο του script που ελέγχεται από τον επιτιθέμενο.
Στη συνέχεια, οποιοδήποτε αίτημα για το `/static/include.js` θα εξυπηρετήσει το αποθηκευμένο περιεχόμενο του script του επιτιθέμενου, εκκινώντας αποτελεσματικά μια ευρεία επίθεση XSS.
Στη συνέχεια, οποιοδήποτε αίτημα για το `/static/include.js` θα εξυπηρετεί το αποθηκευμένο περιεχόμενο του script του επιτιθέμενου, εκκινώντας αποτελεσματικά μια ευρεία επίθεση XSS.
### Using HTTP request smuggling to perform web cache deception <a href="#using-http-request-smuggling-to-perform-web-cache-deception" id="using-http-request-smuggling-to-perform-web-cache-deception"></a>
### Χρήση HTTP request smuggling για την εκτέλεση απάτης web cache <a href="#using-http-request-smuggling-to-perform-web-cache-deception" id="using-http-request-smuggling-to-perform-web-cache-deception"></a>
> **Ποια είναι η διαφορά μεταξύ web cache poisoning και web cache deception;**
> **Ποια είναι η διαφορά μεταξύ δηλητηρίασης web cache και απάτης web cache;**
>
> - Στο **web cache poisoning**, ο επιτιθέμενος προκαλεί την εφαρμογή να αποθηκεύσει κάποιο κακόβουλο περιεχόμενο στην cache, και αυτό το περιεχόμενο εξυπηρετείται από την cache σε άλλους χρήστες της εφαρμογής.
> - Στο **web cache deception**, ο επιτιθέμενος προκαλεί την εφαρμογή να αποθηκεύσει κάποιο ευαίσθητο περιεχόμενο που ανήκει σε άλλο χρήστη στην cache, και στη συνέχεια ο επιτιθέμενος ανακτά αυτό το περιεχόμενο από την cache.
> - Στη **δηλητηρίαση web cache**, ο επιτιθέμενος προκαλεί την εφαρμογή να αποθηκεύσει κάποιο κακόβουλο περιεχόμενο στην cache, και αυτό το περιεχόμενο εξυπηρετείται από την cache σε άλλους χρήστες της εφαρμογής.
> - Στην **απάτη web cache**, ο επιτιθέμενος προκαλεί την εφαρμογή να αποθηκεύσει κάποιο ευαίσθητο περιεχόμενο που ανήκει σε άλλο χρήστη στην cache, και ο επιτιθέμενος στη συνέχεια ανακτά αυτό το περιεχόμενο από την cache.
Ο επιτιθέμενος κατασκευάζει ένα μολυσμένο αίτημα που ανακτά ευαίσθητο περιεχόμενο συγκεκριμένο για τον χρήστη. Σκεφτείτε το παρακάτω παράδειγμα:
Ο επιτιθέμενος κατασκευάζει ένα μυστικό αίτημα που ανακτά ευαίσθητο περιεχόμενο συγκεκριμένο για τον χρήστη. Σκεφτείτε το παρακάτω παράδειγμα:
```markdown
`POST / HTTP/1.1`\
`Host: vulnerable-website.com`\
@ -622,11 +622,11 @@ x=1
`GET /private/messages HTTP/1.1`\
`Foo: X`
```
Αν αυτή η λαθραία αίτηση δηλητηριάσει μια καταχώρηση cache που προορίζεται για στατικό περιεχόμενο (π.χ., `/someimage.png`), τα ευαίσθητα δεδομένα του θύματος από το `/private/messages` μπορεί να αποθηκευτούν κάτω από την καταχώρηση cache του στατικού περιεχομένου. Ως εκ τούτου, ο επιτιθέμενος θα μπορούσε ενδεχομένως να ανακτήσει αυτά τα αποθηκευμένα ευαίσθητα δεδομένα.
Αν αυτή η λαθραία αίτηση δηλητηριάσει μια είσοδο cache που προορίζεται για στατικό περιεχόμενο (π.χ., `/someimage.png`), τα ευαίσθητα δεδομένα του θύματος από το `/private/messages` μπορεί να αποθηκευτούν στην είσοδο cache του στατικού περιεχομένου. Ως εκ τούτου, ο επιτιθέμενος θα μπορούσε ενδεχομένως να ανακτήσει αυτά τα αποθηκευμένα ευαίσθητα δεδομένα.
### Κατάχρηση του TRACE μέσω HTTP Request Smuggling <a href="#exploiting-web-cache-poisoning-via-http-request-smuggling" id="exploiting-web-cache-poisoning-via-http-request-smuggling"></a>
[**Σε αυτή την ανάρτηση**](https://portswigger.net/research/trace-desync-attack) προτείνεται ότι αν ο διακομιστής έχει ενεργοποιημένη τη μέθοδο TRACE, θα μπορούσε να είναι δυνατό να την καταχραστεί με ένα HTTP Request Smuggling. Αυτό συμβαίνει επειδή αυτή η μέθοδος θα ανακλά οποιοδήποτε header σταλεί στον διακομιστή ως μέρος του σώματος της απάντησης. Για παράδειγμα:
[**Σε αυτή την ανάρτηση**](https://portswigger.net/research/trace-desync-attack) προτείνεται ότι αν ο διακομιστής έχει ενεργοποιημένη τη μέθοδο TRACE, θα μπορούσε να είναι δυνατό να καταχραστεί με ένα HTTP Request Smuggling. Αυτό συμβαίνει επειδή αυτή η μέθοδος θα ανακλά οποιοδήποτε κεφαλίδα σταλεί στον διακομιστή ως μέρος του σώματος της απάντησης. Για παράδειγμα:
```
TRACE / HTTP/1.1
Host: example.com
@ -672,7 +672,7 @@ Content-Length: 44\r\n
\r\n
<script>alert("response splitting")</script>
```
Θα δημιουργήσει αυτές τις απαντήσεις (σημειώστε πώς η απάντηση HEAD έχει ένα Content-Length που καθιστά την απάντηση TRACE μέρος του σώματος της HEAD και μόλις τελειώσει το Content-Length της HEAD, μια έγκυρη HTTP απάντηση είναι λαθραία):
Θα δημιουργήσει αυτές τις απαντήσεις (σημειώστε πώς η απάντηση HEAD έχει ένα Content-Length που καθιστά την απάντηση TRACE μέρος του σώματος HEAD και μόλις τελειώσει το Content-Length HEAD, μια έγκυρη HTTP απάντηση είναι λαθραία):
```
HTTP/1.1 200 OK
Content-Type: text/html
@ -811,7 +811,7 @@ table.add(req)
- [https://github.com/gwen001/pentest-tools/blob/master/smuggler.py](https://github.com/gwen001/pentest-tools/blob/master/smuggler.py)
- [https://github.com/defparam/smuggler](https://github.com/defparam/smuggler)
- [https://github.com/Moopinger/smugglefuzz](https://github.com/Moopinger/smugglefuzz)
- [https://github.com/bahruzjabiyev/t-reqs-http-fuzzer](https://github.com/bahruzjabiyev/t-reqs-http-fuzzer): Αυτό το εργαλείο είναι ένας γραμματικός HTTP Fuzzer χρήσιμος για την εύρεση παράξενων αποκλίσεων συγχώνευσης αιτημάτων.
- [https://github.com/bahruzjabiyev/t-reqs-http-fuzzer](https://github.com/bahruzjabiyev/t-reqs-http-fuzzer): Αυτό το εργαλείο είναι ένας γραμματικός HTTP Fuzzer χρήσιμος για την ανεύρεση παράξενων αποκλίσεων συγχώνευσης αιτημάτων.
## Αναφορές
@ -824,10 +824,10 @@ table.add(req)
- [https://standoff365.com/phdays10/schedule/tech/http-request-smuggling-via-higher-http-versions/](https://standoff365.com/phdays10/schedule/tech/http-request-smuggling-via-higher-http-versions/)
- [https://portswigger.net/research/trace-desync-attack](https://portswigger.net/research/trace-desync-attack)
- [https://www.bugcrowd.com/blog/unveiling-te-0-http-request-smuggling-discovering-a-critical-vulnerability-in-thousands-of-google-cloud-websites/](https://www.bugcrowd.com/blog/unveiling-te-0-http-request-smuggling-discovering-a-critical-vulnerability-in-thousands-of-google-cloud-websites/)
- Προσοχή στην ψευδή θετική: πώς να διακρίνετε την HTTP pipelining από τη συγχώνευση αιτημάτων [https://portswigger.net/research/how-to-distinguish-http-pipelining-from-request-smuggling](https://portswigger.net/research/how-to-distinguish-http-pipelining-from-request-smuggling)
- Προσοχή στο ψευδώς θετικό: πώς να διακρίνετε την HTTP pipelining από τη συγχώνευση αιτημάτων [https://portswigger.net/research/how-to-distinguish-http-pipelining-from-request-smuggling](https://portswigger.net/research/how-to-distinguish-http-pipelining-from-request-smuggling)
- [https://http1mustdie.com/](https://http1mustdie.com/)
- Επιθέσεις Desync με Ικανότητα Περιηγητή [https://portswigger.net/research/browser-powered-desync-attacks](https://portswigger.net/research/browser-powered-desync-attacks)
- PortSwigger Academy desync πλευράς πελάτη [https://portswigger.net/web-security/request-smuggling/browser/client-side-desync](https://portswigger.net/web-security/request-smuggling/browser/client-side-desync)
- PortSwigger Academy επιθέσεις desync από την πλευρά του πελάτη [https://portswigger.net/web-security/request-smuggling/browser/client-side-desync](https://portswigger.net/web-security/request-smuggling/browser/client-side-desync)
{{#include ../../banners/hacktricks-training.md}}