导语:htcap是一个Web应用程序扫描程序,可以通过拦截ajax调用以及DOM修改并以递归方式爬取单页应用程序(SPA)。

工具介绍

htcap是一个Web应用程序扫描程序,可以通过拦截ajax调用以及DOM修改并以递归方式爬取单页应用程序(SPA)。Htcap不仅仅是漏洞扫描程序,因为它主要侧重于网站的爬取过程,并使用外部工具来发现漏洞。我们可以将其理解为是一款用于现代Web应用程序的手动以及自动渗透测试的工具。

它的扫描过程主要分为两部分,首先htcap将抓取目标并收集尽可能多的请求(urls,forms,ajax ecc 等等)并将其保存到sql-lite数据库。抓取完成后,可以针对已保存的请求启动多个安全扫描程序,并将扫描结果保存到同一数据库。Htcap自带的sqlmap和arachni模块内置。Sqlmap用于发现SQL注入漏洞,arachni用于发现XSS,XXE,Code Executions,File Inclusions ecc。由于扫描器模块扩展了BaseScanner类,因此可以轻松地创建或修改它们。当填充数据库(至少使用crawing数据)时,可以使用诸如sqlite3或DBEaver之类的现成可用工具进行探索,或者使用内置脚本将结果导出为各种格式。

Htcap所采用的是一种能够以递归方式对基于ajax的页面进行爬取的算法。该算法通过捕获ajax调用,将DOM修改映射到自身,并针对新添加的元素递归地重复该过程。当加载页面时,htcap将通过触发所有事件和填充输入值来启动,以触发ajax调用。当检测到ajax调用时,htcap等待它完成并调用相对回调函数; 如果在此之后,DOM被修改,htcap将针对添加的元素运行相同的算法,并重复它,直到所有的ajax调用被触发。

Htcap支持三种扫描模式:被动,主动和侵略性。当处于被动模式时,htcap不与页面进行交互,这意味着没有触发任何事件,仅遵循链接。在这种模式下,htcap作为一个非常基本的网页抓取工具,只收集页面中找到的链接(A标签)。这个过程就像是一个用户点击了链接一样。主动模式的行为其实类似于被动模式,但它会触发所有发现的事件。这个过程就像是用户了与页面进行了交互但却没有输入任何值。而侵略性模式则会使使htcap可以填充输入值并发布表单。这个过程类似于那些会在页面上执行尽可能多的操作的用户。

Htcap可以将在网站上的爬取过程限制在特定的范围内。可用范围包括:域名、目录以及url。当范围设置为域名时,htcap将仅抓取目标的域名,再加上allowed_domains(-d选项)。如果范围是目录,htcap将仅抓取目标目录及其子目录,如果范围是url,htcap将不会抓取任何东西,它只是会分析一个页面。

命令行参数

$ htcap crawl -h 
usage: htcap [options] url outfile
Options:
  -h帮助
  -w覆盖输出文件
  -q不显示进度信息
  -m设置爬取模式:
                      - passive::不要与页面发生交互
                      - active::触发所有事件
                      - aggressive:填写输入值和爬取网站表单(默认)
  -sSCOPE设置爬取范围
                      - domain:限制爬取到当前域名(默认)
                      - directory:限制爬取到当前目录(和子目录)
                      - url:只分析单页面
  -D最大爬取深度(默认值:100)
  -P连续表单的最大爬取深度(默认值:10)
  -F即使在侵略性模式下,也不爬取表单
  -H保存页面生成的HTML 
  -dDOMAINS需要扫描的域名,用逗号分隔(ex * .target.com)
  -cCOOKIES 利用JSON格式或者name=value对的形式设置cookie,用分号隔开
  -CCOOKIE_FILE包含COOKIES的文件路径
  -rREFERER 设置初始引用
  -xEXCLUDED逗号分隔需要排除掉的url(正则表达式)- 即注销urls 
  -pPROXY代理字符串协议:host:port  协议可以是'http'或'socks5'- 
  -nTHREADS并行线程数量(默认值:10)
  -ACREDENTIALS 用于HTTP验证的用户名和密码,用冒号分隔
  -UUSERAGENT设置用户代理
  -tTIMEOUT分析页面时间的最大值(默认300)
  -S跳过初始URL检查
  -G对具有相同名称的QUERY_STRING参数进行分组(“[]”结尾除外)
  -N不使用正常的URL路径(保持../../)
  -R重定向的最大次数(默认为10)
  -I忽略robots.txt

环境要求

Python 2.7

PhantomJS v2

Sqlmap(用于sqlmap扫描器模块)

Arachni(用于arachni扫描器模块)

下载以及运行

$ git clone https://github.com/segment-srl/htcap.git htcap
$ htcap / htcap.py
源链接

Hacking more

...