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

3.7 KiB

WWW2Exec - atexit()

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

__atexit Estruturas

{% hint style="danger" %} Atualmente é muito estranho explorar isso! {% endhint %}

atexit() é uma função para a qual outras funções são passadas como parâmetros. Essas funções serão executadas ao executar um exit() ou o retorno do main.
Se você puder modificar o endereço de qualquer dessas funções para apontar para um shellcode, por exemplo, você ganhará controle do processo, mas isso atualmente é mais complicado.
Atualmente os endereços das funções a serem executadas estão ocultos por várias estruturas e finalmente o endereço para o qual apontam não são os endereços das funções, mas são criptografados com XOR e deslocamentos com uma chave aleatória. Portanto, atualmente esse vetor de ataque não é muito útil pelo menos em x86 e x64_86.
A função de criptografia é PTR_MANGLE. Outras arquiteturas como m68k, mips32, mips64, aarch64, arm, hppa... não implementam a função de criptografia porque ela retorna o mesmo que recebeu como entrada. Portanto, essas arquiteturas seriam atacáveis por esse vetor.

Você pode encontrar uma explicação detalhada de como isso funciona em https://m101.github.io/binholic/2017/05/20/notes-on-abusing-exit-handlers.html

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks: