Test Upload of Unexpected File Types (OTG-BUSLOGIC-008)

La prueba de seguridad OTG-BUSLOGIC-008 define los pasos para comprobar si la aplicación web es capaz de manejar adecuadamente la validación de los archivos con extensiones no permitidas en la lógica de procesos.

¿Qué riesgos para la seguridad de la aplicación pueden inferirse de esto? Muy sencillo, imaginemos una aplicación web que recibe archivos, los cataloga y muestra. Si la aplicación permite que sea subido un archivo con extensión .html en lugar de un .doc, puede provocar que en todas las rutas donde se debía visualizar un documento, puede ser ejecutado código HTML o código script. Permitiendo de este modo que pueda ser modificada la página de la aplicación web a través de un defacement o incluso realizando un ataque XSS persistente. Ni que decir lo que puede suceder si la aplicación permite que suban un fichero con extensión php.

Por este motivo, la aplicación web debe contar con mecanismos que evalúen los archivos que son subidos. Si solamente se evalúa la extensión, estaríamos en presencia de una evaluación débil y si se evalúa todo el contenido estaríamos en presencia de una evaluación más completa o fuerte.

¿Cuáles son los pasos que deben ejecutarse para realizar la prueba de seguridad?

  • Revisar la documentación del proyecto y desarrollar una prueba exploratoria buscando los tipos de archivos que no deben ser aprobados por la aplicación web.
  • Preparar una colección de archivos que no deben ser aprobados por la aplicación web para la subida, por ejemplo, archivos con extensiones jsp, php, html, etc.
  • Trata de subir archivos los soportados por la aplicación web y verifica que sean adecuadamente rechazados.
  • Si hay funcionalidades de subidas de paquetes de archivos, debe probarse que, en la subida de un lote de archivos, cada uno de ellos sea validado individualmente.

Desde el punto de vista del desarrollador, tiene que estar bien definida en la aplicación web los tipos de archivos que pueden ser subidos. En este caso se propone la ejecución de una prueba de seguridad de caja blanca. Si esto no es posible, siempre quedará la opción de experimentar con archivos con extensiones de riesgos conocidas para ver hasta qué punto son asimiladas o rechazadas por la aplicación web. Para ilustrar mejor lo antes expuestos, realicé una prueba OTG-BUSLOGIC-008 demostrativa gracias al proyecto BWA-OWASP, la cual describo a continuación:

  1. WackoPicko.com es una aplicación web que permite compartir imágenes con tus amigos y además posibilita comprar los derechos de imágenes para usarla en revistas o en sitios web. Esta aplicación es un prototipo para la realización de pruebas de penetración que viene en la Virtual Machine del proyecto Broken Web Applications de OWASP (Figura 1).

    P31.1

    Figura 1

  2. Supuestamente, como es una aplicación que se dedica al intercambio de imágenes, no debería permitir que sean subidos archivos con extensiones html, php u otros. Para comprobarlo, voy a crear el clásico archivo de prueba PHP conteniendo la función phpinfo() y subirlo mediante el formulario establecido (Figura 2).

    P31.2.png

    Figura 2

  3. Puede apreciarse que no se muestra una imagen (pues no subimos una), pero aparecen los demás elementos. En ningún momento la aplicación web ha mostrado un mensaje de error, indicando que rechazó el archivo con extensión php (figura 3). Por ello, puedo suponer que la subida del archivo fue satisfactoria y, por tanto, se encuentra en el árbol de rutas de la aplicación web.

    P31.3

    Figura 3

  4. Para buscar más información sobre la ruta a donde “supuestamente” fue a dar el archivo que subí, realizo clic derecho sobre la supuesta imagen y doy clic en la opción “Ver imagen”. Puede apreciarse como se obtiene un código de respuesta 404 que nos informa que el archivo titulado phpinfo.php.128_128.jpg no existe (Figura 4). Sin embargo, podemos ver que se incluye la cadena h4ck1n6 en la URL, lo que nos lleva a suponer que debe ser una ruta donde se colocan los archivos que pertenecen a esa etiqueta(Tag) que yo mismo introduje en el paso 2.

    P31.4

    Figura 4

  5. Podamos la URL hasta quedarnos simplemente con la ruta http://192.168.56.104/WackoPicko/upload/h4ck1n6. De repente podemos acceder al fichero phpinfo.php que subimos anteriormente (Figura 5):

    P31.5

    Figura 5

  6. Finalmente, probamos a ejecutar el archivo y mágicamente, podemos ejecutar una pequeñísima función de PHP (Figura 6):

    P31.6

    Figura 6

Hasta aquí, hemos podido apreciar un breve y sano ejemplo de cómo se puede llevar a cabo esta prueba de seguridad. Por supuesto, si un ciberdelincuente descubre esta vulnerabilidad en tu aplicación web, de seguro tendrá cosas más interesantes que probar que un simple phpinfo (), dalo por seguro.

Espero que te haya gustado el post, yo por mi parte me he entretenido bastante escribiéndolo.

S4lud0s y h4st4 el próx1m0 p0st!!!

Anuncios

3 comentarios en “Test Upload of Unexpected File Types (OTG-BUSLOGIC-008)

  1. Pingback: Open Journal Systems: ¿Que tan bueno es no tener vulnerabilidades? | Behique Digital

  2. Pingback: Análisis de la shellcode IndoXploit | Behique Digital

  3. Pingback: Guía de Pruebas de OWASP 4.0 | Behique Digital

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s