AuthCov 介绍
AuthCov使用Chrome headless bro wser(无头浏览器)爬取你的Web应用程序,同时以预定义 用户 身份进行 登录 。在爬取阶段它会 拦截 并记录API请求及加载的 页面 ,并在下一阶段,以不同的 用户 帐户“intruder” 登录 ,尝试访问发现的各个API请求或 页面 。它为每个定义的intruder 用户 重复此步骤。最后,它会 生成 一份详细的报告,列出发现的资源以及intruder 用户 是否可以访问这些资源等。??
特性
同时适用于单 页面 应用程序和传统的多 页面 应用程序
处理基于令牌和基于cookie的身份验证机制
生成 html格式的深入报告
可以在报告中查看已爬取的各个 页面 的截图
安装
安装node 10。然后运行:
npm install -g authcov
使用
为要扫描的 站点 生成 配置:
authcov new mycon fig .js
更新mycon fig .js中的值
运行以下命令测试配置值,以确保浏览器成功 登录 。
authcov test-login mycon fig .js --headless=false
爬取 站点 :
authcov crawl mycon fig .js
尝试intrusion在爬取阶段发现的资源:
authcov intrude mycon fig .js
在以下位置查看 生成 的报告:./tmp/report/index.html
配置
可以在 配置文件 中设置以下选项:
选项
类型
description
baseUrl
字符串
站点 URL。这是爬虫开始的地方。
crawlUser
对象
站点 下要爬取的 用户 例如:{“username”: “admin”,“password”: “1234″}
intruders
数组
intrude在爬网阶段发现的api端点和 页面 。通常,这些 用户 的权限与crawlUser相同或更低。要以未 登录 用户 身份intrude,请 添加 用户名 为“Public”密码为null的 用户 。例如:[{"username": "john","password": "4321"},{"username": "Public","password": null}]
type
字符串
这是单页应用程序(即 查询 API后端的JavaScript前端)还是更“传统”的多页应用程序?(选择“mpa”或“spa”)。
authenticationType
字符串
网站是使用浏览器发送的cookie还是通过请求标头中发送的令牌对 用户 进行身份验证?对于mpa,几乎总是设置为“cookie”。在spa中,可以是“cookie”或“token”。
authorisationHeaders
数组
需要发送哪些请求标头才能对 用户 进行身份验证?如果authenticationType=token,则应将其设置为["cookie"]。如果authenticationType=token,那么将是:["X-Auth-Token"]。
maxDepth
整数
站点 爬取的 最大深度 。建议先从1开始,然后再尝试更高的深度,以确保爬虫能够更加 快速 高效地完成。
verbo SEO utput
布尔
详细 输出 ,对调试很有用。
saveResponses
布尔
从API端点保存响应正文,以便你可以在报告中查看它们。
saveScreenshots
布尔
保存已抓取 页面 的浏览器屏幕截图,以便你可以在报告中查看它们。
clickButtons
布尔
(实验性 功能 )在每个 页面 上抓取,单击该 页面 上的所有按钮并记录所做的任何API请求。在通过模态(modals),弹窗等进行大量 用户 交互的网站上非常有用。
xhrTimeout
整数
在抓取每个 页面 时等待XHR请求完成的时间(秒)。
pageTimeout
整数
在抓取时等待 页面 加载的时间(秒)。
headless
布尔
将此设置为false,以便抓取工具打开Chrome浏览器,及查看实时的抓取情况。
unAuthorizedStatusCodes
数组
HTTP响应状态 代码 ,用于决定API端点或 页面 是否为请求它的 用户 授权。(可选)定义 函数 responseIsAuthorised以确定请求是否已获得授权。示例:[401,403,404]
ig nor eLinksIncluding
数组
不要抓取包含此数组中任何字符串的网址。例如,如果设置为["/ logo ut"],则不会抓取url:http://localhost:3000/ logo ut 。(可选)定义 一个 函数 g nor eLink(url),以确定URL是否应该被爬取。 ? ? ? ? ? ?
ig nor eAPIrequestsIncluding
array
不要记录对包含此数组中任何字符串的URL所做的API记录。(可选)定义 函数 ig nor eApiRequest(url),以确定请求是否应被记录。
ig nor eButtonsIncluding
数组
如果clickButtons设置为true,则不单击外部html包含此数组中任何字符串的按钮。(可选)定义 一个 函数 ig nor eButton(url)?。
loginCon fig
对象
配置浏览器 登录 Web应用程序的方式。(可选)定义异步 函数 loginFunction(page,username,password)。
cookiesTriggeringPage
字符串
(可选)当authenticationType=cookie时,将设置 一个 页面 ,以便intruder浏览到该 页面 ,然后从浏览器捕获cookie。如果 站点 在cookie上设置了path字段,这将非常有用。 默 认为options.baseUrl。
tokenTriggeringPage
字符串
(可选)当authenticationType=token时,将设置 一个 页面 ,以便intruder浏览到该 页面 ,然后从截获的API请求中捕获authorisationHeaders。如果 站点 的baseUrl没有发出任何API请求,那么这可能很有用,因此无法从该 页面 捕获auth标头。 默 认为options.baseUrl。
GitHub: https://github.com/authcov/authcov
网站描述: Web认证覆盖扫描工具
AuthCov官方网站
官方网站:
如果觉得 网站内容还不错,欢迎将 网站 推荐给程序员好友。