House of Lore | Small bin Attack
Reading time: 3 minutes
tip
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a HackTricks y HackTricks Cloud repos de github.
Información Básica
Código
- Verifica el de https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house_of_lore/
- Esto no está funcionando
- O: https://github.com/shellphish/how2heap/blob/master/glibc_2.39/house_of_lore.c
- Esto no está funcionando incluso si intenta eludir algunas verificaciones obteniendo el error:
malloc(): unaligned tcache chunk detected
- Este ejemplo todavía está funcionando: https://guyinatuxedo.github.io/40-house_of_lore/house_lore_exp/index.html
Objetivo
- Insertar un chunk pequeño falso en el pequeño bin para que luego sea posible asignarlo.
Nota que el chunk pequeño agregado es el falso que crea el atacante y no uno falso en una posición arbitraria.
Requisitos
- Crear 2 chunks falsos y enlazarlos entre sí y con el chunk legítimo en el pequeño bin:
fake0.bk
->fake1
fake1.fd
->fake0
fake0.fd
->legit
(necesitas modificar un puntero en el chunk del pequeño bin liberado a través de alguna otra vulnerabilidad)legit.bk
->fake0
Entonces podrás asignar fake0
.
Ataque
- Se asigna un chunk pequeño (
legit
), luego se asigna otro para evitar la consolidación con el chunk superior. Luego,legit
se libera (moviendo a la lista de bin no ordenados) y se asigna un chunk más grande, moviendolegit
al pequeño bin. - Un atacante genera un par de chunks pequeños falsos y realiza el enlace necesario para eludir las verificaciones de sanidad:
fake0.bk
->fake1
fake1.fd
->fake0
fake0.fd
->legit
(necesitas modificar un puntero en el chunk del pequeño bin liberado a través de alguna otra vulnerabilidad)legit.bk
->fake0
- Se asigna un chunk pequeño para obtener legit, haciendo que
fake0
esté en la lista superior de bins pequeños - Se asigna otro chunk pequeño, obteniendo
fake0
como un chunk, permitiendo potencialmente leer/escribir punteros dentro de él.
Referencias
- https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house_of_lore/
- https://heap-exploitation.dhavalkapil.com/attacks/house_of_lore
- https://guyinatuxedo.github.io/40-house_of_lore/house_lore_exp/index.html
tip
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a HackTricks y HackTricks Cloud repos de github.