strstr y fopen, ¿hay un bypass?

3

Tengo un binario que hace esto:

if (strstr(USERCONTROLLERSTRING, "..")) exit;
fopen(CurrentPath+"\Data\"+USERCONTROLLEDSTRING, "r");

luego escupe todo el contenido del archivo. ¿Hay alguna vulnerabilidad obvia aquí?

Es un servicio de Windows, se ejecuta como SISTEMA, estoy intentando hacer que lea archivos confidenciales como SAM o tal vez alguna otra vulnerabilidad.

Solo comprueba ".." y agrega una cadena arbitraria proporcionada por el usuario a CURRENTPATH+"\Data\" y luego llama a fopen

P.S. La codificación, Unicode, base64,% -coding, etc. no funcionarán como lo hace el strstr justo antes de la llamada fopen después de toda la decodificación. Pero eso es todo, no se hacen otras comprobaciones

P.P.S. Es un Windows EXE

    
pregunta JohnDoes 18.07.2018 - 17:54
fuente

1 respuesta

1

La documentación de Windows incluye una sección relacionada con Consideraciones de seguridad: características internacionales que puede valer la pena una lectura, específicamente relacionada con la normalización de Unicode.

Para responder a su pregunta: en un vacío, asumiendo que el usuario no tiene acceso al sistema que no sea a través de su programa, su código está bien.
Dicho esto, si un atacante tiene acceso a ciertas funciones, como la creación de enlaces simbólicos / uniones de directorios, entonces podría ser posible omitir su comprobación de seguridad. Simplemente necesitarían crear una unión de directorios dentro del directorio \Data que apunta a otra parte, y luego acceder a los archivos a través de la unión.

Además, tenga en cuenta que el atacante puede tener control sobre la variable que ha etiquetado como CurrentPath . En Windows, puede ejecutar un programa con un directorio de trabajo específico, incluso si ese directorio no es en el que reside el ejecutable. Combinado con uniones de directorios, si existe alguna ubicación en la que el atacante pueda crear una En la unión de directorios, pueden explotar su programa.

Por último, puede valer la pena señalar que NTFS tiene algunos bastante características de nicho . Además, Windows admite múltiples archivos y directorios esquemas de nombres . No estoy seguro de si alguno de estos se puede explotar directamente en esta situación, pero vale la pena tenerlos en cuenta.

    
respondido por el Mr. Llama 19.07.2018 - 00:29
fuente

Lea otras preguntas en las etiquetas