5.4 KiB
Groot Bin Aanval
Leer AWS hak vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy wil sien jou maatskappy geadverteer in HackTricks of laai HackTricks af in PDF-formaat Kyk na die INSKRYWINGSPLANNE!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS Familie, ons versameling van eksklusiewe NFTs
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel jou haktruuks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
Basiese Inligting
Vir meer inligting oor wat 'n groot bin is, kyk na hierdie bladsy:
{% content-ref url="bins-and-memory-allocations.md" %} bins-and-memory-allocations.md {% endcontent-ref %}
Dit is moontlik om 'n goeie voorbeeld te vind in how2heap - groot bin aanval.
Basies kan jy hier sien hoe, in die nuutste "huidige" weergawe van glibc (2.35), dit nie nagegaan word nie: P->bk_nextsize
wat dit moontlik maak om 'n arbitrêre adres te wysig met die waarde van 'n groot bin brokkie as sekere voorwaardes voldoen word.
In daardie voorbeeld kan jy die volgende voorwaardes vind:
- 'n Groot brokkie word toegewys
- 'n Groot brokkie kleiner as die eerste een maar in dieselfde indeks word toegewys
- Dit moet kleiner wees sodat dit eerste in die bin moet gaan
- ( 'n Brokkie om saamvoeging met die boonste brokkie te voorkom word geskep)
- Dan word die eerste groot brokkie vrygestel en 'n nuwe brokkie groter as dit toegewys -> Brokkie1 gaan na die groot bin
- Dan word die tweede groot brokkie vrygestel
- Nou, die kwesbaarheid: Die aanvaller kan
chunk1->bk_nextsize
wysig na[target-0x20]
- Dan word 'n groter brokkie as brokkie 2 toegewys, sodat brokkie2 in die groot bin ingevoeg word en die adres
chunk1->bk_nextsize->fd_nextsize
met die adres van brokkie2 oorskryf
{% hint style="success" %}
Daar is ander potensiële scenario's, die ding is om 'n brokkie by die groot bin te voeg wat kleiner is as 'n huidige X brokkie in die bin, sodat dit net voor dit in die bin ingevoeg moet word, en ons moet in staat wees om X se bk_nextsize
te wysig aangesien dit waar die adres van die klein brokkie geskryf sal word.
{% endhint %}
Hierdie is die relevante kode van malloc. Kommentaar is bygevoeg om beter te verstaan hoe die adres oorskryf is:
{% 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 %}
Dit kan gebruik word om die global_max_fast
globale veranderlike van libc te oorskryf om dan 'n vinnige bin-aanval met groter blokke te benut.
Jy kan 'n ander goeie verduideliking van hierdie aanval vind by guyinatuxedo.
Ander voorbeelde
- La casa de papel. HackOn CTF 2024
- Groot bin-aanval in dieselfde situasie soos dit verskyn in how2heap.
- Die skryf-primitief is meer kompleks, omdat
global_max_fast
hier nutteloos is. - FSOP is nodig om die aanval af te handel.
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy jou maatskappy geadverteer wil sien in HackTricks of HackTricks in PDF wil aflaai Kyk na die INSKRYWINGSPLANNE!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS Familie, ons versameling van eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel jou haktruuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslag.