htcap:一款递归型的Web应用扫描器

简介: 本文讲的是htcap:一款递归型的Web应用扫描器,htcap是一个Web应用程序扫描程序,可以通过拦截ajax调用以及DOM修改并以递归方式爬取单页应用程序(SPA)。Htcap不仅仅是漏洞扫描程序,因为它主要侧重于网站的爬取过程,并使用外部工具来发现漏洞。
本文讲的是 htcap:一款递归型的Web应用扫描器

工具介绍

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



原文发布时间为:2017年7月25日
本文作者:Change 
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
10天前
|
前端开发 JavaScript 关系型数据库
从前端到后端:构建现代化Web应用的技术探索
在当今互联网时代,Web应用的开发已成为了各行各业不可或缺的一部分。从前端到后端,这篇文章将带你深入探索如何构建现代化的Web应用。我们将介绍多种技术,包括前端开发、后端开发以及各种编程语言(如Java、Python、C、PHP、Go)和数据库,帮助你了解如何利用这些技术构建出高效、安全和可扩展的Web应用。
|
25天前
|
监控 Serverless 测试技术
Serverless 应用引擎常见问题之做的web服务计费如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
327 3
|
1月前
|
前端开发 数据库 UED
构建高性能Web应用的关键技术
本文将介绍构建高性能Web应用的关键技术,包括前端优化、后端优化、数据库优化等方面。通过深入讨论各项技术的原理和实践方法,帮助开发者们提升Web应用的响应速度和用户体验。
|
2天前
|
缓存 负载均衡 数据库
优化后端性能:提升Web应用响应速度的关键策略
在当今数字化时代,Web应用的性能对于用户体验至关重要。本文探讨了如何通过优化后端架构和技术手段,提升Web应用的响应速度。从数据库优化、缓存机制到异步处理等多个方面进行了深入分析,并提出了一系列实用的优化策略,以帮助开发者更好地应对日益增长的用户访问量和复杂的业务需求。
8 1
|
2天前
|
缓存 监控 数据库
Flask性能优化:打造高性能Web应用
【4月更文挑战第16天】本文介绍了提升Flask应用性能的七大策略:优化代码逻辑,减少数据库查询,使用WSGI服务器(如Gunicorn、uWSGI),启用缓存(如Flask-Caching),优化数据库操作,采用异步处理与并发(如Celery、Sanic),以及持续监控与调优。通过这些手段,开发者能有效优化Flask应用,适应大型或高并发场景,打造高性能的Web服务。
|
4天前
|
数据库 开发者 Python
Python中使用Flask构建简单Web应用的例子
【4月更文挑战第15天】Flask是一个轻量级的Python Web框架,它允许开发者快速搭建Web应用,同时保持代码的简洁和清晰。下面,我们将通过一个简单的例子来展示如何在Python中使用Flask创建一个基本的Web应用。
|
7天前
|
JavaScript 前端开发 API
Vue.js:构建高效且灵活的Web应用的利器
Vue.js:构建高效且灵活的Web应用的利器
|
16天前
|
XML JSON JavaScript
使用JSON和XML:数据交换格式在Java Web开发中的应用
【4月更文挑战第3天】本文比较了JSON和XML在Java Web开发中的应用。JSON是一种轻量级、易读的数据交换格式,适合快速解析和节省空间,常用于API和Web服务。XML则提供更强的灵活性和数据描述能力,适合复杂数据结构。Java有Jackson和Gson等库处理JSON,JAXB和DOM/SAX处理XML。选择格式需根据应用场景和需求。
|
30天前
|
前端开发 JavaScript 安全
深入探索 Qt6 web模块 WebEngineCore:从基础原理到高级应用与技巧
深入探索 Qt6 web模块 WebEngineCore:从基础原理到高级应用与技巧
71 0
|
1月前
|
缓存 监控 应用服务中间件
如何使用负载均衡器提升Python Web应用的性能?
【2月更文挑战第27天】【2月更文挑战第94篇】如何使用负载均衡器提升Python Web应用的性能?