记一次通过供应链拿到目标后台权限的过程
字数 1614 2025-08-25 22:59:09
供应链渗透实战:通过供应商系统获取医院后台权限
授权声明
本文涉及的所有渗透测试操作均获得了客户单位的正式授权,并在漏洞修复后公开。请勿在未授权状态下进行任何形式的渗透测试。
目标概况
目标为某医院信息系统,该医院没有独立官网,仅通过微信公众号提供预约挂号、缴费等功能。
信息收集阶段
-
初步发现:
- 抓包分析微信公众号请求,发现所有请求指向
a.test.com域名 - 调查发现
test.com属于一家医疗信息系统供应商公司
- 抓包分析微信公众号请求,发现所有请求指向
-
子域名枚举:
- 发现多个子域名解析到不同云服务器IP
- 重点关注子域名:
a.test.com:医院系统实际运行地址git.test.com:GitLab代码仓库x.test.com:Oracle数据库服务
初始攻击面分析
-
对a.test.com的测试:
- 确认系统基于Spring Boot开发
- 发现Swagger UI页面但无可利用漏洞
- 尝试SQL注入、越权测试均未成功
- 无文件上传接口可利用
-
转向供应商主域test.com:
- 官网本身无明显漏洞
- 重点转向子域名和关联系统
GitLab系统突破
-
初始尝试:
- 检查GitLab历史漏洞(版本较高已修复)
- 常规弱口令爆破失败
-
社会工程学利用:
- 加入公司QQ群获取员工信息表格
- 使用员工姓名+工号组合尝试定向爆破(仍失败)
-
Google Hacking:
- 发现GitLab上几个公开可访问的仓库
- 在RabbitMQ安装文档中发现Oracle数据库凭据:
- 用户名/密码明文存储
数据库层突破
-
Oracle数据库利用:
- 连接
x.test.com的Oracle服务(使用泄露凭据) - 数据库版本较低且为sysdba权限
- 直接以system权限执行命令添加用户
- 获取服务器控制权
- 连接
-
MySQL数据库发现:
- 在Oracle服务器上发现MySQL配置文件
- 获取MySQL凭据后成功登录
- 获取供应商官网后台账号(但后台功能已废弃)
Web服务器突破
-
写入Webshell:
- 尝试获取网站绝对路径(通过错误信息未果)
- 通过MySQL表名猜测路径(成功猜测
c:\hs_web) - 写入Webshell并通过蚁剑连接
-
权限提升:
- 当前用户权限较低
- 使用Potato提权工具成功提升权限
- 添加用户并登录远程桌面
基础设施发现
-
Nginx配置分析:
- 发现代理规则涉及数十家医院系统
- 医院微信公众号请求先到供应商服务器,再转发到各医院真实服务器
-
源码审计:
- 发现微信公众号后台源码
- 审计发现后台登录绕过漏洞
- 可直接登录后台任意修改信息
攻击路径总结
- 微信公众号 → 发现供应商域名
- GitLab公开仓库 → 获取数据库凭据
- Oracle数据库 → 系统权限获取
- MySQL数据库 → 官网后台凭据(虽不可用)
- 写入Webshell → 服务器控制权
- 提权 → 完全控制供应商服务器
- 发现Nginx配置 → 了解医院真实架构
- 源码审计 → 发现后台漏洞
安全建议
-
供应商管理:
- 加强第三方系统访问控制
- 实施最小权限原则
- 定期审计供应商系统安全性
-
代码管理:
- 禁止在公开仓库存储敏感信息
- 实施严格的代码审查流程
- 定期扫描仓库中的敏感信息
-
数据库安全:
- 避免使用默认或弱凭据
- 限制数据库远程访问
- 定期更新数据库软件
-
服务器安全:
- 实施适当的文件系统权限
- 定期更新操作系统和软件
- 禁用不必要的服务和端口
-
架构设计:
- 避免单点故障设计
- 实施适当的网络隔离
- 关键业务系统应有独立基础设施
工具清单
- 抓包工具:Burp Suite等
- 信息收集:Google Hacking技巧
- 数据库连接:Oracle客户端、MySQL客户端
- Webshell管理:蚁剑
- 提权工具:Potato
- 远程访问:RDP客户端
关键知识点
- 供应链攻击的威力
- 信息泄露在渗透中的重要性
- 权限提升技术应用
- 架构设计缺陷带来的风险
- 从外围系统突破核心系统的思路