Tcache Bin Attack

HackTricks'i Destekleyin

Temel Bilgiler

Tcache bin nedir hakkında daha fazla bilgi için bu sayfaya bakın:

Bins & Memory Allocations

İlk olarak, Tcache'nin Glibc sürüm 2.26'da tanıtıldığını unutmayın.

guyinatuxido sayfasında önerilen Tcache saldırısı (aynı zamanda Tcache zehirlenmesi olarak da bilinir) hedef, 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 için 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ı algılandı. Bu nedenle, yeni işaretçiye hizalanmış bir adres yazmak gereklidir (veya yazılan adresin gerçekten hizalandığı kadar sıkı bir şekilde ikili dosyayı çalıştırmak gereklidir).

Tcache indeks saldırısı

Genellikle, heap'in başlangıcında, tcache içindeki her indeksteki parça miktarını içeren bir parça ve her tcache indeksinin baş parça adresini içeren bir parça bulunabilir. Bu bilgiyi bir şekilde değiştirmek mümkün olursa, bazı indeksin baş parçasını istenen bir adrese yönlendirmek mümkün olacaktır (__malloc_hook gibi) ve daha sonra bu durumda __malloc_hook içeriğini üzerine yazmak mümkün olacaktır.

Örnekler

  • 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 bu parçayı tekrar tahsis etmek mümkündür, parçanın ikinci adresini bozulmamış bir şekilde bırakarak, bu sayede okuyabiliriz.

  • Tcache saldırısı: İkinci bir 1B heap taşması olan bir ikili dosya zayıf durumdadır. Bu, tahsis edilen 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 bu parçanın aslında daha küçük olduğunu bilerek 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, böylece değiştirilen ilk işaretçi ve ardından ikinci tahsis, **malloc_hook'ta bir parça döndürecektir ve bu, bir one gadget yazmak için kötüye kullanılabilir.

  • Libc bilgi sızıntısı: Bir kullanımdan sonra serbest bırakma ve çift serbest bırakma vardır. Bu yazıda, yazar, küçük bir kovaya yerleştirilen bir parçanın adresini okuyarak libc'in bir adresini sızdırdı.

  • Tcache saldırısı: Bir çift serbest bırakma 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 yönlendirilir 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 system adresi buraya yazılabilir, böylece "/bin/sh" içeren bir malloc serbest bırakıldığında bir kabuk alınabilir.

  • Buradaki ana zayıflık, heap'te herhangi bir adresi free edebilme kapasitesidir.

  • Tcache indeks saldırısı: Tcache parçasının içinde depolanan bir boyutta bir parça tahsis edip serbest bırakmak, farklı baytlarda her bir kovadaki parça miktarını depoladığı için, belirli bir indekste bir parça, değeri 0x100 olan bir adres oluşturacaktır.

  • Sonra, bu değer 0x100 boyutunda bir parça olduğu gibi görünmektedir. Bu adresi free ile kötüye kullanmak mümkün olacaktır. Bu, o adresin 0x100 boyutundaki parça indeksine eklenmesine neden olacaktır.

  • 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 alınabilir, bu da bir one gadget yazmak için kötüye kullanılabilir.

  • Bir öncekiyle aynı zayıflık ve bir ek kısıtlama

  • Tcache indeks saldırısı: Bir önceki saldırıya benzer saldırı ancak tcache bilgilerini içeren parçayı serbest bırakarak daha az adımda gerçekleştirilir, bu nedenle boyutuna göre tcache indeksine adresi eklenir ve bu boyutta tahsis edilebilir ve tcache parça bilgileri bir parça olarak alınabilir, bu da bir indeksin adresini free hook olarak eklemeyi, tahsis etmeyi ve üzerine bir one gadget yazmayı mümkün kılar.

  • fd işaretçisine bir sayı eklemek için Write After Free.

  • Bu zorlukta birçok heap feng-shui gereklidir. Yazı, Tcache serbest listesinin başını kontrol etmenin oldukça kullanışlı olduğunu göstermektedir.

  • stdout üzerinden Glibc sızıntısı (FSOP).

  • Tcache zehirlenmesi ile keyfi yazma yetkisi elde etmek.

  • 💬 Discord grubuna katılın veya telegram grubuna katılın veya bizi Twitter 🐦 @hacktricks_live adresinden takip edin.**

  • Hacking püf noktalarını HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.

Last updated