文章总结: 本文讲述作者通过静态分析某家电制造商PAM系统的前端代码,发现JS文件中硬编码了第三方生物识别服务的超级管理员API密钥。该漏洞导致攻击者可伪造生物识别验证响应,完全绕过双重认证机制获取管理员权限。作者验证了漏洞并提交了CVSS9.8的报告。核心结论是绝不能在前端JS中暴露高权限API密钥,建议开发人员加强代码审计,移除客户端硬编码凭证以防范权限提升攻击。 综合评分: 88 文章分类: SRC活动,漏洞分析,渗透测试,WEB安全,安全开发
我是如何找到关键的生物识别双重验证绕过方法
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《我是如何找到关键的生物识别双重验证绕过方法》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论