文章总结: 本文针对某医疗系统进行渗透测试,发现系统存在前端认证绕过漏洞。通过分析源码得知系统依赖sessionStorage存储登录态且后端未做鉴权。测试人员构造伪造管理员对象注入会话存储,成功登录并调用未授权API获取全站数据。实战验证了不信任客户端的安全原则,强调认证逻辑必须由后端严格校验。 综合评分: 90 文章分类: 渗透测试,WEB安全,漏洞分析
前端认证形同虚设?一次典型的“伪登录”绕过实战
赤弋安全团队
2026年1月30日 16:16 陕西
以下文章来源于cy学安全 ,作者cy学信安
cy学安全 .
记录渗透之路的成长,加油!
点击上方蓝字·关注我们
| | | — | | 声明:该公众号大部分文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。 |
前端认证绕过
1.前言
在对某医疗信息系统进行安全评估时,我们面对的是一个看似标准的 Web 登录界面。系统采用 webpack 打包,前端资源高度压缩,且无明显弱口令可利用。初步信息收集阶段,通过插件扫描、接口爬取(包括使用 Packer-Fuzzer)均未能发现有效隐藏接口——大部分 JS 文件和 API 路由仅在用户成功登录后才动态加载。
这无疑增加了测试难度,但也暗示了一个关键点:系统的安全边界可能过度依赖前端逻辑。
2.前期信息收集
经典开局,一个登录框,玩一天。
查看系统框架,发现是一个webpack打包的站点,尝试弱口令无果,通过小熊猫插件获取接口没有有用的信息,发现kindeditor编辑器,版本:4.1.11,尝试已知Nday都失败。
3.突破口:深入前端认证逻辑
既然黑盒探测受限,我们转而进行白盒分析——直接审查前端源码。在登录处理函数中,我们发现了如下关键代码
// 登录成功后的处理逻辑sessionStorage.setItem('YBJCLogin', JSON.stringify(data));window.location.href = $ ctx + '/index.html'
这段代码暴露了致命问题:
- 认证状态完全由前端判定;
- 用户凭证(即完整的用户对象
data)被明文存储于sessionStorage; - 后续页面仅通过
sessionStorage.getItem("YBJCLogin")判断是否“已登录”。
这意味着,只要能构造一个合法的 YBJCLogin 对象并注入到 sessionStorage,即可绕过登录流程,直接进入系统主界面。
4.攻击验证:AI 辅助伪造会话
借助大模型辅助,我们快速生成了一段伪造登录态的 JavaScript 代码:
// 构造高权限用户对象const fakeLogin = { user: { username: "admin", id: "1", role: "super_admin", enabled: "1" }};// 注入到浏览器会话存储sessionStorage.setItem("YBJCLogin", JSON.stringify(fakeLogin));// 手动触发系统初始化System.initData();
执行后,直接访问 index.html,页面竟以 admin 身份成功加载!导航菜单、用户信息、功能模块一应俱全。
后续,我观察了yakit中的数据包。
所有核心业务接口均未校验 Authorization 或任何服务端会话凭证
请求头中即使不携带 Token、Cookie 或 Session ID,后端依然返回完整数据。这表明,整个系统的权限控制完全建立在“前端不展示”这一脆弱假设之上。
至此,攻击链闭环:
绕过登录 → 2. 伪造管理员身份 → 3. 调用任意未授权 API → 4. 实现全站数据接管
5.总结
本次渗透再次印证了一个安全铁律:“永远不要信任客户端”。 一个看似完整的登录流程,若缺乏后端兜底校验,不过是纸糊的防线。在现代 Web 应用开发中,认证是后端的责任,前端只是画布。
欢迎扫码关注
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:赤弋安全团队 《前端认证形同虚设?一次典型的“伪登录”绕过实战》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论