仅需一个Header:价值$3000的HTTP Basic认证绕过漏洞分析

导语:没有用户名,没有密码,仅凭一个 HTTP 请求头就绕过了整个认证系统——安全研究员 ALR 近日披露了一个高危认证绕过漏洞,最终获得 $3000 赏金。这个案例再次证明,最严重的漏洞往往源于最基础的逻辑缺陷。


一、发现过程

安全研究员 ALR(@0xalr)在某次渗透测试中,对一个目标进行子域名枚举时,发现了一个会立即重定向到认证页面的子域名。在重定向完成之前,他打开了页面源码进行审查。

认证绕过封面图

源码中加载了一个 JavaScript 文件。由于 JS 文件经常包含大量敏感信息,他将其下载并开始分析,目标是提取所有 API 端点。

在提取出多个 API 端点后,他使用 Burp Suite 逐一测试——遗憾的是,所有请求都返回了相同的响应:

401 Unauthorized响应

所有端点均返回 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。配图封面由华盟网生成,正文截图来源于原文。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容