mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-27 15:12:11 +00:00
85 lines
9.5 KiB
Markdown
85 lines
9.5 KiB
Markdown
# Απάτη HTTP Response Smuggling / Desync
|
||
|
||
<details>
|
||
|
||
<summary><strong>Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||
|
||
Άλλοι τρόποι υποστήριξης του HackTricks:
|
||
|
||
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF**, ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
|
||
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||
* **Μοιραστείτε τα κόλπα σας στο hacking υποβάλλοντας PRs** στα αποθετήρια [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) στο github.
|
||
|
||
</details>
|
||
|
||
**Η τεχνική αυτής της ανάρτησης προήλθε από το βίντεο: [https://www.youtube.com/watch?v=suxDcYViwao\&t=1343s](https://www.youtube.com/watch?v=suxDcYViwao\&t=1343s)**
|
||
|
||
|
||
## Αποσυντονισμός Ουράς Αιτημάτων HTTP
|
||
|
||
Καταρχήν, αυτή η τεχνική **καταχράται μια ευπάθεια HTTP Request Smuggling**, οπότε πρέπει να ξέρετε τι είναι αυτό:
|
||
|
||
Η **κύρια** **διαφορά** ανάμεσα σε αυτήν την τεχνική και σε μια συνηθισμένη επίθεση HTTP Request smuggling είναι ότι αντί να επιτεθούμε στο αίτημα του θύματος προσθέτοντας ένα πρόθεμα, θα διαρρεύσουμε ή θα τροποποιήσουμε την απάντηση που λαμβάνει το θύμα. Αυτό γίνεται αποσυντονίζοντας την ουρά απαντήσεων των διαμεσολαβητών, αντί να στείλουμε 1 αίτημα και μισό για να καταχραστούμε το HTTP Request smuggling, θα στείλουμε 2 πλήρη αιτήματα για να αποσυντονίσουμε την ουρά απαντήσεων των διαμεσολαβητών.
|
||
|
||
Αυτό γίνεται επειδή θα είμαστε σε θέση να αποσυντονίσουμε την ουρά απάντησης, έτσι ώστε η απάντηση από το νόμιμο αίτημα του θύματος να σταλεί στον επιτιθέμενο, ή να εισαγάγουμε περιεχόμενο που ελέγχεται από τον επιτιθέμενο στην απάντηση προς το θύμα.
|
||
|
||
### Αποσυντονισμός Ουράς HTTP Pipeline
|
||
|
||
Το HTTP/1.1 επιτρέπει να ζητηθούν **διάφοροι πόροι χωρίς να χρειάζεται να περιμένουμε για τους προηγούμενους**. Επομένως, αν υπάρχει ένας **διαμεσολαβητής** στη **μέση**, είναι η δουλειά των διαμεσολαβητών να **διατηρούν μια συγχρονισμένη αντιστοίχιση των αιτημάτων που στέλνονται στον πίσω χώρο και των απαντήσεων που προέρχονται από αυτόν**.
|
||
|
||
Ωστόσο, υπάρχει ένα πρόβλημα με τον αποσυντονισμό της ουράς απαντήσεων. Εάν ένας επιτιθέμενος στείλει μια επίθεση HTTP Response smuggling και οι απαντήσεις στο **αρχικό αίτημα και το καταχραστικό αίτημα απαντηθούν αμέσως**, η καταχραστική απάντηση δεν θα εισαχθεί στην ουρά της απάντησης του θύματος, αλλά θα **απορριφθεί απλά ως σφάλμα**.
|
||
|
||
![](<../.gitbook/assets/image (635) (1) (1) (1).png>)
|
||
|
||
Επομένως, είναι απαραίτητο να απαιτείται ότι το **κ
|
||
### Σύγχυση Περιεχομένου
|
||
|
||
Ακολουθώντας το προηγούμενο παράδειγμα, γνωρίζοντας ότι μπορείς να **ελέγξεις το σώμα** του αιτήματος του οποίου η απόκριση θα λάβει ο θύμα και ότι μια **απόκριση HEAD** συνήθως περιέχει στις κεφαλίδες της το **Content-Type και το Content-Length**, μπορείς να **στείλεις ένα αίτημα όπως το παρακάτω** για να προκαλέσεις XSS στο θύμα χωρίς τη σελίδα να είναι ευάλωτη σε XSS:
|
||
|
||
![](<../.gitbook/assets/image (654) (1) (1) (1) (1).png>)
|
||
|
||
### Δηλητηρίαση Κρυφής Μνήμης
|
||
|
||
Εκμεταλλευόμενος την προηγούμενη επίθεση διασυνοριακής ασυμφωνίας στην απόκριση περιεχομένου, **αν η μνήμη κρατάει την απόκριση στο αίτημα που πραγματοποίησε το θύμα και αυτή η απόκριση είναι μια ενοχλητική που προκαλεί XSS, τότε η μνήμη δηλητηριάζεται**.
|
||
|
||
Κακόβουλο αίτημα που περιέχει το φορτίο του XSS:
|
||
|
||
![](<../.gitbook/assets/image (644) (1).png>)
|
||
|
||
Κακόβουλη απόκριση προς το θύμα που περιέχει την κεφαλίδα που υποδεικνύει στη μνήμη να αποθηκεύσει την απόκριση:
|
||
|
||
![](<../.gitbook/assets/image (629) (1).png>)
|
||
|
||
{% hint style="warning" %}
|
||
Σημειώστε ότι σε αυτήν την περίπτωση, αν ο **"θύτης" είναι ο επιτιθέμενος**, τότε μπορεί να πραγματοποιήσει **δηλητηρίαση κρυφής μνήμης σε αυθαίρετα URLs**, καθώς μπορεί να **ελέγξει το URL που θα αποθηκευτεί στη μνήμη** με την κακόβουλη απόκριση.
|
||
{% endhint %}
|
||
|
||
### Απάτη Παραπλάνησης Προσωρινής Αποθήκευσης
|
||
|
||
Αυτή η επίθεση είναι παρόμοια με την προηγούμενη, αλλά **αντί να εισαγάγει ένα φορτίο μέσα στη μνήμη προσωρινής αποθήκευσης, ο επιτιθέμενος θα αποθηκεύει πληροφορίες του θύματος μέσα στη μνήμη:**
|
||
|
||
![](<../.gitbook/assets/image (643) (1) (1).png>)
|
||
|
||
### Διαίρεση Απόκρισης
|
||
|
||
Ο **στόχος** αυτής της επίθεσης είναι να εκμεταλλευτεί ξανά την **ασυμφωνία απόκρισης** για να **κάνει τον διαμεσολαβητή να στείλει μια απόκριση που παράγεται κατά 100% από τον επιτιθέμενο**.
|
||
|
||
Για να το επιτύχει αυτό, ο επιτιθέμενος πρέπει να βρει ένα σημείο της web εφαρμογής που **αντανακλά κάποιες τιμές μέσα στην απόκριση** και **να γνωρίζει το μήκος του περιεχομένου της απόκρισης HEAD**.
|
||
|
||
Θα στείλει ένα **εκμεταλλευτικό** όπως:
|
||
|
||
![](<../.gitbook/assets/image (649) (1) (1) (1).png>)
|
||
|
||
Αφού το πρώτο αίτημα επιλυθεί και σταλεί πίσω στον επιτιθέμενο, το αίτημα του θύματος προστίθεται στην ουρά:
|
||
|
||
![](<../.gitbook/assets/image (661) (1) (1) (1).png>)
|
||
|
||
Το θύμα θα λάβει ως απόκριση την **απόκριση HEAD + το περιεχόμενο της απόκρισης του δεύτερου αιτήματος (που περιέχει μέρος των αντανακλασμένων δεδομένων):**
|
||
|
||
![](<../.gitbook/assets/image (633) (1).png>)
|
||
|
||
Ωστόσο, παρατηρήστε ότι τα **αντανακλασμένα δεδομένα είχαν μέγεθος σύμφωνα με το Content-Length** της **απόκρισης HEAD που παρήγαγε μια έγκυρη απόκριση HTTP στην ουρά απόκρισης**.
|
||
|
||
Συνεπώς, το **επόμενο αίτημα του δεύτερου θύματος** θα **λάβει** ως **απόκριση κάτι που έχει δημιουργηθεί εξ ολοκλήρου από τον επιτιθέμενο**. Καθώς η απόκριση έχει δημιουργηθεί εξ ολοκλήρου από τον επιτιθέμενο, μπορεί επίσης να **κάνει τη μνήμη προσωρινής αποθήκευσης την απόκριση**.
|