
htcap es un escáner de aplicaciones web capaz de rastrear aplicaciones de página única (SPA) de forma recursiva interceptando llamadas ajax y cambios en el DOM.
htcap es un escáner de aplicaciones web capaz de rastrear aplicaciones de una sola página (SPA) de forma recursiva interceptando llamadas ajax y cambios en el DOM.
Htcap no es solo otro escáner de vulnerabilidades, ya que está enfocado en el proceso de rastreo y está diseñado para detectar e interceptar llamadas ajax/fetch, websockets, jsonp, etc. Utiliza sus propios fuzzers más un conjunto de herramientas externas para descubrir vulnerabilidades y está diseñado para ser una herramienta tanto para pruebas de penetración manuales como automatizadas de aplicaciones web modernas.
También cuenta con un marco pequeño pero potente para desarrollar rápidamente fuzzers personalizados con menos de 60 líneas de Python. Los fuzzers pueden trabajar con datos GET/POST, cargas útiles XML y JSON y cambiar entre POST y GET. Por supuesto, los fuzzers se ejecutan en paralelo en un entorno multihilo.
Esta es la primera versión que utiliza headless chrome en lugar de phantomjs. El motor de rastreo Javascript de Htcap ha sido reescrito para aprovechar las nuevas características async/await de ecmascript y se ha convertido en un módulo de nodejs construido sobre Puppetteer.
Más información aquí.
El video a continuación muestra a htcap rastreando gmail. El rastreo duró muchas horas y se capturaron alrededor de 3000 solicitudes XHR.
Instala los requisitos y ejecuta lo siguiente:
$ git clone https://github.com/fcavallarin/htcap.git htcap
$ htcap/htcap.py
Instala Docker y ejecuta lo siguiente:
$ git clone https://github.com/fcavallarin/htcap.git htcap
$ cd htcap
$ docker build -t htcap --build-arg HTCAP_VERSION=master . # reemplaza master por el commit hash o la rama deseada de htcap
$ mkdir -p htcap-out && docker run -v "$(pwd)/htcap-out/":/out/ --rm --name htcap htcap
$ docker exec -it htcap bash
$ htcap # ahora puedes usar htcap dentro del contenedor Docker
Puedes acceder a servicios que escuchan en el host de Docker desde dentro del contenedor Docker usando el nombre de host host.docker.internal.
Para obtener la IP de host.docker.internal, ejecuta el siguiente comando dentro del contenedor Docker:
getent hosts host.docker.internal | awk '{print $1;}'
La documentación, ejemplos y demos se pueden encontrar aquí
Este programa es software libre; puedes redistribuirlo y/o modificarlo bajo los términos de la GNU General Public License publicada por la Free Software Foundation; ya sea la versión 2 de la Licencia, o (a tu elección) cualquier versión posterior.