AuthCov是一个根据JavaScript的Web认证掩盖扫描东西。
简介
AuthCov运用Chrome headless browser(无头阅读器)爬取你的Web应用程序,一起以预界说用户身份进行登录。在爬取阶段它会阻拦并记载API恳求及加载的页面,并在下一阶段,以不同的用户帐户“intruder”登录,测验拜访发现的各个API恳求或页面。它为每个界说的intruder用户重复此过程。最终,它会生成一份具体的陈述,列出发现的资源以及intruder用户是否能够拜访这些资源等。
以下是扫描本地Wordpress实例生成的示例陈述:
特性
一起适用于单页面应用程序和传统的多页面应用程序
处理根据令牌和根据cookie的身份验证机制
生成HTML格局的深化陈述
能够在陈述中检查已爬取的各个页面的截图
装置
装置node 10。然后运转:
$ npm install -g authcov
运用
为要扫描的站点生成装备:
$ authcov new myconfig.js
更新myconfig.js中的值
运转以下指令测验装备值,以保证阅读器成功登录。
$ authcov test-login myconfig.js --headless=false
爬取站点:
$ authcov crawl myconfig.js
测验intrusion在爬取阶段发现的资源:
$ authcov intrude myconfig.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开端,然后再测验更高的深度,以保证爬虫能够愈加快速高效地完结。
verboseOutput
布尔
具体输出,对调试很有用。
saveResponses
布尔
从API端点保存呼应正文,以便你能够在陈述中检查它们。
saveScreenshots
布尔
保存已抓取页面的阅读器屏幕截图,以便你能够在陈述中检查它们。
clickButtons
布尔
(试验性功能)在每个页面上抓取,单击该页面上的一切按钮并记载所做的任何API恳求。在经过模态(modals),弹窗等进行很多用户交互的网站上十分有用。
xhrTimeout
整数
在抓取每个页面时等候XHR恳求完结的时刻(秒)。
pageTimeout
整数
在抓取时等候页面加载的时刻(秒)。
headless
布尔
将此设置为false,以便抓取东西翻开Chrome阅读器,及检查实时的抓取状况。
unAuthorizedStatusCodes
数组
HTTP呼应状况代码,用于决议API端点或页面是否为恳求它的用户授权。(可选)界说函数responseIsAuthorised以确认恳求是否已取得授权。示例:[401,403,404]
ignoreLinksIncluding
数组
不要抓取包括此数组中任何字符串的网址。例如,假如设置为["/logout"],则不会抓取url:http://localhost:3000/logout。(可选)界说一个函数gnoreLink(url),以确认URL是否应该被爬取。
ignoreAPIrequestsIncluding
array
不要记载对包括此数组中任何字符串的URL所做的API记载。(可选)界说函数ignoreApiRequest(url),以确认恳求是否应被记载。
ignoreButtonsIncluding
数组
假如clickButtons设置为true,则不单击外部HTML包括此数组中任何字符串的按钮。(可选)界说一个函数ignoreButton(url) 。
loginConfig
目标
装备阅读器登录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。
装备登录
在装备文件中有两种装备登录的办法:
运用默许登录机制,运用puppeteer在指定的输入中输入用户名和暗码,然后单击指定的提交按钮。这能够经过在装备文件中设置loginConfig选项来装备。你也能够检查此处的示例。[1][2]黑客接单网