htcap 是一个能够通过拦截 Ajax 调用和 DOM 变化递归爬取单页应用程序(SPA)的 Web 应用扫描器。
Htcap 不只是另一个漏洞扫描器,因为它专注于爬取过程,旨在检测和拦截 ajax/fetch 请求、websockets、jsonp 等。它使用自己的模糊测试器以及一组外部工具来发现漏洞,并且被设计为用于现代 Web 应用程序的手动和自动化渗透测试工具。
它还配备了一个小巧但强大的框架,可以用不到 60 行 Python 代码快速开发自定义模糊测试器。 模糊测试器可以处理 GET/POST 数据、XML 和 JSON 负载,并在 POST 和 GET 之间切换。当然,模糊测试器在多线程环境中并行运行。
这是首个使用 headless Chrome 替代 PhantomJS 的版本。 Htcap 的 JavaScript 爬取引擎已重写,以利用 ECMAScript 新的 async/await 特性,并已转换为基于 Puppetteer 构建的 nodjes 模块。
更多信息请参见此处。
下面的视频展示了 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 . # 将 master 替换为所需的 htcap 提交哈希或分支
$ mkdir -p htcap-out && docker run -v "$(pwd)/htcap-out/":/out/ --rm --name htcap htcap
$ docker exec -it htcap bash
$ htcap # 现在你可以在 Docker 容器中使用 htcap
你可以使用主机名 host.docker.internal 从 Docker 容器内部访问 Docker 主机上监听的服务。
要获取 host.docker.internal 的 IP,请在 Docker 容器内运行以下命令:
getent hosts host.docker.internal | awk '{print $1;}'
文档、示例和演示可以在此处找到。
本程序是自由软件;您可以依据自由软件基金会发布的 GNU 通用公共许可证第二版(或您选择的任何后续版本)的条款重新分发和/或修改它。