我是如何找到关键的生物识别双重验证绕过方法

admin 2026-01-20 01:20:57 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文讲述作者通过静态分析某家电制造商PAM系统的前端代码,发现JS文件中硬编码了第三方生物识别服务的超级管理员API密钥。该漏洞导致攻击者可伪造生物识别验证响应,完全绕过双重认证机制获取管理员权限。作者验证了漏洞并提交了CVSS9.8的报告。核心结论是绝不能在前端JS中暴露高权限API密钥,建议开发人员加强代码审计,移除客户端硬编码凭证以防范权限提升攻击。 综合评分: 88 文章分类: SRC活动,漏洞分析,渗透测试,WEB安全,安全开发


cover_image

我是如何找到关键的生物识别双重验证绕过方法

haidragon haidragon

安全狗的自我修养

2026年1月19日 14:58 湖南

官网:http://securitytech.cc/

#

硬编码的超级管理员密钥如何导致生物识别双因素认证被绕过——以及令人痛苦的重复验证

第一阶段:挣扎期 ——「拿 404 当兴趣爱好吗?」

一切都始于一个再普通不过的深夜 Bug Bounty 苦战。

我正在手动浏览一家大型印度家电制造商的子域名(我们称它为 Target-X)。 我满怀期待。 现实却异常残酷。

前 6 个小时,完全是灾难现场。

  • 我疯狂跑 nuclei 扫描,跑到我都怀疑 ISP 已经开始盯上我了。 结果: 0 个漏洞。
  • 我在他们的电商平台上寻找 IDOR。 结果: UUID 比我的耐心还长。
  • 我对搜索功能丢了最基础的 XSS payload。 结果: 全部被完美转义,WAF 在那边冷笑。

到这个时候,动力已经彻底消失。

我那所谓的 「高优先级目标列表」,看起来就像一片被安全加固过的服务器墓地。 我已经准备合上笔记本,宣布今晚到此为止。

「再看最后一个子域名吧,」我对自己撒了个谎。

就在这时,httpx 显示了一个我还没手动检查过的在线主机

pam.target-x.com

PAM —— Privileged Access Management(特权访问管理)

我的情绪瞬间翻转。

PAM 门户不是普通的登录页面。 它们是企业基础设施的看门狗 —— 是 IT 管理员用来访问其他关键服务器的系统。

如果你攻破了一个 PAM 门户, 你不只是黑了一个网站。

你等同于成为了整个组织的系统管理员

事情,从这里开始变得有意思了。


第二阶段:登录之墙(以及我的第一个错误)

我打开了这个子域名。

一个极其严格的登录页面映入眼帘。

ARCON PAM

现实瞬间给我泼了盆冷水。


我的第一个错误

我花了 45 分钟,做了我们大多数人在「自动驾驶模式」下都会做的事 —— 试图硬闯登录页面

  • admin / admin 结果: 失败
  • 用户名 SQL 注入:' OR 1=1 -- 结果: 失败
  • 使用 X-Forwarded-For 进行请求头篡改 结果: 毫无反应

所有尝试都被干净利落地挡了回来。

到这里,大多数猎人 —— 包括过去的我 —— 都会直接关掉标签页,换下一个目标。

「登录页。没凭据。死路一条。」

但我隐隐觉得哪里不对劲。

我停止像个脚本小子一样思考, 换了个角度 —— 我开始站在开发者的立场思考。

开发者是懒的。

他们会复用代码。 会加载脚本。 有时候……

他们会加载不该加载的脚本

这个思维转变,改变了一切。


第三阶段:静态分析 —— 挖出“传奇”

我打开了 浏览器开发者工具F12),直接进入 Sources(源代码) 标签页。

不 fuzz。 不打 payload。 纯静态分析。

我像在刷地牢一样,一层一层展开目录。

/resources/js/
  • jquery.min.js —— 无聊
  • bootstrap.js —— 无聊
  • login_helper.js —— 看过了,只是 UI 动画,还是无聊

然后,在一个一看就不太对劲的路径里:

/resources/js/custom/

我看到了它。

**LegendScript.js**

光是名字就让我挑了挑眉。

企业级应用一般会用这种名字: app.0a2b3c.chunk.js

LegendScript 听起来……太私人了。 像是某个叫 Dave 的开发者, 周五下班前五分钟、去 Happy Hour 之前随手写的。

我点开了它。

开始阅读。

第 1–30 行,完全符合预期: 基础 DOM 操作, document.getElementById('login')…

没什么亮点。

然后,我看到了 第 31 行

// Function to handle Biometric Authentication
var uriclient =
"https://third-party-provider.com/biometric_2fa/service/user/matchFingerPrint?key=superadmin";

我愣住了。

真的愣住了。

整整 3 秒没有呼吸。

key=superadmin

开发者把一个第三方生物识别认证服务的超级管理员 API Key硬编码在了客户端 JavaScript 里。

公开的。 可读的。 任何有浏览器的人都能看到。

这已经不只是一个错误。

这是一个传奇级失误


第四阶段:权限升级 ——「它真的能用吗?」

找到 Key 只是有意思。 证明影响才是一切。

我需要确认这是真的…… 还是某段被遗忘代码里的死字符串。

我打开了 curl

手是真的在抖。

「拜托别是个假变量,拜托它是真的。」

curl-I"https://third-party-provider.com/biometric_2fa/service/user/matchFingerPrint?key=superadmin"

响应回来了。

状态:200 OK (或者 400 Bad Request,只是提示参数不完整)

它是活的

那一刻我彻底意识到问题的严重性。

这不仅仅是一个泄露的 Key。 这是一个通往生物识别金库的万能钥匙


为什么这是“致命级”漏洞

  • 客户端暴露 JavaScript 运行在用户浏览器中。 任何写进 JS 文件的内容,天生就是公开的
  • “Superadmin” 权限 一个叫 superadmin 的 Key,几乎可以确定意味着 生物识别 API 的最高权限
  • 完整攻击路径 PAM 门户依赖这个第三方 API 来验证指纹。 如果我能控制 API 交互,就能中间人劫持整个生物识别校验流程。

当 PAM 门户询问: “这个指纹合法吗?”

我可以强制 API 回答: “是的。”

结果: 任何管理员账号的生物识别 2FA 可被完全绕过。

此时,这个漏洞已经不再是理论上的。

它是真实的。 它是可利用的。 而且是严重级别(Critical)


第五阶段:提交报告 ——「把赏金交出来吧」

接下来的 2 个小时,我极其认真地撰写漏洞报告。

这绝不会被当成一个普通的 「信息泄露」敷衍过去。

我确保每一个细节都在强调真实世界影响


📄 报告结构

标题 **[CRITICAL] 客户端 JS 中硬编码 Superadmin 凭据,导致生物识别 2FA 可被完全绕过**

严重等级 CVSS:9.8 — Critical

权限升级路径 演示如何利用暴露的 Key 劫持生物识别验证流程,并从第三方 API 伪造合法响应

影响说明

“攻击者可以完全绕过任何管理员用户的生物识别认证机制。”

没有废话。 没有假设。 只有清晰、可复现、一步一步的攻击链说明

我点下了 Submit

合上笔记本。

然后带着已经在脑子里花完的赏金, 安心睡去。

  • 公众号:安全狗的自我修养
  • vx:2207344074
  • http://gitee.com/haidragon
  • http://github.com/haidragon
  • bilibili:haidragonx

#


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:安全狗的自我修养 haidragon haidragon《我是如何找到关键的生物识别双重验证绕过方法》

趟过生命之河的小泥人 网络安全文章

趟过生命之河的小泥人

文章总结: 寓言借小泥人渡河化金心,隐喻安全从业者需直面痛苦与风险,在持续损耗中坚持,终以蜕变赢得长久价值与天堂级回报。 综合评分: 42 文章分类: 安全意识
评论:0   参与:  0