Nociones de auditorías de aplicaciones Web para principiantes

A través del siguiente artículo se pretende informar acerca de los aspectos básicos que han de tenerse en cuenta a la hora de realizar auditorías de aplicaciones Web. Dicho artículo esta destinado a aquellas personas interesadas en adentrarse en este mundo y que no disponen de los conocimientos suficientes para realizarlas. 

En primer lugar es necesario partir de la siguiente pregunta:

¿Por qué es necesario realizar auditorías de aplicaciones Web?

Muchas empresas desconocen los peligros que conlleva publicar una aplicación Web de cara a sus clientes. Para poder ofrecer estos servicios es necesario realizar una apertura de puertos para que la aplicación sea accesible al exterior. Dichos puertos pueden ser empleados por usuarios mal intencionados para acceder a una organización y obtener información sensible o realizar otras acciones que pueden dañar gravemente la imagen así como la información de la compañía. 

Es necesario tener en cuenta que este tipo de aplicaciones se encuentran conectados a bases de datos que suelen contener información sensible de clientes, de la compañía, etc. Estos son algunos motivos por los cuales es necesario asegurarse de que las aplicaciones web puedan garantizar unos niveles de seguridad los mas altos posibles. 

Por lo tanto, ¿Qué es lo primero que debe hacerse? El primer paso debe de consistir en realizar un escaneo de puertos para asegurarse que solo estén abiertos los puertos imprescindibles. Suele ser muy común encontrarse casos en los cuales el programador ha dejado un servidor FTP abierto o sistema de acceso remoto. Es necesario garantizar que este tipo de servicios no estén en marcha o si se desea que estén en ejecución, deben de implementarse las medidas de seguridad correspondientes. Suele ser común que estos servicios no tengan contraseñas o en caso de tenerlas sean débiles. 

Algunas de las herramientas que se pueden emplear para este fin son las siguientes:
  • Nessus
  • Nitko
  • Nmap

Centrándonos un poco en las herramientas, ese necesario emplear las adecuadas que permitan simular ataques con el fin de auditar la seguridad de la aplicación Web. Mucha gente desconoce que la herramienta mas importante para realizar auditorías de tipo Web son los navegadores. A través de los mismos se puede obtener información de utilidad sobre la aplicación Web. Destacar que existen multitud de extensiones que puede ser empleadas por parte de los navegadores para lanzar ataques. Algunas de las extensiones que se pueden emplear son:
  • Barras de Hacking que permiten decodificar Base64 así como URLS.
  • Editores de Cookies.
  • Extensiones de desarrollador las cuales permiten modificar código para emplearlo en contra del aplicativo.
  • Extensiones que permitan interceptar información y manipularla.
  • Proxys para simular que las peticiones provienen de otras fuentes.

Pese a que las extensiones permiten realizar pruebas rápidamente, para el empleo de técnicas mas avanzadas es conveniente emplear servidores de tipo proxy. Uno de los servidores proxy mas utilizados para realizar auditorías se llama WebScarab

Posteriormente otras de las medidas necesarias a implementar consiste en adaptar la configuración del navegador para que se pueda realizar la auditoría de la forma mas adecuada. Algunos de los cambios que hay que realizar son los siguientes:
  • Ignorar los limites de los formularios.
  • Permitir que el navegador muestre campos ocultos.
  • Permitir que el navegador muestre comentarios. 

Los pasos a tener cuenta durante el proceso de auditoría son los siguientes:

XSS
  
Una de las vulnerabilidades mas comunes de un sitio web radica en el cross site scripting "XSS". No todas las XSS son explotables pero se recomienda emplear una actitud de tipo prueba y error para ver si se obtiene información. La información obtenida se debe a malas técnicas de validación de entrada así como mensajes de salidas que no están correctamente adaptados y que pueden mostrar información sensible.  

Inyecciones de SQL

Al igual que las vulnerabilidades de tipo XSS, las inyecciones de SQL permiten mostrar información de errores de bases de datos que se pueden emplear en beneficio del atacante. Suele ser muy común que que las aplicaciones Web no estén correctamente adaptadas a nuevas inyecciones SQL y permitan mostrar información de errores de la base de datos. Existen herramientas que pueden ayudar con estas tareas como Paros. 

Campos ocultos y Cookies

A través de las extensiones que permiten editar cookies, se pueden adaptar las mismas para introducir caracteres XSS o caracteres especiales y ver que sucede. 

Sesiones

En función del desarrollador este tipo de sesiones pueden estar correctamente implementadas o por el contrario ser totalmente inseguras. Tratar de encontrar el identificador de la sesión y analizar si se ha generado de una forma aleatoria o no puede permitir la suplantación de sesiones. Introducir caracteres especiales a este tipo de sesiones así como XSS puede provocar situaciones en las cuales se obtenga información sensible que puede ser empleada por atacantes. De la misma forma, realizar sumas y restas de los números de sesión puede permitir la obtención de otras sesiones. WebScarab puede ayudar mucho si se pretende profundizar al respecto de las sesiones. 

Fichero robots

Generalmente estos ficheros no están correctamente protegidos o ocultan información. Algunos ficheros de este tipo suelen ocultar páginas de administración, eventos de la web u otras rutas de interés. Probar a acceder a los sitios que muestra el fichero robots puede resultar muy interesante.


Google Hacking

Personalmente, opino que es una de las técnicas que mas información permite obtener acerca de un sitio. Analizar lo que google tiene indexado del sitio puede permitir obtener información de todo tipo. Tratar de buscar determinadas cadenas como sql, error... de un sitio puede deparar sorpresas. 

Spidering

Otra técnica que permite obtener información de un sitio consiste en descargarse dicho sitio. Es posible que Google omita información del sitio debido a la configuración del fichero robots u otros errores. La descarga del sitio a nuestro equipo para su posterior análisis a través de la herramienta grep puede permitir la obtención de errores.

En conclusión, partir de una buena recopilación de herramientas, puede facilitar enormemente las auditorías web. Suele ser común que en grandes empresas de seguridad se empleen herramientas de terceros que realicen la mayoría de los pasos que se han descrito con anterioridad. Dichas herramientas suelen tener su costo pero el beneficio que ofrece la automatización así como los informes que generan permiten obtener mucha información acerca de las vulnerabilidades a las que se encuentra expuesto una aplicación web. Dicha información se suele mostrar de una forma clara y sencilla que permite a las empresas auditadas comprender el alcance de la auditoría realizada así como conocer las vulnerabilidades descubiertas. 

Personalmente pienso que no se debe de abusar del empleo de este tipo de herramientas. Dichas herramientas deben de ser combinadas con trabajo de auditoría manual que permita al auditor adentrarse  totalmente en la aplicación y obtener una idea mas precisa del nivel de seguridad de una aplicación web.

Finalmente, considero que la formación continua del auditor es muy importante. Cada día se publican nuevos tipos de ataques que deben de ser estudiados y tenidos en cuenta por parte de los auditores.

Nota: Este artículo se ha basado en la información publicada por el laboratorio de seguridad del instituto  SANS http://www.sans.edu/research/security-laboratory/article/audit-web-apps