hacktricks/pentesting-web/http-response-smuggling-desync.md

86 lines
9.5 KiB
Markdown
Raw Normal View History

2024-02-10 22:40:18 +00:00
# Απάτη HTTP Response Smuggling / Desync
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 22:40:18 +00:00
<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>
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
Άλλοι τρόποι υποστήριξης του HackTricks:
2023-12-31 01:25:17 +00:00
2024-02-10 22:40:18 +00:00
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο 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.
2022-04-28 16:01:33 +00:00
</details>
2024-02-10 22:40:18 +00:00
**Η τεχνική αυτής της ανάρτησης προήλθε από το βίντεο: [https://www.youtube.com/watch?v=suxDcYViwao\&t=1343s](https://www.youtube.com/watch?v=suxDcYViwao\&t=1343s)**
2024-02-06 03:10:38 +00:00
2024-02-10 22:40:18 +00:00
## Αποσυντονισμός Ουράς Αιτημάτων HTTP
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
Καταρχήν, αυτή η τεχνική **καταχράται μια ευπάθεια HTTP Request Smuggling**, οπότε πρέπει να ξέρετε τι είναι αυτό:
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
Η **κύρια** **διαφορά** ανάμεσα σε αυτήν την τεχνική και σε μια συνηθισμένη επίθεση HTTP Request smuggling είναι ότι αντί να επιτεθούμε στο αίτημα του θύματος προσθέτοντας ένα πρόθεμα, θα διαρρεύσουμε ή θα τροποποιήσουμε την απάντηση που λαμβάνει το θύμα. Αυτό γίνεται αποσυντονίζοντας την ουρά απαντήσεων των διαμεσολαβητών, αντί να στείλουμε 1 αίτημα και μισό για να καταχραστούμε το HTTP Request smuggling, θα στείλουμε 2 πλήρη αιτήματα για να αποσυντονίσουμε την ουρά απαντήσεων των διαμεσολαβητών.
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
Αυτό γίνεται επειδή θα είμαστε σε θέση να αποσυντονίσουμε την ουρά απάντησης, έτσι ώστε η απάντηση από το νόμιμο αίτημα του θύματος να σταλεί στον επιτιθέμενο, ή να εισαγάγουμε περιεχόμενο που ελέγχεται από τον επιτιθέμενο στην απάντηση προς το θύμα.
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
### Αποσυντονισμός Ουράς HTTP Pipeline
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
Το HTTP/1.1 επιτρέπει να ζητηθούν **διάφοροι πόροι χωρίς να χρειάζεται να περιμένουμε για τους προηγούμενους**. Επομένως, αν υπάρχει ένας **διαμεσολαβητής** στη **μέση**, είναι η δουλειά των διαμεσολαβητών να **διατηρούν μια συγχρονισμένη αντιστοίχιση των αιτημάτων που στέλνονται στον πίσω χώρο και των απαντήσεων που προέρχονται από αυτόν**.
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
Ωστόσο, υπάρχει ένα πρόβλημα με τον αποσυντονισμό της ουράς απαντήσεων. Εάν ένας επιτιθέμενος στείλει μια επίθεση HTTP Response smuggling και οι απαντήσεις στο **αρχικό αίτημα και το καταχραστικό αίτημα απαντηθούν αμέσως**, η καταχραστική απάντηση δεν θα εισαχθεί στην ουρά της απάντησης του θύματος, αλλά θα **απορριφθεί απλά ως σφάλμα**.
2021-11-05 20:59:42 +00:00
2022-03-09 12:12:51 +00:00
![](<../.gitbook/assets/image (635) (1) (1) (1).png>)
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
Επομένως, είναι απαραίτητο να απαιτείται ότι το **κ
### Σύγχυση Περιεχομένου
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
Ακολουθώντας το προηγούμενο παράδειγμα, γνωρίζοντας ότι μπορείς να **ελέγξεις το σώμα** του αιτήματος του οποίου η απόκριση θα λάβει ο θύμα και ότι μια **απόκριση HEAD** συνήθως περιέχει στις κεφαλίδες της το **Content-Type και το Content-Length**, μπορείς να **στείλεις ένα αίτημα όπως το παρακάτω** για να προκαλέσεις XSS στο θύμα χωρίς τη σελίδα να είναι ευάλωτη σε XSS:
2021-11-05 20:59:42 +00:00
2022-03-21 17:37:28 +00:00
![](<../.gitbook/assets/image (654) (1) (1) (1) (1).png>)
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
### Δηλητηρίαση Κρυφής Μνήμης
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
Εκμεταλλευόμενος την προηγούμενη επίθεση διασυνοριακής ασυμφωνίας στην απόκριση περιεχομένου, **αν η μνήμη κρατάει την απόκριση στο αίτημα που πραγματοποίησε το θύμα και αυτή η απόκριση είναι μια ενοχλητική που προκαλεί XSS, τότε η μνήμη δηλητηριάζεται**.
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
Κακόβουλο αίτημα που περιέχει το φορτίο του XSS:
2021-11-05 20:59:42 +00:00
2022-03-09 12:12:51 +00:00
![](<../.gitbook/assets/image (644) (1).png>)
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
Κακόβουλη απόκριση προς το θύμα που περιέχει την κεφαλίδα που υποδεικνύει στη μνήμη να αποθηκεύσει την απόκριση:
2021-11-05 20:59:42 +00:00
2022-02-02 15:35:20 +00:00
![](<../.gitbook/assets/image (629) (1).png>)
2021-11-05 20:59:42 +00:00
{% hint style="warning" %}
2024-02-10 22:40:18 +00:00
Σημειώστε ότι σε αυτήν την περίπτωση, αν ο **"θύτης" είναι ο επιτιθέμενος**, τότε μπορεί να πραγματοποιήσει **δηλητηρίαση κρυφής μνήμης σε αυθαίρετα URLs**, καθώς μπορεί να **ελέγξει το URL που θα αποθηκευτεί στη μνήμη** με την κακόβουλη απόκριση.
2021-11-05 20:59:42 +00:00
{% endhint %}
2024-02-10 22:40:18 +00:00
### Απάτη Παραπλάνησης Προσωρινής Αποθήκευσης
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
Αυτή η επίθεση είναι παρόμοια με την προηγούμενη, αλλά **αντί να εισαγάγει ένα φορτίο μέσα στη μνήμη προσωρινής αποθήκευσης, ο επιτιθέμενος θα αποθηκεύει πληροφορίες του θύματος μέσα στη μνήμη:**
2021-11-05 20:59:42 +00:00
![](<../.gitbook/assets/image (643) (1) (1).png>)
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
### Διαίρεση Απόκρισης
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
Ο **στόχος** αυτής της επίθεσης είναι να εκμεταλλευτεί ξανά την **ασυμφωνία απόκρισης** για να **κάνει τον διαμεσολαβητή να στείλει μια απόκριση που παράγεται κατά 100% από τον επιτιθέμενο**.
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
Για να το επιτύχει αυτό, ο επιτιθέμενος πρέπει να βρει ένα σημείο της web εφαρμογής που **αντανακλά κάποιες τιμές μέσα στην απόκριση** και **να γνωρίζει το μήκος του περιεχομένου της απόκρισης HEAD**.
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
Θα στείλει ένα **εκμεταλλευτικό** όπως:
2021-11-05 20:59:42 +00:00
2022-04-25 12:04:04 +00:00
![](<../.gitbook/assets/image (649) (1) (1) (1).png>)
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
Αφού το πρώτο αίτημα επιλυθεί και σταλεί πίσω στον επιτιθέμενο, το αίτημα του θύματος προστίθεται στην ουρά:
2021-11-05 20:59:42 +00:00
2022-04-05 22:13:36 +00:00
![](<../.gitbook/assets/image (661) (1) (1) (1).png>)
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
Το θύμα θα λάβει ως απόκριση την **απόκριση HEAD + το περιεχόμενο της απόκρισης του δεύτερου αιτήματος (που περιέχει μέρος των αντανακλασμένων δεδομένων):**
2021-11-05 20:59:42 +00:00
2022-02-19 19:42:58 +00:00
![](<../.gitbook/assets/image (633) (1).png>)
2021-11-05 20:59:42 +00:00
2024-02-10 22:40:18 +00:00
Ωστόσο, παρατηρήστε ότι τα **αντανακλασμένα δεδομένα είχαν μέγεθος σύμφωνα με το Content-Length** της **απόκρισης HEAD που παρήγαγε μια έγκυρη απόκριση HTTP στην ουρά απόκρισης**.
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
Συνεπώς, το **επόμενο αίτημα του δεύτερου θύματος** θα **λάβει** ως **απόκριση κάτι που έχει δημιουργηθεί εξ ολοκλήρου από τον επιτιθέμενο**. Καθώς η απόκριση έχει δημιουργηθεί εξ ολοκλήρου από τον επιτιθέμενο, μπορεί επίσης να **κάνει τη μνήμη προσωρινής αποθήκευσης την απόκριση**.