
htcap é um scanner de aplicações web capaz de rastrear aplicações de página única (SPA) recursivamente, interceptando chamadas ajax e mudanças no DOM.
htcap é um scanner de aplicações web capaz de rastrear aplicações de página única (SPA) recursivamente, interceptando chamadas ajax e mudanças no DOM.
Htcap não é apenas mais um scanner de vulnerabilidades, pois é focado no processo de rastreamento e visa detectar e interceptar chamadas ajax/fetch, websockets, jsonp etc. Utiliza seus próprios fuzzers, além de um conjunto de ferramentas externas para descobrir vulnerabilidades, e é projetado para ser uma ferramenta tanto para teste de penetração manual quanto automatizado de aplicações web modernas.
Também possui um framework pequeno, mas poderoso, para desenvolver rapidamente fuzzers personalizados com menos de 60 linhas de python. Os fuzzers podem trabalhar com dados GET/POST, payloads XML e JSON e alternar entre POST e GET. Naturalmente, os fuzzers são executados em paralelo em um ambiente multithread.
Esta é a primeira versão que usa headless chrome em vez de phantomjs. O motor de rastreamento Javascript do Htcap foi reescrito para aproveitar os novos recursos async/await do ecmascript e foi convertido em um módulo nodejs construído sobre o Puppetteer.
Mais informações aqui.
O vídeo abaixo mostra o htcap rastreando gmail.
O rastreamento durou muitas horas e cerca de 3000 requisições XHR foram capturadas.
Instale os requisitos e execute o seguinte:
$ git clone https://github.com/fcavallarin/htcap.git htcap
$ htcap/htcap.py
Instale o Docker e execute o seguinte:
$ git clone https://github.com/fcavallarin/htcap.git htcap
$ cd htcap
$ docker build -t htcap --build-arg HTCAP_VERSION=master . # substitua master pelo hash de commit ou branch htcap desejado
$ mkdir -p htcap-out && docker run -v "$(pwd)/htcap-out/":/out/ --rm --name htcap htcap
$ docker exec -it htcap bash
$ htcap # agora você pode usar htcap no contêiner Docker
Você pode acessar serviços ouvindo no host Docker de dentro do contêiner Docker usando o nome de host host.docker.internal.
Para obter o IP de host.docker.internal, execute o seguinte comando dentro do contêiner Docker:
getent hosts host.docker.internal | awk '{print $1;}'
Documentação, exemplos e demonstrações podem ser encontrados aqui
Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo sob os termos da GNU General Public License conforme publicada pela Free Software Foundation; seja a versão 2 da Licença, ou (a seu critério) qualquer versão posterior.