基于 James Kettle 的研究
CORStest 是一个用于发现跨源资源共享(CORS)配置错误的 快速 工具,使用 Python 3 编写。它接受一个文本文件作为输入,该文件可以包含域名或 URL 列表。目前,通过发送特定的 Origin 请求头并检查 Access-Control-Allow-Origin 响应头,可以检测到以下潜在漏洞:
null 来源,任何站点都可以访问请注意,这些漏洞/配置错误依赖于上下文。在大多数情况下,只有当存在 Access-Control-Allow-Credentials 头时(参见 -q 标志),攻击者才能利用它们。
usage: corstest.py [arguments] infile
positional arguments:
infile 包含域名或 URL 列表的文件
optional arguments:
-h, --help 显示此帮助信息并退出
-c name=value 在每次请求中发送 cookie
-p processes 多进程数(默认:32)
-s 始终强制使用 SSL/TLS 请求
-q 安静模式,仅显示允许凭证的情况
-v 输出更详细的信息
使用 CORStest 检测 Alexa 前 750 个站点的配置错误(包含 Access-Control-Allow-Credentials):

在 Alexa 前 100 万个站点 上运行 CORStest 得到以下结果:

请注意,绝对数字相当低,因为在 1,000,000 个测试网站中,只有 3% 在其主页上启用了 CORS,并且可以分析配置错误。此测试在普通线路(DSL)上耗时约 14 小时。如果你的互联网连接速度较快,可以尝试将并行进程数增加到 -p50 或更多。
请阅读这篇优秀的 博客文章 了解 CORS 配置错误的技术背景,或观看此 演讲。使用 CORStest 进行的大规模 CORS 配置错误评估记录在 此处。