Ret2ret & Reo2pop

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

Otras formas de apoyar a HackTricks:

Ret2ret

El objetivo principal de esta técnica es intentar burlar ASLR abusando de un puntero existente en la pila.

Básicamente, los desbordamientos de pila suelen ser causados por cadenas, y las cadenas terminan con un byte nulo al final en la memoria. Esto permite intentar reducir el lugar apuntado por un puntero existente en la pila. Entonces, si la pila contenía 0xbfffffdd, este desbordamiento podría transformarlo en 0xbfffff00 (nota el último byte anulado).

Si esa dirección apunta a nuestro shellcode en la pila, es posible hacer que el flujo alcance esa dirección agregando direcciones a la instrucción ret hasta que se alcance esta.

Por lo tanto, el ataque sería así:

  • Trineo de NOP

  • Shellcode

  • Sobrescribir la pila desde el EIP con direcciones a ret (trineo de RET)

  • 0x00 añadido por la cadena modificando una dirección de la pila haciéndola apuntar al trineo de NOP

Siguiendo este enlace puedes ver un ejemplo de un binario vulnerable y en este el exploit.

Ret2pop

En caso de que puedas encontrar un puntero perfecto en la pila que no quieras modificar (en ret2ret cambiamos el último byte más bajo a 0x00), puedes realizar el mismo ataque ret2ret, pero la longitud del trineo de RET debe ser acortada en 1 (para que el 0x00 final sobrescriba los datos justo antes del puntero perfecto), y la última dirección del trineo de RET debe apuntar a pop <reg>; ret. De esta manera, los datos antes del puntero perfecto serán eliminados de la pila (estos son los datos afectados por el 0x00) y el último ret apuntará a la dirección perfecta en la pila sin ningún cambio.

Siguiendo este enlace puedes ver un ejemplo de un binario vulnerable y en este el exploit.

Referencias

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

Otras formas de apoyar a HackTricks:

Última actualización