mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 12:43:23 +00:00
Translated ['binary-exploitation/heap/house-of-einherjar.md', 'binary-ex
This commit is contained in:
parent
425f9b4857
commit
0cbc6a5c9a
5 changed files with 126 additions and 65 deletions
|
@ -740,7 +740,7 @@
|
|||
* [Tcache Bin Attack](binary-exploitation/heap/tcache-bin-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 Lore | Small bin Attack](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)
|
||||
* [House of Orange](binary-exploitation/heap/house-of-orange.md)
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
|
||||
<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>
|
||||
<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 PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||||
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
|
||||
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
|
||||
* [**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.
|
||||
|
@ -18,30 +18,39 @@ HackTricks'ı desteklemenin diğer yolları:
|
|||
|
||||
### 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
|
||||
* Örneği kontrol edin [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)
|
||||
* Veya şu adresten bakın [https://guyinatuxedo.github.io/42-house\_of\_einherjar/house\_einherjar\_exp/index.html#house-of-einherjar-explanation](https://guyinatuxedo.github.io/42-house\_of\_einherjar/house\_einherjar\_exp/index.html#house-of-einherjar-explanation) (tcache'yi doldurmanız gerekebilir)
|
||||
|
||||
### Amaç
|
||||
|
||||
* Hemen hemen her belirli adrese bellek tahsis etmek.
|
||||
* Hemen hemen herhangi bir belirli adreste 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ı
|
||||
* Bir parça tahsis etmek istediğimizde sahte bir parça oluşturun:
|
||||
* Kontrol noktalarını kendisine işaret etmek için işaretçileri ayarlayın
|
||||
* Bir parçadan diğerine bir tane eksik olacak şekilde yanlışlıkla geçin ve önceki kullanımda değişiklik yapın
|
||||
* Yanlışlıkla yanlış kullanılan parçanın `prev_size`'ına kendisi ile sahte parça arasındaki farkı gösterin
|
||||
* Sahte parça boyutu da kontrol noktalarını atlamak için aynı boyutta olmalıdır
|
||||
* Bu parçaları oluşturmak için bir heap sızıntısına ihtiyacınız olacak.
|
||||
|
||||
### 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
|
||||
* Saldırgan tarafından kontrol edilen bir parçanın içine `A` sahte bir parça oluşturulur ve korumaları atlamak için `fd` ve `bk` ile orijinal parçaya işaret eder
|
||||
* 2 diğer parça (`B` ve `C`) tahsis edilir
|
||||
* `B`'deki yanlışlık kullanılarak `prev in use` biti temizlenir ve `C` parçasının tahsis edildiği yer ile önce oluşturulan sahte `A` parçası arasındaki farkla `prev_size` verisi üzerine yazılır
|
||||
* Bu `prev_size` ve sahte parçadaki boyut aynı olmalıdır kontrol noktalarını atlamak için.
|
||||
* Sonra, tcache doldurulur
|
||||
* Sonra, `C` serbest bırakılır böylece sahte parça `A` ile birleşir
|
||||
* Sonra, sahte `A` parçasında başlayacak ve `B` parçayı kapsayacak yeni bir parça `D` oluşturulur
|
||||
* Einherjar Evi burada biter
|
||||
* Bu, hızlı bin saldırısı ile devam ettirilebilir:
|
||||
* `B`'yi serbest bırakarak hızlı bine ekleyin
|
||||
* `B`'nin `fd`si üzerine yazılarak hedef adresi hedefleyen `D` parçasını (çünkü içinde `B` bulunmaktadır) işaret eder
|
||||
* Sonra, 2 malloc yapılır ve ikincisi **hedef adresi tahsis edecek**
|
||||
|
||||
## Referanslar
|
||||
## Referanslar ve diğer örnekler
|
||||
|
||||
* [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)
|
||||
* [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_einherjar/#2016-seccon-tinypad](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_einherjar/#2016-seccon-tinypad)
|
||||
* İşaretçileri sıfırlamadığınızda serbest bırakıldıktan sonra, verilerine hala erişmek mümkündür. Bu nedenle, bir parça sıralanmamış kutuya yerleştirilir ve içerdiği işaretçiler sızdırılır (libc sızıntısı) ve ardından bir yeni heap sıralanmamış kutuya yerleştirilir ve aldığı işaretçiden bir heap adresi sızdırılır.
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
# House of Lore
|
||||
# House of Lore | Küçük bin Saldırısı
|
||||
|
||||
<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>
|
||||
<summary><strong>AWS hackleme konusunda sıfırdan kahramana öğ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.
|
||||
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
|
||||
* [**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>
|
||||
|
||||
|
@ -18,44 +18,54 @@ HackTricks'ı desteklemenin diğer yolları:
|
|||
|
||||
### 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
|
||||
* Bu çalışmıyor
|
||||
* 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)
|
||||
* Bu, bazı kontrolleri atlamaya çalışsa da `malloc(): unaligned tcache chunk detected` hatasını alır
|
||||
* Bu örnek hala çalışıyor**:** [**https://guyinatuxedo.github.io/40-house\_of\_lore/house\_lore\_exp/index.html**](https://guyinatuxedo.github.io/40-house\_of\_lore/house\_lore\_exp/index.html) 
|
||||
|
||||
### Amaç
|
||||
|
||||
* Küçük bin içine sahte küçük parçalar ekleyerek onu tahsis etmek mümkün hale getirilir.
|
||||
* **Küçük bir parçayı küçük bine sahte bir parça olarak ekleyerek onu ayırabilir hale getirmek**.\
|
||||
Eklenen küçük parça sahte olan, saldırganın rastgele bir konumda oluşturduğu değil.
|
||||
|
||||
### 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
|
||||
* 2 sahte parça oluşturun ve bunları birbirine ve küçük bine yaslayın:
|
||||
* `sahte0.bk` -> `sahte1`
|
||||
* `sahte1.fd` -> `sahte0`
|
||||
* `sahte0.fd` -> `gerçek` (başka bir zayıflıktan dolayı serbest bırakılan küçük bin parçasındaki bir işaretçiyi değiştirmeniz gerekmektedir)
|
||||
* `gerçek.bk` -> `sahte0`
|
||||
|
||||
Böylece `sahte0`'ı ayırabilirsiniz.
|
||||
|
||||
### 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.
|
||||
* Küçük bir parça (`gerçek`) ayrıldıktan sonra başka bir parça ayrılarak üst parçayla birleştirilmesi engellenir. Daha sonra, `gerçek` serbest bırakılır (onu sıralanmamış listeye taşır) ve daha büyük bir parça ayrılır, **`gerçek`'i küçük bine taşır.**
|
||||
* Bir saldırgan birkaç sahte küçük parça oluşturur ve gereken bağlantıları yaparak sağlamlık kontrollerini atlar:
|
||||
* `sahte0.bk` -> `sahte1`
|
||||
* `sahte1.fd` -> `sahte0`
|
||||
* `sahte0.fd` -> `gerçek` (başka bir zayıflıktan dolayı serbest bırakılan küçük bin parçasındaki bir işaretçiyi değiştirmeniz gerekmektedir)
|
||||
* `gerçek.bk` -> `sahte0`
|
||||
* Gerçek alınmak üzere küçük bir parça ayrılır, **`sahte0`**'ı küçük bine en üst listeye alır
|
||||
* Başka bir küçük parça ayrılır, sahte0'ı bir parça olarak alır, potansiyel olarak içindeki işaretçileri okuma/yazma olanağı sağlar.
|
||||
|
||||
## 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)
|
||||
* [https://guyinatuxedo.github.io/40-house\_of\_lore/house\_lore\_exp/index.html](https://guyinatuxedo.github.io/40-house\_of\_lore/house\_lore\_exp/index.html)
|
||||
|
||||
<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>
|
||||
<summary><strong>AWS hackleme konusunda sıfırdan kahramana öğ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.
|
||||
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
|
||||
* [**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>
|
||||
|
|
|
@ -9,8 +9,8 @@ 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).
|
||||
* **Katılın** 💬 [**Discord grubuna**] (https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**] veya bizi **Twitter** 🐦 [**@hacktricks\_live**] (https://twitter.com/hacktricks\_live)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -69,16 +69,51 @@ return 0;
|
|||
|
||||
### 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.
|
||||
* Bir adresi tcache / hızlı bin içine ekleyebilmek ve daha sonra onu tahsis edebilmek
|
||||
|
||||
### 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.
|
||||
* Bu saldırı, bir saldırganın doğru şekilde boyut değerini gösteren birkaç sahte hızlı parça oluşturabilmesini ve ardından ilk sahte parçayı serbest bırakarak onun bine girmesini gerektirir.
|
||||
|
||||
### 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
|
||||
* Güvenlik kontrollerini atlayan sahte parçalar oluşturun: Temelde doğru pozisyonlarda doğru boyutları gösteren 2 sahte parçaya ihtiyacınız olacak
|
||||
* İlk sahte parçayı serbest bırakacak şekilde yönetin, böylece hızlı veya tcache bine girer ve ardından o adresi üzerine yazacak şekilde tahsis edilir
|
||||
|
||||
**Koddan** [**guyinatuxedo**](https://guyinatuxedo.github.io/39-house\_of\_spirit/house\_spirit\_exp/index.html) **gelen kod saldırıyı anlamak için harika.** Bununla birlikte, kodun bu şeması saldırıyı oldukça iyi özetliyor:
|
||||
```c
|
||||
/*
|
||||
this will be the structure of our two fake chunks:
|
||||
assuming that you compiled it for x64
|
||||
|
||||
+-------+---------------------+------+
|
||||
| 0x00: | Chunk # 0 prev size | 0x00 |
|
||||
+-------+---------------------+------+
|
||||
| 0x08: | Chunk # 0 size | 0x60 |
|
||||
+-------+---------------------+------+
|
||||
| 0x10: | Chunk # 0 content | 0x00 |
|
||||
+-------+---------------------+------+
|
||||
| 0x60: | Chunk # 1 prev size | 0x00 |
|
||||
+-------+---------------------+------+
|
||||
| 0x68: | Chunk # 1 size | 0x40 |
|
||||
+-------+---------------------+------+
|
||||
| 0x70: | Chunk # 1 content | 0x00 |
|
||||
+-------+---------------------+------+
|
||||
|
||||
for what we are doing the prev size values don't matter too much
|
||||
the important thing is the size values of the heap headers for our fake chunks
|
||||
*/
|
||||
```
|
||||
{% hint style="info" %}
|
||||
Not: Bazı sağlamlık kontrollerini atlatmak için ikinci parçayı oluşturmak gereklidir.
|
||||
{% endhint %}
|
||||
|
||||
## Örnekler
|
||||
|
||||
* CTF [https://guyinatuxedo.github.io/39-house\_of\_spirit/hacklu14\_oreo/index.html](https://guyinatuxedo.github.io/39-house\_of\_spirit/hacklu14\_oreo/index.html)
|
||||
* **Libc bilgi sızdırma**: Bir taşma aracılığıyla bir işaretçiyi GOT adresine yönlendirerek, CTF'nin okuma işlemi aracılığıyla bir libc adresi sızdırmak mümkündür.
|
||||
* **House of Spirit**: "Tüfeklerin" sayısını sayan bir sayaçı istismar ederek, ilk sahte parçanın sahte boyutunu oluşturmak mümkün olur, ardından bir "mesajı" istismar ederek, bir parçanın ikinci boyutunu sahteleştirmek mümkün olur ve son olarak bir taşma aracılığıyla, serbest bırakılacak bir işaretçiyi değiştirmek mümkün olur, böylece ilk sahte parça serbest bırakılır. Sonra, bunu tahsis edebilir ve içinde "mesaj"ın nerede depolandığı adres olacaktır. Daha sonra, bunu GOT tablosundaki `scanf` girişine işaret etmesi mümkün olur, böylece onu sistem adresiyle üzerine yazabiliriz.\
|
||||
Bir sonraki `scanf` çağrıldığında, girişi `"/bin/sh"` olarak gönderebilir ve bir kabuk alabiliriz.
|
||||
|
||||
## Referanslar
|
||||
|
||||
|
@ -86,14 +121,14 @@ return 0;
|
|||
|
||||
<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>AWS hacklemeyi sıfırdan kahraman olmaya öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</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 PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||||
* **Ş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'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.
|
||||
* **💬 [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)'ı 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,16 +1,16 @@
|
|||
# Tcache Bin Attack
|
||||
# Tcache Bin Saldırısı
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>AWS hacklemeyi sıfırdan kahraman yapmaya 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 dönüşün</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile öğrenin!</strong></summary>
|
||||
|
||||
HackTricks'ı desteklemenin diğer yolları:
|
||||
HackTricks'i 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)
|
||||
* [**PEASS Ailesi'ni keşfedin**](https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin
|
||||
* **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**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin.
|
||||
* [**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)** takip edin.**
|
||||
* **Hacking püf noktalarınızı paylaşarak** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin.
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -24,22 +24,29 @@ Tcache bin nedir hakkında daha fazla bilgi için bu sayfaya bakın:
|
|||
|
||||
İlk olarak, Tcache glibc sürümü 2.26'da tanıtıldı.
|
||||
|
||||
[**guyinatuxido sayfasında**](https://guyinatuxedo.github.io/29-tcache/tcache\_explanation/index.html) önerilen **Tcache** saldırısı, hedeflenen amaçın bir serbest bırakılmış parçada bir sonraki parça işaretçisini isteğe bağlı bir adrese üzerine yazmak olduğu hızlı bin saldırısına çok benzerdir, böylece daha sonra **o belirli adrese tahsis edilebilir ve potansiyel olarak işaretçiler üzerine yazılabilir**.
|
||||
[**guyinatuxido sayfasında**](https://guyinatuxedo.github.io/29-tcache/tcache\_explanation/index.html) önerilen **Tcache** saldırısı, hedeflenen amaç, bir serbest bırakılmış parçanın içindeki bir kovadaki bir sonraki parça işaretçisini isteğe bağlı bir adrese üzerine yazmak olduğu hızlı kova saldırısına çok benzerdir, böylece daha sonra **o belirli adrese tahsis edilebilir ve potansiyel olarak işaretçiler üzerine yazılabilir**.
|
||||
|
||||
Ancak, günümüzde, bahsedilen kodu çalıştırırsanız hata alırsınız: **`malloc(): hizalanmamış tcache parçası tespit edildi`**. Bu nedenle, yeni işaretçiye hizalanmış bir adres yazmak gereklidir (veya yazılan adresin gerçekten hizalandığı binary'yi yeterince kez çalıştırmak).
|
||||
|
||||
### Tcache indeksleri saldırısı
|
||||
### Tcache indeks saldırıları
|
||||
|
||||
Genellikle heap'in başlangıcında, tcache içindeki **her indeksteki parça sayısını** ve **her tcache indeksinin baş parça adresini** içeren bir parça bulunabilir. Bu bilgileri bir şekilde değiştirmek mümkün olursa, bir indeksin baş parçasını istenen bir adrese (örneğin malloc hook) **işaret etmesi mümkün olacaktır** ve daha sonra bu durumda malloc hook içeriğini üzerine yazmak mümkün olacaktır.
|
||||
Genellikle, heap'in başlangıcında, tcache içindeki **her indeksteki parça miktarını** ve **her tcache indeksinin baş parça adresini** içeren bir parça bulunabilir. Bu bilgiyi değiştirmek mümkün olduğunda, **bazı indekslerin baş parçasını istenilen bir adrese yönlendirmek mümkün olacaktır** (örneğin malloc hook gibi) ve daha sonra bu durumda malloc hook içeriğini üzerine yazmak mümkün olacaktır.
|
||||
|
||||
## Örnekler
|
||||
|
||||
* CTF [https://guyinatuxedo.github.io/29-tcache/dcquals19\_babyheap/index.html](https://guyinatuxedo.github.io/29-tcache/dcquals19\_babyheap/index.html)
|
||||
* **Libc bilgi sızıntısı**: Tcache'leri doldurmak, bir parçayı sıralanmamış listeye eklemek, tcache'leri boşaltmak ve ardından sadece ilk 8B'yi üzerine yazarak sıralanmamış bölgeden parçayı **yeniden tahsis etmek mümkün olacak, ikinci adresi parçadan libc'ye bırakarak okuyabileceğiz**.
|
||||
* **Tcache saldırısı**: Binary, 1B heap taşmasına karşı savunmasızdır. Bu, ayrılmış bir parçanın **boyut başlığını** değiştirmek için kötüye kullanılacaktır. Daha sonra, bu parça **serbest bırakılacak**, sahte boyuttaki parçaların tcache'ine eklenir. Ardından, sahte boyuttaki bir parça tahsis edilecek ve önceki parça **gerçekte daha küçük olduğu bilinerek geri dönecektir ve bu, bellekteki bir sonraki parçayı üzerine yazma fırsatı verir**.\
|
||||
Bu, **bir sonraki parçanın FD işaretçisini üzerine yazmak** için kötüye kullanılacaktır ve ardından 2 işaretçi tahsis edilecektir: önce değiştirdiğimiz meşru işaretçi ve ardından ikinci tahsis, **`malloc_hook`**'a işaret eden bir parça döndürecektir ve bu, **bir gadget yazmak için kötüye kullanılabilir**.
|
||||
* **Libc bilgi sızıntısı**: Tcache'leri doldurmak, bir parçayı sıralanmamış listeye eklemek, tcache'yi boşaltmak ve ardından sadece ilk 8B'yi üzerine yazarak sıralanmamış kovadan parçayı **yeniden tahsis etmek mümkün olacak, ikinci adresi parçadan libc'ye bırakarak okuyabileceğiz**.
|
||||
* **Tcache saldırısı**: Binary, 1B heap taşmasına karşı savunmasızdır. Bu, ayrılmış bir parçanın **boyut başlığını** değiştirmek için kötüye kullanılacaktır. Daha sonra, bu parça **serbest bırakılacak**, sahte boyuttaki parçaların tcache'ine eklenerek. Ardından, sahte boyutta bir parça tahsis edilecek ve önceki parça **gerçekte daha küçük olduğu bilinerek geri dönecek ve bu, bellekteki bir sonraki parçayı üzerine yazma fırsatı verecektir**.\
|
||||
Bu, **bir sonraki parçanın FD işaretçisini üzerine yazmak** için kötüye kullanılacaktır **`malloc_hook`'a** işaret etmek, böylece ilk olarak değiştirdiğimiz meşru işaretçiyi tahsis edebilecek ve ardından ikinci tahsis, `malloc_hook`'ta bir parça döndürecektir ve bu, **bir tek parça yazmak için kötüye kullanılabilir**.
|
||||
* CTF [https://guyinatuxedo.github.io/29-tcache/plaid19\_cpp/index.html](https://guyinatuxedo.github.io/29-tcache/plaid19\_cpp/index.html)
|
||||
* **Libc bilgi sızıntısı**: Bir kullanım sonrası ücretsiz ve çift ücretsiz var. Bu yazıda yazar, küçük bir binaya yerleştirilen bir parçanın adresini okuyarak libc'nin bir adresini sızdırdı (sıralanmamış bölgeden değil, küçük bir bölgeden sızdırdı).
|
||||
* **Tcache saldırısı**: Bir **çift ücretsiz** ile bir Tcache gerçekleştirilir. Aynı parça iki kez serbest bırakılır, bu nedenle Tcache içinde parça kendisine işaret eder. Ardından, tahsis edilir, FD işaretçisi **free hook'a işaret etmek üzere değiştirilir ve ardından tekrar tahsis edilir, böylece listedeki bir sonraki parça free hook'ta olacaktır. Ardından, bu da tahsis edilir ve buraya `system`'in adresini yazmak mümkün olacak, böylece `"/bin/sh"` içeren bir malloc serbest bırakıldığında bir shell alınır.
|
||||
* **Libc bilgi sızıntısı**: Use after free ve double free var. Bu yazıda yazar, küçük bir kovaya yerleştirilen bir parçanın adresini okuyarak libc'nin bir adresini sızdırdı (sıralanmamış kovadan değil, küçük kovadan sızdırmak gibi).
|
||||
* **Tcache saldırısı**: Bir **çift serbest bırakma** ile bir Tcache gerçekleştirilir. Aynı parça iki kez serbest bırakıldığında, tcache içinde parça kendisine işaret edecektir. Daha sonra, tahsis edilir, FD işaretçisi **free hook'a** işaret etmek üzere değiştirilir ve ardından tekrar tahsis edilir, böylece listedeki bir sonraki parça free hook'ta olacaktır. Ardından, bu da tahsis edilir ve buraya `system`'in adresini yazmak mümkün olacak, böylece `"/bin/sh"` içeren bir malloc serbest bırakıldığında bir shell alınır.
|
||||
* CTF [https://guyinatuxedo.github.io/44-more\_tcache/csaw19\_popping\_caps0/index.html](https://guyinatuxedo.github.io/44-more\_tcache/csaw19\_popping\_caps0/index.html)
|
||||
* **Tcache indeksleri saldırısı**: Tcache bilgileri içinde depolanan bir boyutta bir parça tahsis edip serbest bırakmak, bu bilginin 0x100 değerine sahip bir konum oluşturmasını sağlar (çünkü o indeksteki kaç parçanın depolandığını gösteren bayt). Bu değeri kötüye kullanarak, 0x100 boyutunda bir parça tahsis edilerek diğer tcache indekslerinin başlangıç parça adresi üzerine yazılabilir. Örneğin, malloc hook adresini birine koyarak ve o indeksin boyutunda bir parça tahsis ederek calloc hook'ta bir parça elde etmek, bir gadget yazmak için kötüye kullanılabilir ve bir shell alınabilir.
|
||||
* Buradaki ana zayıflık, offsetini belirterek heap'te **herhangi bir adresi serbest bırakma** kapasitesidir.
|
||||
* **Tcache indeks saldırıları**: Tcache parçasına (tcache kovalarının bilgilerini içeren parça) depolanacak bir boyutta bir parça tahsis edip serbest bırakmak, farklı baytlarda her kovadaki parça miktarını depoladığı için **0x100 değerine sahip bir adres oluşturacaktır**.
|
||||
* Sonra, bu değer 0x100 boyutunda bir parça olduğu gibi görünür. Bu adresi `free` ile kötüye kullanmaya izin verecektir. Bu, bu adresi tcache içindeki 0x100 boyutundaki parça indeksine **ekleyecektir**.
|
||||
* Ardından, boyutu **0x100** olan bir parça **tahsis edildiğinde**, önceki adres bir parça olarak geri dönecek ve diğer tcache indekslerini üzerine yazma olanağı sağlayacaktır.\
|
||||
Örneğin, malloc hook adresini birine koyarak ve o indeksin boyutunda bir parça tahsis ederek calloc hook'ta bir parça almak, bir tek parça yazmak için kötüye kullanılabilir ve bir shell almak mümkün olacaktır.
|
||||
* CTF [https://guyinatuxedo.github.io/44-more\_tcache/csaw19\_popping\_caps1/index.html](https://guyinatuxedo.github.io/44-more\_tcache/csaw19\_popping\_caps1/index.html)
|
||||
* Bir öncekiyle aynı zayıflık, bir ek kısıtlama ile
|
||||
* **Tcache indeks saldırıları**: Bir önceki saldırıya benzer saldırı ancak **tcache bilgilerini içeren parçayı serbest bırakarak** daha az adımla yapılır, böylece adresi, boyutuna göre tcache indeksine eklenir ve bu boyutta tahsis edilebilir ve tcache parça bilgilerini bir parça olarak almak mümkün olur, bu da bir indeksin adresini free hook olarak eklemeyi, tahsis etmeyi ve üzerine bir tek parça yazmayı mümkün kılar.
|
||||
|
|
Loading…
Reference in a new issue