House of Einherjar
Reading time: 4 minutes
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Basiese Inligting
Kode
- Kyk na die voorbeeld van https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c
- Of die een van https://guyinatuxedo.github.io/42-house_of_einherjar/house_einherjar_exp/index.html#house-of-einherjar-explanation (jy mag dalk die tcache moet vul)
Doel
- Die doel is om geheue in byna enige spesifieke adres toe te ken.
Vereistes
- Skep 'n valse chunk wanneer ons 'n chunk wil toeken:
- Stel wysers in om na hulself te wys om sanity kontroles te omseil
- Een-byte oorgang met 'n null byte van een chunk na die volgende om die
PREV_INUSE
vlag te verander. - Dui in die
prev_size
van die off-by-null misbruikte chunk die verskil tussen homself en die valse chunk aan - Die grootte van die valse chunk moet ook dieselfde grootte wees om sanity kontroles te omseil
- Om hierdie chunks te konstrueer, sal jy 'n heap leak nodig hê.
Aanval
A
valse chunk word binne 'n chunk geskep wat deur die aanvaller beheer word wat metfd
enbk
na die oorspronklike chunk wys om beskermings te omseil- 2 ander chunks (
B
enC
) word toegeken - Deur die off by een in die
B
een word dieprev in use
bit skoongemaak en dieprev_size
data word oorgeskryf met die verskil tussen die plek waar dieC
chunk toegeken word, na die valseA
chunk wat voorheen gegenereer is - Hierdie
prev_size
en die grootte in die valse chunkA
moet dieselfde wees om kontroles te omseil. - Dan word die tcache gevul
- Dan word
C
vrygestel sodat dit saamgevoeg word met die valse chunkA
- Dan word 'n nuwe chunk
D
geskep wat in die valseA
chunk begin en dieB
chunk bedek - Die huis van Einherjar eindig hier
- Dit kan voortgegaan word met 'n vinnige bin aanval of Tcache vergiftiging:
- Vry
B
om dit by die vinnige bin / Tcache te voeg B
'sfd
word oorgeskryf sodat dit na die teikenadres wys deur dieD
chunk te misbruik (aangesien ditB
binne bevat)- Dan word 2 mallocs gedoen en die tweede een gaan die teikenadres toeken
Verwysings en ander voorbeelde
- https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c
- CTF https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house_of_einherjar/#2016-seccon-tinypad
- Na die vrystelling van wysers word hulle nie genullifiseer nie, so dit is steeds moontlik om toegang tot hul data te verkry. Daarom word 'n chunk in die onsorteerde bin geplaas en die wysers wat dit bevat, word geleak (libc leak) en dan word 'n nuwe heap op die onsorteerde bin geplaas en 'n heap adres van die wysers wat dit ontvang, geleak.
- baby-talk. DiceCTF 2024
- Null-byte oorgang fout in
strtok
. - Gebruik House of Einherjar om 'n oorvleuelende chunks situasie te kry en eindig met Tcache vergiftiging om 'n arbitrêre skryf primitief te verkry.
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.