Cuando se habla de pentesting sobre aplicaciones web casi todo el mundo automáticamente menciona el OWASP Top 10 y si bien es un proyecto genial, hay más “vida” en la comunidad OWASP además del Top 10. Lo cierto es que cuenta con proyectos fantásticos como ZAP del que ya he escrito hace algunas semanas en el post 5 funcionalidades interesantes en ZAP Proxy para Pentesting en aplicaciones web (aunque en realidad he listado 6). También cuenta con el proyecto Core Rule Set (CRS) para mod_security que ayuda a equipar mejor el servidor web ante posibles ataques o la aplicación web vulnerable por diseño Juice Shop la cual es probablemente uno de los mejores recursos libres para aprender las bases sobre pentesting web y que se puede configurar con K8S para montar cosas como un cluster de “Juicy Shops” para entrenamientos, CTFs o competiciones. Todos estos proyectos son bastante conocidos pero el Web Security Testing Guide (WSTG) probablemente es el menos sonado, posiblemente debido a que no es una guiá tan “ligera” como el OWASP Top 10, pero en mi opinión igual de importante o incluso puede que más, por ese motivo existe este post.
El WSTG es un manual bastante completo que no solamente cubre cuestiones relacionadas con el pentesting en aplicaciones web, sino que además su enfoque es integrador y pretende aportar una visión global de la seguridad de una aplicación web desde sus cimientos, considerando el desarrollo seguro como uno de los procesos más importantes (o puede que el más importante) en la seguridad de cualquier aplicación web. En la guía del OWASP Top 10 también se tiene el cuenta el desarrollo seguro, pero desde luego su enfoque se centra en la definición de actores, amenazas, factores de riesgo, prevalencia de las vulnerabilidades y su explotabilidad. Esto significa que no especifica con demasiada profundidad las cuestiones técnicas que hay que considerar a la hora de crear software y probar sus funcionalidades desde el punto de vista de la calidad y seguridad.
En primer lugar el proyecto y por supuesto, la guía propiamente dicha se encuentra disponible aquí. En la introducción se explica que se trata de una guía completa con buenas prácticas para desarrolladores y profesionales de la seguridad que se deben de tener en cuenta para cumplir con su rol. Se plantean una serie de cuestiones importantes desde el punto de vista técnico y funcional como ocurre en el OWASP Top 10, pero con un nivel de detalle mucho más amplio tal como se puede ver en el índice y en cada uno de los apartados de la guía. Las secciones del documento se detallan a continuación y se expone un breve resumen sobre qué incluyen.
-
Bienvenida, licencia e integrantes del proyecto.
Es una sección muy corta en la que detalla una pequeña introducción sobre la guía, su licenciamiento (Creative Commons 4.0) y las personas que aportan al proyecto. Tal como se puede apreciar, hay aproximadamente unas 30 personas que colaboran en los contenidos de la guía.
-
Introducción.
En esta sección se detallan conceptos básicos sobre desarrollo de software y revisión de código, así como metodologías orientadas al SDLC y el enfoque que se le debe dar a las pruebas de intrusión en entornos web. Las ideas expuestas en esta sección son especialmente interesantes ya que hablan de problemáticas comunes en equipos de desarrollo, en los que desafortunadamente no se prueba adecuadamente lo que se desarrolla hasta que se llega a una etapa critica (que es precisamente la de entrega o pase a producción). Además, hace énfasis en los activos que hay que probar y cómo hacerlo: Personas, Procesos y Tecnología. En la guía afirman que sin un enfoque holístico no se puede medir adecuadamente el riesgo de una aplicación debido a que las vulnerabilidades pueden presentarse de diferentes formas y en diferentes fases operativas. Por otro lado, aparece una sección en la que se habla sobre la gestión de la conocida “ventana de riesgo”.
-
OWASP Testing Framework.
En esta sección de la guía se describe el framework de testing que se puede implementar, definiendo cada una de las etapas de construcción del software, empezando por las fases iniciales correspondientes a la recolección de requisitos y diseño pasando por las etapas de desarrollo y despliegue hasta la puesta en producción, operaciones y mantenimiento del software. Esta es una de las secciones más importantes de la guía ya que en ella se definen una serie de buenas prácticas que, cualquiera que haya estado en un equipo de desarrollo, ha visto como muchas de ellas NO se aplican o se aplican de manera incompleta/incorrecta.
-
Web Application Security Testing.
En esta sección es la más extensa de todo el documento y precisamente la que más valor aporta a un técnico, ya que se detallan las pruebas que se deben realizar en 12 secciones claramente definidas y acotadas. Las pruebas que se indican pueden aplicar a cualquier aplicación web independiente de su tamaño, diseño o funcionalidad y van más allá de las típicas pruebas de seguridad que se definen en el OWASP Top 10. Estas secciones describen con todo lujo de detalle, lo que hace cualquier pentester cuando debe ejecutar una auditoría web, con casos prácticos, herramientas y ejemplos muy bien documentados. Las secciones son las siguientes:
- Information Gathering.
- Configuration and Deployment Management Testing.
- Identity Management Testing.
- Authentication Testing.
- Authorization Testing.
- Session Management Testing.
- Input Validation Testing.
- Testing for Error Handling.
- Testing for Weak Cryptography.
- Business Logic Testing.
- Client Site Testing.
- API Testing.
-
Reporting
En la última sección se habla de los detalles a tener en cuenta en el reporte que se debe entregar al finalizar una auditoría. Esta sección es interesante ya que indica cada uno de los elementos que incluye un informe profesional y orientado a enseñar la calidad de los trabajos realizados. Incluye algunas referencias en donde se explica cómo estructurar adecuadamente dicho documento que pueden ser útiles.
-
Apéndices.
Por último, pero no menos importante, se encuentran los apéndices en donde enumeran un conjunto de herramientas básicas para hacking web, lecturas recomendadas, referencias externas a vectores/técnicas de ataque y utilidades tanto para desarrolladores como para pentesters.
Si bien el OWASP Top 10 es una estupenda referencia metodológica para llevar a cabo pentesting web, lo cierto es que se queda “corta” cuando se trata de aplicaciones web modernas y que han aplicado unos mínimos de seguridad. Por ejemplo, si la aplicación web se ha desarrollado con un Framework de desarrollo reciente (y sin ninguna vulnerabilidad conocida) posiblemente las vulnerabilidades de inyección típicas como SQLi o XSS serán menos frecuentes y probablemente, los desarrolladores utilizarán las características propias del framework para el acceso a datos en lugar de utilizar, por ejemplo, SQL de forma directa (algo habitual si se utiliza un ORM como JPA, Hibernate, el entity framework de .Net o los models de Django). Las aplicaciones modernas requieren que el pentester aplique un enfoque orientado a realizar las pruebas en profundad y esto es precisamente lo que promueve la WSTG. Tanto si como si eres desarrollador o pentester, es una guía que merece la pena conocer en detalle y un estupendo recurso para mejorar conocimientos y habilidades técnicas.
Un saludo y Happy Hack!
Adastra.