
htcap — это сканер веб-приложений, способный рекурсивно обходить одностраничные приложения (SPA) путем перехвата AJAX-вызовов и изменений DOM.
htcap — это сканер веб-приложений, способный рекурсивно обходить одностраничные приложения (SPA), перехватывая ajax-вызовы и изменения DOM.
Htcap — это не просто очередной сканер уязвимостей; он ориентирован на процесс обхода и направлен на обнаружение и перехват ajax/fetch-вызовов, веб-сокетов, jsonp и т.д. Он использует собственные фаззеры, а также набор внешних инструментов для поиска уязвимостей и предназначен для использования как при ручном, так и при автоматизированном тестировании на проникновение современных веб-приложений.
Он также включает небольшой, но мощный фреймворк для быстрой разработки пользовательских фаззеров менее чем за 60 строк Python. Фаззеры могут работать с данными GET/POST, полезными нагрузками XML и JSON и переключаться между POST и GET. Разумеется, фаззеры выполняются параллельно в многопоточной среде.
Это первый релиз, в котором используется headless Chrome вместо PhantomJS. Движок обхода JavaScript в Htcap был переписан, чтобы использовать новые возможности async/await из ECMAScript, и преобразован в модуль Node.js, построенный на основе Puppetteer.
Больше информации здесь.
Видео ниже показывает, как htcap обходит Gmail.
Обход длился много часов, и было захвачено около 3000 XHR-запросов.
Установите требования и выполните следующее:
$ git clone https://github.com/fcavallarin/htcap.git htcap
$ htcap/htcap.py
Установите Docker и выполните следующее:
$ git clone https://github.com/fcavallarin/htcap.git htcap
$ cd htcap
$ docker build -t htcap --build-arg HTCAP_VERSION=master . # replace master by the desired htcap commit hash or branch
$ mkdir -p htcap-out && docker run -v "$(pwd)/htcap-out/":/out/ --rm --name htcap htcap
$ docker exec -it htcap bash
$ htcap # now you can use htcap in the Docker container
Вы можете получить доступ к службам, прослушивающим на хосте Docker, из контейнера Docker, используя имя хоста host.docker.internal.
Чтобы получить IP-адрес для host.docker.internal, выполните следующую команду внутри контейнера Docker:
getent hosts host.docker.internal | awk '{print $1;}'
Документацию, примеры и демо можно найти здесь
Эта программа является свободным программным обеспечением; вы можете распространять и/или изменять её в соответствии с условиями GNU General Public License в редакции, опубликованной Free Software Foundation; либо версии 2 Лицензии, либо (по вашему выбору) любой более поздней версии.