Pentesting funcionalidad de carga de archivos

4

Estoy probando una aplicación web que permite cargar archivos en todos los formatos sin ninguna restricción. También hay una función para descargar los archivos cargados, pero cuando descargo el archivo se devuelve con el encabezado:

Disposición del contenido: adjunto; filename = test.html

para que no se abra en el navegador.

¿Cómo esta vulnerabilidad puede ser explotada? ¿Es posible usar este error para ejecutar XSS?

Sin este encabezado se abrirá en el navegador, por lo que sería suficiente cargar un archivo html que contenga un script, ¿es posible realizar un ataque similar en este caso?

    
pregunta user187205 27.09.2017 - 15:29
fuente

3 respuestas

3

Creo que lo único que debe tener en cuenta es que, si bien el encabezado obliga al navegador a descargar el archivo, esto no impide que el activo se incluya dentro de una página real si un usuario malintencionado encuentra una forma de inyectar eso. Por ejemplo, si la URL de descarga fue algo como esto:

http://example.com/download/{user_file_id}

Y el servidor permite que las referencias a él se inyecten directamente en otra página:

<script src="http://example.com/download/{user_file_id}"></script>

Todavía se ejecutaría como un javascript normal, independientemente del content-disposition o de cualquier otro encabezado. Supongo que no hay una buena razón para que la aplicación inyecte directamente los archivos cargados como javascript, en cuyo caso el riesgo de que comprometa al servidor parece mínimo.

Sin embargo, existe un menor riesgo de compromiso con otros usuarios en el servidor. Si un usuario malintencionado encuentra una forma de realizar una inyección XSS en el sitio web, la capacidad de alojar su carga útil de javascript en el servidor, además, les permitirá eludir cualquier protección de cualquier configuración de CSP . Como resultado, la inyección XSS se vuelve más peligrosa.

En realidad, aunque el mayor riesgo (por lo que entiendo del sistema que describió) es probablemente por cuestiones legales (nota: IANAL). Si alguien puede cargar cualquier cosa en el servidor, me imagino que existen posibles preocupaciones legales que debe conocer. El servidor que usted describe podría usarse efectivamente para distribuir cualquier información / archivos / contenido que desee cualquier persona que tenga acceso a él: especialmente si el servicio no requiere autenticación. ¿Qué sucede si alguien decide usarlo para distribuir pornografía infantil? Ese es un ejemplo extremo, pero a veces tales cosas desafortunadamente son relevantes, y hay muchos ejemplos menos extremos que todavía causan problemas.

    
respondido por el Conor Mancone 27.09.2017 - 21:59
fuente
7

Si se trata de un servidor Apache, es posible que pueda cargar un archivo .htaccess, lo que le permite establecer listados de directorios o especificar extensiones de archivos para ejecutar como php, jsp, py o lo que sea que el servidor pueda entender.

A partir de ahí, podrás cargar un webshell o algo más.

A través de la configuración de .htaccess, es posible que pueda cambiar el comportamiento del servidor hacia los archivos cargados y omitir la imposición del encabezado del archivo adjunto.

En este repositorio de GitHub encontrarás algunos ataques basados en .htaccess como shells, RCE, travesías, etc.

    
respondido por el DarkLighting 27.09.2017 - 23:02
fuente
2

A mi entender, no es posible forzar al servidor a ejecutar el código que ha cargado debido a que el encabezado está configurado en el lado del servidor. Sin embargo, dado que puede cargar el código que desee, puede que valga la pena verlo si puede ver este archivo en cualquier otro lugar donde el código puede ejecutarse en lugar de descargarse.

El único método posible que podría potencialmente funcionar es inyectar a través del nombre del archivo adjunto, por ejemplo. similar a la inyección de cabecera. El "Qué es la inyección de descarga de archivos" del siguiente enlace podría ser útil: enlace

    
respondido por el deadb1t 27.09.2017 - 21:02
fuente

Lea otras preguntas en las etiquetas