Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

IntelCon 2020: Uso avanzado de ZAP para hacking en aplicaciones web

459 views

Published on

Charla online en el evento IntelCON 2020

Published in: Technology
  • Be the first to comment

  • Be the first to like this

IntelCon 2020: Uso avanzado de ZAP para hacking en aplicaciones web

  1. 1. Congreso Online de Ciberinteligencia Julio 2020 #IntelCon20 20 Uso avanzado de ZAP para hacking en aplicaciones web Daniel Echeverri Montoya
  2. 2. #IntelCon202 0 WHOAMI Daniel Echeverri aka Adastra. Formador, consultor e investigador de seguridad informática. - Blog: thehackerway.com - Website: thehackerway.es - Twitter: @jdaanial - LinkedIn: adastra1 - Telegram: @TheHackerWay - Email: adastra@thehackerway.com
  3. 3. #IntelCon202 0
  4. 4. #IntelCon202 0  Generar la CA de ZAP e importarla en el navegador web que se va a utilizar. Detalles de configuración iniciales.
  5. 5. #IntelCon202 0 Si utilizas Firefox y las pruebas se realizan en local hay que habilitar la opción “network.proxy.allow_hijacking_localhost” para que el proxy pueda capturar las peticiones hacia localhost.  Detalles de configuración iniciales.
  6. 6. #IntelCon202 0  Ajustes de la JVM antes de lanzar ZAP.  ¿De qué manera voy a utilizar ZAP? ¿Como proxy local o como servidor de pruebas para lanzar escaneos por parte de un equipo de pentesters?  Ajustes de la memoria con las opciones  -Xms: Memoria inicial para la heap.  -Xmx: Memoria maxima para la heap.  Selección del GC adecuado dependiendo de la versión concreta de JVM:  Serial: -XX:+UseSerialGC  Parallel: -XX:+UseParallelGC  CMS (Deprecado desde Java 9): -XX:+UseConcMarkSweepGC  G1: -XX:+UseG1GC  ZGC (Disponible desde Java 11): -XX:UseZGC Detalles de configuración iniciales.
  7. 7. #IntelCon202 0  Crear un nuevo contexto para el o los dominios que se pretende auditar.  Si la aplicación web incluye cabeceras especiales, éstas deben incluirse a nivel de contexto para que sean replicadas en todas las peticiones HTTP que realice ZAP.  Es recomendable recomendable realizar algunos ajustes en ZAP para conexiones SSL contra algunos sitios, especialmente aquellos que utilizan SSLv2.  Tools → Options… → Connection → SSLv2Hello  Tools → Options… → Client Certificate → Enable unsafe SSL/TLS renegotiation  Ver para más información: https://github.com/zaproxy/zaproxy/wiki/FAQsslHandshake  Resulta conveniente excluir del proxy cualquier otra navegación hacia sitios externos. solo interesa la navegación contra el sitio web a auditar.  Contexts → Default Context → Exclude from Proxy → Add...  ^(?:(?!http://SITIO_AUDITADO:PUERTO).*).$  ^(?:(?!https://SITIO_AUDITADO:PUERTO).*).$  Es recomendable guardar todos estos detalles de configuración en una sesión de ZAP para no tener que volver a aplicarlos cada vez que se inicia la herramienta. Detalles de configuración iniciales.
  8. 8. #IntelCon202 0  Por defecto, cualquier actividad realizada por ZAP (Spidering o Scan) ejecuta lo que se conoce como un “escaneo pasivo” el cual se basa en un conjunto de reglas que vienen incluidas directamente en el framework.  Dicho escaneo pasivo simplemente se encarga de analizar las respuestas emitidas por el servidor, las cuales pueden ser provocadas por las peticiones que se realizan desde el modo “spider” de ZAP.  En éste modo se pueden producir alertas, las cuales se pueden recuperar fácilmente en el módulo de resultados de ZAP o programáticamente utilizando la API.  Las alertas contienen atributos que son comunes en los escaneos activos o en los procesos de spidering, incluyendo entre otras cosas: severidad, cweid, URL, descripción, etc. ZAP Passive Scanning
  9. 9. #IntelCon202 0  En éste modo, ZAP habilita las reglas de ataque y a diferencia del escaneo pasivo, se encarga de manipular las peticiones enviadas al servidor y analizar las respuestas.  Se basa en un conjunto de políticas de escaneo que vienen incluidas directamente en la herramienta y que se encargan de ejecutar múltiples pruebas contra los objetivos especificados.  Tanto en el escaneo pasivo como en el activo, se encarga de generar un conjunto de alarmas indicando las posibles vulnerabilidades detectadas en la aplicación web. ZAP Active Scanning
  10. 10. #IntelCon202 0  ZAP cuenta con un sistema de extensiones para personalizar el comportamiento de la herramienta y extenderla. Algunas de las extensiones más interesantes son:  Python and Ruby Scripting: Permite la ejecución de scripts en Python y Ruby dentro de ZAP.  Tree Tools: Funcionalidades añadidas a la vista en árbol de contextos.  Access Control Testing: Herramientas para probar controles de acceso en aplicaciones web.  All In One Notes: Extensión para mantener las notas en un panel separado.  Community Scripts: Scripts diseñados por la comunidad con utilidades interesantes.  CustomReport: Personalización de reportes HTML  ExportReport: Permite personalizar el contenido de los reportes y exportarlos en el formato elegido.  WAFP: Permite realizar fingetprint de aplicaciones web.  Requester: Panel que permite realizar peticiones HTTP manualmente. ZAP AddOns
  11. 11. #IntelCon202 0 ZAP AddOns
  12. 12. #IntelCon202 0  La herramienta permite ejecutar ataques de Fuzzing contra un recurso concreto utilizando diferentes tipos de payloads, desde rangos de números o letras hasta ficheros con entradas.  ZAP incluye los ficheros incluidos en los proyectos “jbrofuzz” y “dirbuster” de esta forma es posible seleccionar múltiples tipos ficheros para pruebas. ZAP Fuzzing
  13. 13. #IntelCon202 0  Zest es un lenguaje de scripting desarrollado por el equipo de seguridad de Mozilla que se enfoca principalmente al mundo de las aplicaciones web y el registro de las peticiones que se realizan contra ellas.  Zest se encuentra integrado en ZAP en forma de complemento, el cual viene habilitado por defecto.  Un script en Zest creado desde ZAP Proxy estará compuesto por un conjunto de peticiones que se han realizado previamente justo en el momento en el que se inicia la “grabación” de dicho script.  Es posible incluir acciones de “Zest” durante el flujo de las peticiones HTTP y de ésta forma, realizar pruebas de penetración sobre secciones concretas de la aplicación web o incluso depurar las respuestas recibidas por parte del servidor. Zest scripting
  14. 14. #IntelCon202 0  ZAP puede ejecutarse en modo “headless” con la opción “-daemon” lo que le permite a la herramienta ejecutarse como un servicio en segundo plano.  ZAP cuenta con una API Rest que permite interactuar con el servicio de forma programática utilizando los endpoints disponibles.  Existen clientes para consumir dicha API escritos en Python y Java.  La API Rest de ZAP se puede configurar fácilmente en:  Tools → Options… → API ZAP – API Rest.
  15. 15. Congreso Online de Ciberinteligencia | Julio #IntelCon20 20 Gracias por la atención

×