mirror of
https://github.com/carlospolop/hacktricks
synced 2025-02-16 22:18:27 +00:00
79 lines
5.3 KiB
Markdown
79 lines
5.3 KiB
Markdown
|
# Büyük Kova Saldırısı
|
|||
|
|
|||
|
<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> ile!</strong></summary>
|
|||
|
|
|||
|
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**](https://github.com/sponsors/carlospolop)'na 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)'da **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
|
|||
|
|
|||
|
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](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ı**](https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/large\_bin\_attack.c) 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" %}
|
|||
|
```c
|
|||
|
/* 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**](https://guyinatuxedo.github.io/32-largebin\_attack/largebin\_explanation0/index.html) adresinde bulabilirsiniz.
|
|||
|
|
|||
|
<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 Red Team Expert)</strong></a><strong>!</strong></summary>
|
|||
|
|
|||
|
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**](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
|
|||
|
* **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**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
|
|||
|
|
|||
|
</details>
|