渗透测试 | 一次某医疗系统实战
字数 1509 2025-08-10 08:28:04

医疗系统渗透测试实战教学文档

1. 概述

本文档详细记录了一次针对某医疗系统的渗透测试过程,涉及越权访问、SSRF漏洞利用、文件上传绕过、DLL劫持等多个技术点。整个过程展示了从信息收集到最终提权的完整攻击链。

2. 信息收集阶段

2.1 初始扫描

使用nmap进行基础扫描:

nmap -sC -sV -sT -T4 -Pn 10.10.11.238

参数说明:

  • -sC: 使用默认脚本扫描
  • -sV: 探测服务版本
  • -sT: TCP连接扫描
  • -T4: 较快的扫描速度
  • -Pn: 跳过主机发现,直接扫描

2.2 目录扫描

进行了常规的目录扫描,但未发现明显可利用点。

2.3 子域名发现

通过子域名收集发现:

  • 主网站:病人挂号系统
  • 子网站:医生登录系统

3. 漏洞挖掘与利用

3.1 越权访问漏洞

  1. 在主站注册并登录普通用户账号
  2. 分析HTTP请求,发现POST包中的关键参数:
    POST /some_endpoint HTTP/1.1
    Host: target.com
    ...
    
    Acctype=1
    
  3. Acctype参数值从1(普通用户)修改为2(医生身份)
  4. 服务器返回医生身份的响应

测试发现:虽然获得了医生身份,但在主站功能有限

3.2 Cookie复用攻击

  1. 在主站获取医生身份的cookie
  2. 直接访问子站(医生登录系统)
  3. 替换cookie为从主站获取的医生cookie
  4. 成功登录医生后台

工具推荐:使用Firefox浏览器的"Cookie-Editor"插件方便修改cookie

3.3 SSRF漏洞利用

在医生后台发现:

  • "Issue Prescriptions"功能中存在URL输入表单
  • 输入本机IP后,系统会读取并显示内容

利用方法

  1. 构造恶意URL探测内网服务
  2. 尝试读取本地文件(如file://协议)
  3. 结合后续文件上传功能实现更深入利用

3.4 文件上传绕过

结合SSRF漏洞:

  1. 上传恶意文件(如webshell)
  2. 利用SSRF触发文件访问
  3. 通过文件上传位置获取webshell执行权限

常见绕过技巧

  • 修改Content-Type
  • 添加垃圾数据绕过检测
  • 使用双扩展名(.jpg.php)
  • 大小写变异(.PhP)

4. 权限提升

4.1 逆向分析

获取系统shell后:

  1. 分析系统中关键的dll和exe文件
  2. 使用IDA Pro/Ghidra等工具逆向
  3. 寻找:
    • 硬编码凭证
    • 不安全的函数调用
    • DLL加载逻辑缺陷

4.2 DLL劫持提权

实施步骤

  1. 识别目标应用程序加载的DLL
  2. 查找应用程序搜索路径中可写目录
  3. 创建恶意DLL并放置在优先加载位置
  4. 确保DLL导出必要函数避免崩溃
  5. 触发应用程序执行,加载恶意DLL

关键技术点

  • 使用Process Monitor监控DLL加载
  • 确保DLL兼容性(32/64位)
  • 编写DLL时包含必要的导出函数

5. 防御建议

5.1 修复越权漏洞

  • 实施严格的权限验证
  • 避免前端控制权限级别
  • 使用服务端会话管理

5.2 防止Cookie滥用

  • 区分不同子系统的会话令牌
  • 实施Cookie的HttpOnly和Secure标志
  • 考虑使用SameSite属性

5.3 SSRF防护

  • 限制URL访问协议(禁用file://等)
  • 实施白名单域名策略
  • 禁用不必要的URL处理功能

5.4 文件上传安全

  • 实施文件内容检查
  • 存储上传文件在非web可访问目录
  • 重命名上传文件
  • 限制可执行文件上传

5.5 防提权措施

  • 限制应用程序加载DLL的路径
  • 实施DLL签名验证
  • 使用最新版开发框架避免DLL劫持漏洞

6. 总结

本次渗透测试展示了医疗系统中常见的安全问题链:

  1. 通过参数篡改实现垂直越权
  2. 利用会话令牌复用横向移动
  3. 结合SSRF和文件上传获取初始立足点
  4. 通过逆向分析和DLL劫持完成权限提升

医疗系统作为关键基础设施,应实施纵深防御策略,特别关注权限管理和输入验证。

医疗系统渗透测试实战教学文档 1. 概述 本文档详细记录了一次针对某医疗系统的渗透测试过程,涉及越权访问、SSRF漏洞利用、文件上传绕过、DLL劫持等多个技术点。整个过程展示了从信息收集到最终提权的完整攻击链。 2. 信息收集阶段 2.1 初始扫描 使用nmap进行基础扫描: 参数说明: -sC : 使用默认脚本扫描 -sV : 探测服务版本 -sT : TCP连接扫描 -T4 : 较快的扫描速度 -Pn : 跳过主机发现,直接扫描 2.2 目录扫描 进行了常规的目录扫描,但未发现明显可利用点。 2.3 子域名发现 通过子域名收集发现: 主网站:病人挂号系统 子网站:医生登录系统 3. 漏洞挖掘与利用 3.1 越权访问漏洞 在主站注册并登录普通用户账号 分析HTTP请求,发现POST包中的关键参数: 将 Acctype 参数值从1(普通用户)修改为2(医生身份) 服务器返回医生身份的响应 测试发现 :虽然获得了医生身份,但在主站功能有限 3.2 Cookie复用攻击 在主站获取医生身份的cookie 直接访问子站(医生登录系统) 替换cookie为从主站获取的医生cookie 成功登录医生后台 工具推荐 :使用Firefox浏览器的"Cookie-Editor"插件方便修改cookie 3.3 SSRF漏洞利用 在医生后台发现: "Issue Prescriptions"功能中存在URL输入表单 输入本机IP后,系统会读取并显示内容 利用方法 : 构造恶意URL探测内网服务 尝试读取本地文件(如file://协议) 结合后续文件上传功能实现更深入利用 3.4 文件上传绕过 结合SSRF漏洞: 上传恶意文件(如webshell) 利用SSRF触发文件访问 通过文件上传位置获取webshell执行权限 常见绕过技巧 : 修改Content-Type 添加垃圾数据绕过检测 使用双扩展名(.jpg.php) 大小写变异(.PhP) 4. 权限提升 4.1 逆向分析 获取系统shell后: 分析系统中关键的dll和exe文件 使用IDA Pro/Ghidra等工具逆向 寻找: 硬编码凭证 不安全的函数调用 DLL加载逻辑缺陷 4.2 DLL劫持提权 实施步骤 : 识别目标应用程序加载的DLL 查找应用程序搜索路径中可写目录 创建恶意DLL并放置在优先加载位置 确保DLL导出必要函数避免崩溃 触发应用程序执行,加载恶意DLL 关键技术点 : 使用Process Monitor监控DLL加载 确保DLL兼容性(32/64位) 编写DLL时包含必要的导出函数 5. 防御建议 5.1 修复越权漏洞 实施严格的权限验证 避免前端控制权限级别 使用服务端会话管理 5.2 防止Cookie滥用 区分不同子系统的会话令牌 实施Cookie的HttpOnly和Secure标志 考虑使用SameSite属性 5.3 SSRF防护 限制URL访问协议(禁用file://等) 实施白名单域名策略 禁用不必要的URL处理功能 5.4 文件上传安全 实施文件内容检查 存储上传文件在非web可访问目录 重命名上传文件 限制可执行文件上传 5.5 防提权措施 限制应用程序加载DLL的路径 实施DLL签名验证 使用最新版开发框架避免DLL劫持漏洞 6. 总结 本次渗透测试展示了医疗系统中常见的安全问题链: 通过参数篡改实现垂直越权 利用会话令牌复用横向移动 结合SSRF和文件上传获取初始立足点 通过逆向分析和DLL劫持完成权限提升 医疗系统作为关键基础设施,应实施纵深防御策略,特别关注权限管理和输入验证。