导语:没有用户名,没有密码,仅凭一个 HTTP 请求头就绕过了整个认证系统——安全研究员 ALR 近日披露了一个高危认证绕过漏洞,最终获得 $3000 赏金。这个案例再次证明,最严重的漏洞往往源于最基础的逻辑缺陷。
一、发现过程
安全研究员 ALR(@0xalr)在某次渗透测试中,对一个目标进行子域名枚举时,发现了一个会立即重定向到认证页面的子域名。在重定向完成之前,他打开了页面源码进行审查。

源码中加载了一个 JavaScript 文件。由于 JS 文件经常包含大量敏感信息,他将其下载并开始分析,目标是提取所有 API 端点。
在提取出多个 API 端点后,他使用 Burp Suite 逐一测试——遗憾的是,所有请求都返回了相同的响应:

所有端点均返回 401 Unauthorized,看起来认证机制”正常工作”。
二、关键转折
面对 401 拦截,ALR 没有盲目暴力破解,而是回归到 JavaScript 代码,追溯应用程序的认证逻辑。
他在代码中找到了以下关键片段:
a1&&n1.set(
"Authorization",
"Basic " +
btoa(
(a1.username || "") +
":" +
(a1.password
? unescape(encodeURIComponent(a1.password))
: "")
)
)
这段代码表明,应用程序使用 HTTP Basic Authentication,通过将用户名和密码以 username:password 格式进行 Base64 编码后,放入 Authorization 请求头中。
他尝试了常规的信息收集手段——搜索 GitHub、URLScan、配置文件、历史数据——但未找到任何有效凭据。
三、灵光一现
在搜寻凭据无果后,ALR 提出了一个关键假设:
如果后端仅检查 Authorization 请求头是否存在,而不验证其内容呢?
为验证这一假设,他发送了如下请求头:
Authorization: Basic
结果令人震惊——所有 API 端点全部放行:

四、漏洞影响
该绕过漏洞的影响面远超预期。ALR 从 JS 文件中提取了近 50 个 API 端点,全部可以通过 Authorization: Basic 头直接访问,涉及以下敏感操作:
- 查看、创建、修改和删除客户数据
- 访问内部系统配置
全程无需任何有效用户名或密码,仅依赖请求头的”存在性”即可完成认证。该漏洞最终被评定为严重(Critical)级别,ALR 获得 $3000 赏金。
五、根因分析
漏洞根因是后端对 HTTP Basic Authentication 的校验逻辑存在严重缺陷——
服务端仅检测了 Authorization 请求头是否存在于 HTTP 请求中,而未对其中的凭据内容进行实质性验证。
任何包含 Authorization: Basic 的请求都被错误地标记为”已认证”,从而绕过了整个访问控制体系。
六、总结
这个案例给我们的启示:
- 不要假设认证已正确实现:看似”正常返回 401″的系统,可能在请求头存在性检查上存在致命疏忽
- JavaScript 代码是信息金矿:API 端点、认证逻辑、参数格式往往直接暴露在前端代码中
- 质疑每一个假设:当常规凭据搜集失败时,回头审视认证机制本身的基础逻辑
在 Web 安全领域,最危险的漏洞不是复杂的 0day 利用链,而是这种”只要加个头就能过”的基础逻辑错误。
版权声明:本文由华盟网编译发布,原作者 ALR(@0xalr),原文发布于 Medium。配图封面由华盟网生成,正文截图来源于原文。






















暂无评论内容