hacktricks/binary-exploitation/arbitrary-write-2-exec/www2exec-atexit.md

3.7 KiB

WWW2Exec - atexit()

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Equipos Rojos de AWS de HackTricks)!

Otras formas de apoyar a HackTricks:

Estructuras de __atexit

{% hint style="danger" %} Hoy en día es muy raro explotar esto. {% endhint %}

atexit() es una función a la que se le pasan otras funciones como parámetros. Estas funciones se ejecutarán al ejecutar un exit() o al retornar del main.
Si puedes modificar la dirección de alguna de estas funciones para que apunte a un shellcode, por ejemplo, obtendrás el control del proceso, pero actualmente esto es más complicado.
Actualmente las direcciones de las funciones a ejecutar están ocultas detrás de varias estructuras y finalmente la dirección a la que apuntan no son las direcciones de las funciones, sino que están encriptadas con XOR y desplazamientos con una clave aleatoria. Por lo tanto, actualmente este vector de ataque no es muy útil al menos en x86 y x64_86.
La función de encriptación es PTR_MANGLE. Otras arquitecturas como m68k, mips32, mips64, aarch64, arm, hppa... no implementan la función de encriptación porque devuelven lo mismo que recibieron como entrada. Por lo tanto, estas arquitecturas serían atacables por este vector.

Puedes encontrar una explicación detallada de cómo funciona esto en https://m101.github.io/binholic/2017/05/20/notes-on-abusing-exit-handlers.html

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Equipos Rojos de AWS de HackTricks)!

Otras formas de apoyar a HackTricks: