Return-to-libc Attack mystery

4

Estoy estudiando el Attack Return to libc y entiendo el concepto. Pero una cosa todavía no tiene sentido. Para realizar el ataque necesito la dirección de memoria de system () y "/ bin / sh" , que es diferente en cada sistema . Y todos los ejemplos que he visto sobre el tema son sobre la creación de un código C ficticio y la depuración con gdb para averiguar estas direcciones en su sistema host.

Bueno, ¿cómo puedo obtener estas direcciones de memoria en el sistema target si aún no tengo acceso a la shell? ¿Todo lo que tengo es tal vez una dirección EIP que descubrí por fuzzing y una pila no ejecutable que no puedo ejecutar en ella?

    
pregunta Spring 06.01.2018 - 21:12
fuente

1 respuesta

5

Esto depende un poco de las mitigaciones empleadas por el host. Si no tiene ALSR en el destino (raro en los sistemas modernos), y sabe qué sistema operativo están ejecutando (por ejemplo, Ubuntu 16.04), puede configurar un sistema con las mismas versiones y ubicar las direcciones de esa manera. Si observas muchos exploits de Metasploit, tienen una tabla de versiones de TARGET que puedes especificar, lo que generalmente resulta en el uso de diferentes direcciones de destino.

En una configuración más moderna (usando ASLR), tendrás que:

  1. Encuentre un módulo cargado en una dirección fija. Esto solía ser bastante común, pero es cada vez más raro con más conciencia de seguridad.
  2. Encuentre una forma de filtrar algunas direcciones para poder encontrar dónde se encuentran libc (u otras bibliotecas útiles), luego agregue / reste un poco de desplazamiento para encontrar las direcciones necesarias para su ataque.
respondido por el David 07.01.2018 - 02:26
fuente

Lea otras preguntas en las etiquetas