Double Free
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
As jy 'n blok geheue meer as een keer vrylaat, kan dit die allokator se data in die war stuur en die deur oopmaak vir aanvalle. Hier is hoe dit gebeur: wanneer jy 'n blok geheue vrylaat, gaan dit terug in 'n lys van vrye stukke (bv. die "vinnige bin"). As jy dieselfde blok twee keer agtereenvolgens vrylaat, detecteer die allokator dit en gooi 'n fout. Maar as jy 'n ander stuk tussenin vrylaat, word die dubbele-vry kontrole omseil, wat korrupsie veroorsaak.
Nou, wanneer jy nuwe geheue vra (met malloc
), kan die allokator jou 'n blok gee wat twee keer vrygelat is. Dit kan lei tot twee verskillende punters wat na dieselfde geheue ligging wys. As 'n aanvaller een van daardie punters beheer, kan hulle die inhoud van daardie geheue verander, wat sekuriteitsprobleme kan veroorsaak of selfs toelaat dat hulle kode uitvoer.
Voorbeeld:
In hierdie voorbeeld, nadat die tcache met verskeie vrygestelde stukke (7) gevul is, vry die stuk h
, dan die stuk i
, en dan weer h
, wat 'n dubbele vrystelling veroorsaak (ook bekend as Fast Bin dup). Dit open die moontlikheid om oorvleuelende geheue adresse te ontvang wanneer heraangewys word, wat beteken dat twee of meer punters na dieselfde geheue ligging kan wys. Deur data deur een punter te manipuleer, kan dit dan die ander beïnvloed, wat 'n kritieke sekuriteitsrisiko en potensiaal vir uitbuiting skep.
Voer dit uit, let op hoe i1
en i2
dieselfde adres gekry het:
Ons kan slegs Fast-Bin-grootte stukke toewys, behalwe vir grootte 0x70
, wat die gewone __malloc_hook
oorskryding voorkom.
In plaas daarvan, gebruik ons PIE adresse wat met 0x56
begin as 'n teiken vir Fast Bin dup (1/2 kans).
Een plek waar PIE adresse gestoor word, is in main_arena
, wat binne Glibc is en naby __malloc_hook
Ons teiken 'n spesifieke offset van main_arena
om 'n stuk daar toe te wys en voort te gaan om stukke toe te wys totdat ons __malloc_hook
bereik om kode-uitvoering te verkry.
Deur Tcache-bins en 'n null-byte oorgang te gebruik, kan ons 'n dubbele-vrystelling situasie bereik:
Ons wys drie stukke van grootte 0x110
(A
, B
, C
)
Ons vry B
Ons vry A
en wys weer om die null-byte oorgang te gebruik
Nou is B
se grootte veld 0x100
, in plaas van 0x111
, so ons kan dit weer vry.
Ons het een Tcache-bin van grootte 0x110
en een van grootte 0x100
wat na dieselfde adres wys. So ons het 'n dubbele vrystelling.
Ons benut die dubbele vrystelling deur Tcache vergiftiging
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)