mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-29 16:10:54 +00:00
4.2 KiB
4.2 KiB
Einherjar Evi
AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!
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 kontrol edin!
- Resmi PEASS & HackTricks ürünlerini alın
- PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuz
- Katılın 💬 Discord grubuna veya telegram grubuna veya bizi Twitter 🐦 @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.
Temel Bilgiler
Kod
- Örneği kontrol edin 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 (tcache'yi doldurmanız gerekebilir)
Amaç
- Hemen hemen herhangi bir belirli adreste bellek tahsis etmek.
Gereksinimler
- 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çine
A
sahte bir parça oluşturulur ve korumaları atlamak içinfd
vebk
ile orijinal parçaya işaret eder - 2 diğer parça (
B
veC
) tahsis edilir B
'deki yanlışlık kullanılarakprev in use
biti temizlenir veC
parçasının tahsis edildiği yer ile önce oluşturulan sahteA
parçası arasındaki farklaprev_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çaA
ile birleşir - Sonra, sahte
A
parçasında başlayacak veB
parçayı kapsayacak yeni bir parçaD
oluşturulur - Einherjar Evi burada biter
- Bu, hızlı bin saldırısı ile devam ettirilebilir:
B
'yi serbest bırakarak hızlı bine ekleyinB
'ninfd
si üzerine yazılarak hedef adresi hedefleyenD
parçasını (çünkü içindeB
bulunmaktadır) işaret eder- Sonra, 2 malloc yapılır ve ikincisi hedef adresi tahsis edecek
Referanslar ve diğer örnekler
- 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
- İş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.