¿Son posibles los desbordamientos del búfer de pila en esta instancia?

2

Digamos que hay un programa en C que simplemente toma una cadena argv[1] y usa sprintf para copiarla en un búfer finito. Desbordamiento de búfer de pila clásica. Incluso digamos que el programa es más complicado y permite técnicas como ROP.

Pero luego se compila con una pila de cookies / seguridad y se ejecuta en un sistema operativo utilizando ASLR y DEP.

¿No tiene la posibilidad de ejecutar el método de código de shell arbitrario 0?

    
pregunta Jonny 07.09.2014 - 22:23
fuente

1 respuesta

1

Depende.

DEP te impide hacer un salto a esp y ejecutar el código allí. ASLR es lo más importante que debes omitir aquí.

Hay varias maneras de hacer esto:

  • Módulos cargados en el proceso que no tienen ASLR habilitado. Hay muchas maneras en que esto puede suceder:
    • DLL que son parte de su aplicación que se compilaron sin la marca ASLR.
    • Inyectado como parte de las DLL de AppInit.
    • Inyectado por aplicaciones de terceros, por ejemplo, antivirus o algo así como xfire / Fraps.
    • Los controladores de shell se cargan junto con shdoclc.dll cuando usa los cuadros de diálogo de archivos estándar.
  • Asignaciones de direcciones fijas (por ejemplo, VirtualAlloc con el conjunto de parámetros lpAddress )
  • Las vulnerabilidades secundarias que permiten la divulgación de memoria o la divulgación de punteros pueden ser útiles para desarrollar una idea de dónde están las cosas en la memoria.
  • Corrupción de la pila de alguna manera que provoca un problema secundario, por ejemplo. corrupción del montón. Esto podría abrir otras vías de explotación, utilizando trucos como la pulverización en pilas, el feng-shui en pilas, la pulverización con JIT, etc.
respondido por el Polynomial 07.09.2014 - 22:42
fuente

Lea otras preguntas en las etiquetas