5.3 KiB
Büyük Kova Saldırısı
Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!
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 PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuz
- Katılın 💬 Discord grubuna veya telegram grubuna veya bizi Twitter 🐦 @hacktricks_live'da 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
Büyük kova nedir hakkında daha fazla bilgi için bu sayfaya bakın:
{% content-ref url="bins-and-memory-allocations.md" %} bins-and-memory-allocations.md {% endcontent-ref %}
Büyük kova saldırısına dair harika bir örnek how2heap - büyük kova saldırısı içinde bulunabilir.
Temelde burada, en son "güncel" glibc sürümünde (2.35), P->bk_nextsize
kontrol edilmediği için belirli koşullar sağlandığında büyük bir kova parçasının değeri ile bir adresin değiştirilebileceğini görebilirsiniz.
Bu örnekte aşağıdaki koşulları bulabilirsiniz:
- Bir büyük parça ayrıldı
- İlk parçadan daha küçük ancak aynı dizindeki bir büyük parça ayrıldı
- Binde ilk sıraya gitmesi gerektiği için daha küçük olmalıdır
- (Üst parçayla birleşmeyi önlemek için bir parça oluşturulur)
- Ardından, ilk büyük parça serbest bırakılır ve ondan daha büyük yeni bir parça ayrılır -> Parça1 büyük kovaya gider
- Ardından, ikinci büyük parça serbest bırakılır
- Şimdi, zafiyet: Saldırgan
chunk1->bk_nextsize
'ı[hedef-0x20]
olarak değiştirebilir - Ardından, 2. parçadan daha büyük bir parça ayrılır, bu nedenle parça2, adresi
chunk1->bk_nextsize->fd_nextsize
'ı parça2'nin adresi ile üzerine yazarak büyük kovaya eklenir
{% hint style="success" %}
Diğer potansiyel senaryolar bulunmaktadır, önemli olan, büyük kovaya, bir mevcut X parçadan daha küçük bir parça eklemektir, bu nedenle binde X'ten hemen önce eklenmesi gerekmekte ve X'in bk_nextsize
'ını değiştirebilmemiz gerekmektedir çünkü daha küçük parçanın adresinin yazılacağı yer burasıdır.
{% endhint %}
Bu, malloc'tan ilgili kod parçalarıdır. Adresin nasıl üzerine yazıldığını daha iyi anlamak için yorumlar eklenmiştir:
{% code overflow="wrap" %}
/* if smaller than smallest, bypass loop below */
assert (chunk_main_arena (bck->bk));
if ((unsigned long) (size) < (unsigned long) chunksize_nomask (bck->bk))
{
fwd = bck; // fwd = p1
bck = bck->bk; // bck = p1->bk
victim->fd_nextsize = fwd->fd; // p2->fd_nextsize = p1->fd (Note that p1->fd is p1 as it's the only chunk)
victim->bk_nextsize = fwd->fd->bk_nextsize; // p2->bk_nextsize = p1->fd->bk_nextsize
fwd->fd->bk_nextsize = victim->bk_nextsize->fd_nextsize = victim; // p1->fd->bk_nextsize->fd_nextsize = p2
}
{% endcode %}
Bu, daha sonra daha büyük parçalarla hızlı bir kutu saldırısını sömürmek için libc'in global_max_fast
global değişkenini üzerine yazmak için kullanılabilir.
Bu saldırının başka harika bir açıklamasını guyinatuxedo adresinde bulabilirsiniz.
Sıfırdan kahraman olmak için AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert)!
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 PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Family'yi keşfedin, özel NFT'lerimiz koleksiyonumuz
- Katılın 💬 Discord grubuna veya telegram grubuna veya bizi Twitter 🐦 @hacktricks_live'da takip edin.
- Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks ve HackTricks Cloud github depolarına katkıda bulunun.