lunes, julio 03, 2017

Un pentesting usando OWASP Top Ten 2017: Sensitive Data Exposure, Security Misconfiguration & Code Injection

En los últimos exámenes de las convocatorias de las becas Talentum Startups de Telefónica, una de las preguntas que realizamos a los candidatos, para ver qué tipo de contacto o conocimientos tienen sobre seguridad informática, es qué prioridad tiene la exposición de datos sensibles frente a otro tipo de amenazas, todas ellas, recogidas en el informe Top Ten de la OWASP.

Figura 1: Un pentesting usando OWASP Top Ten 2017:
Sensitive Data Exposure, Security Misconfiguration & Code Injection

A veces nos encontramos con que las vulnerabilidades de inyección de código, situadas en las primeras partes de la lista son las más importantes, pero como se ve en el libro de Hacking Web Technologies, otro tipos de vulnerabilidades menores pueden ser el indicio para encontrar fallos que permitan llegar al corazón del sistema. En el informe OWASP TOP TEN 2017, la exposición de datos sensibles ocupa el sexto lugar.

Figura 2: Posición de "Sensitive Data Exposure" en el ranking OWASP Top Ten 2017

A priori, puede parecer que la exposición de datos sensibles puede tener poco peso específico en comparación con otro tipo de riesgos recogidos en el informe, pero, como veremos en el siguiente artículo, la exposición de datos sensible puede desvelar otros vectores de ataque por los cuales un atacante puede obtener información realmente crítica de una organización, simplemente haciendo correctamente la fase de footprinting de toda auditoría.

Transferencia de Zona

En un ethical hacking realizado dentro de un entorno donde se haga uso de un servicio de DNS a nivel interno de la organización, una de las cosas que siempre hay que mirar es si el servidor que soporta la resolución de nombres está bien configurado, por ejemplo, no permitiendo que el servidor primario de una zona revele nombres y direcciones IP de las máquinas que forman esa zona. Para ello, basta detectar la máquina que aparezca en el registro SOA y ésta sera quién tenga conocimiento de los nombres y direcciones IP de la zona.

Figura 3: Servidor primario DNS y dirección e-mail del administrador del dominio.

Una vez detectado el servidor de nombres que conoce la zona, el siguiente paso es hacer que sea nuestro servidor de nombres y realizarle la petición de transferencia de zona preguntándole por todas las máquinas que están bajo el nombre de dominio principal donde él se encuentra.

Figura 4: Petición de transferencia de zona del dominio objetivo

Si el servidor de nombres primario de la zona no está bien configurado, arrojará todos los hostnames y las direcciones IP de las máquinas que forman la zona que él controla, como sucede en este caso:

Figura 5: Extracto de la información de la zona devuelta por el DNS primario

Aunque, como recoge la OWASP Top Ten, no salgan a priori datos confidenciales, la transferencia de zona nos aporta una información más que interesante para probar otros vectores de ataque, como veremos a continuación y, por supuesto, es un fallo de seguridad que se debe evitar en la configuración de cualquier servidor DNS de una organización.

Inyección de código

Tal y como recoge el Top Ten de OWASP, en 2017 la vulnerabilidad con más criticidad en entornos web sigue siendo la inyección de código. La transferencia de zona anterior nos revela una web que puede que sea vulnerable a inyección de código SQL.

Figura 6: Sitio web posiblemente vulnerable a SQLi

Automatizando el ataque SQLi con la herramienta sqlmap que viene con Kali Linux 2, parece que hay un parámetro enviado por GET al servidor donde poder inyectar código SQL y JavaScript.

Figura 7: Posible parámetro GET vulnerable a SQLi y XSS

Al final, se comprueba cómo realmente es posible inyectar código SQL por el parámetro indicado, junto con los diferentes payloads que aprovechan la vulnerabilidad señalada para, en este caso, extraer información del motor de la base de datos.

Figura 8: Parámetro vulnerable a SQLi y payloads que pueden aprovechar el bug

Ejecutando el comando sqlmap -u http://157.xxxxxxx.xxxx.php?Curso=2009 -p Curso --tables -T Miembros –dump es posible obtener los datos confidenciales almacenados sobre los miembros de la organización, como su cuenta de correo electrónico y su contraseña sin cifrar, algo que en el OWASP TOP Ten del año 2007 estaba catalogado en puesto 8: Insecure Cryptographic Storage.

Figura 8: Información confidencial de algunos miembros de la organización

Conclusiones

Puede parecer que la exposición de datos sensible, dentro del ranking establecido por la OWASP TOP Ten 2017 tenga menos importancia que el resto de vulnerabilidades que la preceden, pero gracias a esta relevación de información, a veces es posible descubrir y explotar otras vulnerabilidades con más peso dentro del Top Ten.

Figura 9: Security Misconfiguration en OWASP Top Ten 2017

Además, aunque la OWASP no incluya de manera explícita dentro de la Exposición de Datos Sensibles la información a la que se puede acceder por culpa de un servidor de nombres mal configurado, puede arrojarnos pistas muy útiles a seguir en un test de intrusión y este fallo queda reflejado en el elemento 5: Security Misconfiguration.

Autor: Amador Aparicio de la Fuente (@amadapa)
Escritor del libro "Hacking Web Technologies"

No hay comentarios:

Publicar un comentario