总是被忽略的目录遍历到getshell以及云权限~证书站严重案例
字数 2579 2025-09-23 19:27:46

教学文档:从目录遍历漏洞到全面沦陷的渗透实战

一、 漏洞链核心概述

本案例展示了一个经典的、由浅入深的渗透测试过程。攻击链路由一个看似低危的目录遍历 (Directory Traversal) 漏洞开始,逐步获取敏感文件,进而发现服务器凭证,最终通过横向移动与权限提升,实现了 GetShell窃取核心数据、并获取云服务高级权限 (AK/SK) 的全面突破。

关键漏洞链: 目录遍历 -> 敏感文件泄露 -> 服务器凭证泄露 -> 横向移动 -> 历史Nday漏洞利用 -> GetShell -> 源码泄露 -> 云权限密钥泄露

二、 详细攻击步骤分解

步骤一:信息收集与入口点发现

  1. 目标定位:攻击者获得了一个门户系统的测试账号密码,以此作为初始进入点。
  2. 功能点探测:在目标系统的多个子系统中进行浏览,寻找可疑功能。最终在一个名为“师生服务热线”或类似功能的子系统中发现关键接口。
  3. 发现可疑参数:发现一个包含下载功能的接口,URL 格式为:/server/voicemailRecord/download?id=。此处的 id 参数极有可能是一个直接指向服务器文件的指针。

步骤二:初探与漏洞验证 - 目录遍历

  1. 初步测试:对 id 参数进行模糊测试(Fuzzing)。例如,将参数值从 1 到 10000 进行遍历,试图下载可能的文件。
  2. 目录遍历利用:在尝试数字ID效果有限后,攻击者使用了经典的目录遍历Payload:....//....//....// 或类似变体(如 ../ 的多次叠加),尝试跳出当前Web目录。
    • Payload示例/server/voicemailRecord/download?id=....//....//....//etc/passwd
    • 成功标志:服务器响应返回了超出预期目录的文件内容,例如系统文件或Web目录下的其他文件。这确认了目录遍历漏洞的存在。

步骤三:敏感信息收集与升级

  1. 利用漏洞读取文件:利用已证实的目录遍历漏洞,开始系统性地读取Web应用目录、配置文件目录和用户目录下的文件。
  2. 发现高价值敏感文件
    • 首先发现并下载了大量包含个人敏感信息的文件(如学生与工作人员的通信记录),初步构成数据泄露事件。
    • 随后,攻击者发现了一个极其关键的文件:一个后缀名为 .账号 或类似命名的文件。该文件疑似系统交付或维护时遗留的临时文件或配置文档。
  3. 核心凭证获取:该 .账号 文件内容包含了服务器(如SSH)、数据库、以及其他内部系统的用户名和密码。这些凭证很可能是明文存储的。

步骤四:横向移动与权限提升

  1. 凭证复用:使用泄露的服务器SSH凭证,成功远程登录到一台或多台目标服务器,实现 GetShell
  2. 系统内部探测
    • 在已控制的服务器上,发现了其他Web应用系统(例如一个基于 Jeecg-Boot 的工单系统)。
    • 对这些新系统进行测试,发现存在多处 SQL注入(如 order by 注入)和历史 Nday漏洞
  3. 历史Nday利用:针对Jeecg-Boot系统,利用了其已知的(对于攻击者而言是Nday)历史漏洞,例如:
    • 路径遍历:再次出现,用于读取系统文件。
    • 任意SQL语句执行:直接执行任意SQL命令,可能导致数据库完全脱库。攻击者确认通过此漏洞获取了数十万条身份证(SFZ)数据。

步骤五:深度利用与最高权限获取

  1. 源码获取:在已控制的服务器上,攻击者定位并下载了Web应用的源码(基于若依框架)。代码审计可能发现了更多未公开的漏洞。
  2. 云权限沦陷:在源码或服务器配置文件(如 application.yml, application.properties 等)中,发现了云服务提供商(如阿里云、腾讯云、AWS等)的访问密钥对(Access Key / Secret Key,即 AK/SK)
  3. 最大危害:获取了AK/SK意味着攻击者拥有了该云服务账户API级别的访问权限。可以在云端进行创建/删除实例、操作存储桶、下载业务数据、篡改网络配置等高风险操作,危害范围远超单台服务器。

三、 防御与修复方案

  1. 输入过滤与校验

    • 对所有用户输入的参数(如 id)进行严格的白名单校验。如果预期是数字,则只接受数字字符。
    • 如果必须接受文件名,禁止包含任何路径遍历字符序列(如 ../, ..\, ....//)。
    • 对输出进行编码。
  2. 安全开发与运维规范

    • 严禁在代码、配置文件、或服务器上明文存储高敏感凭证(密码、AK/SK)。
    • 使用安全的配置管理工具或云服务商提供的密钥管理服务(KMS/Secrets Manager) 来动态获取凭证。
    • 建立严格的上线前安全检查清单,清除测试文件、临时文件、备份文件和注释掉的代码。
  3. 最小权限原则

    • Web应用程序运行账户应遵循最小权限原则,仅拥有其运行所必需的权限,无权读取Web目录之外的文件。
    • 为云服务AK/SK配置最小权限的访问策略(RAM/IAM Policy),避免使用拥有全局管理员权限的密钥。
  4. 定期安全审计与漏洞扫描

    • 定期对系统进行源代码安全审计和渗透测试,及时修复已知漏洞。
    • 使用漏洞扫描器检查是否存在目录遍历、SQL注入等常见Web漏洞。
    • 及时更新框架和组件,修补已知的Nday漏洞。
  5. 网络隔离与监控

    • 对内部系统实施网络分段隔离,防止攻击者在获取一个节点权限后轻易进行横向移动。
    • 部署完善的日志监控与入侵检测系统(IDS/IPS),对异常文件访问、暴力破解、异常API调用等行为进行告警。

四、 总结

本案例深刻地揭示了安全链的脆弱性:一个被低估的低危漏洞,完全可能成为摧毁整个防御体系的起点。它强调了以下核心思想:

  • 漏洞无高低:任何漏洞,无论CVSS评分高低,都可能成为攻击的跳板。
  • 纵深防御至关重要:不能依赖单一防护点。必须建立从Web应用到操作系统再到云网络的层层防御。
  • 细节决定安全:一个遗忘的临时文件、一套通用的默认密码、一个过时的框架版本,这些细节上的疏忽最终导致了全面的沦陷。
  • 渗透测试中,耐心和细致(“细心活儿”)往往是发现关键突破口的最重要品质。

教学文档:从目录遍历漏洞到全面沦陷的渗透实战 一、 漏洞链核心概述 本案例展示了一个经典的、由浅入深的渗透测试过程。攻击链路由一个看似低危的 目录遍历 (Directory Traversal) 漏洞开始,逐步获取敏感文件,进而发现服务器凭证,最终通过横向移动与权限提升,实现了 GetShell 、 窃取核心数据 、并 获取云服务高级权限 (AK/SK) 的全面突破。 关键漏洞链: 目录遍历 -> 敏感文件泄露 -> 服务器凭证泄露 -> 横向移动 -> 历史Nday漏洞利用 -> GetShell -> 源码泄露 -> 云权限密钥泄露 二、 详细攻击步骤分解 步骤一:信息收集与入口点发现 目标定位 :攻击者获得了一个门户系统的测试账号密码,以此作为初始进入点。 功能点探测 :在目标系统的多个子系统中进行浏览,寻找可疑功能。最终在一个名为“师生服务热线”或类似功能的子系统中发现关键接口。 发现可疑参数 :发现一个包含下载功能的接口,URL 格式为: /server/voicemailRecord/download?id= 。此处的 id 参数极有可能是一个直接指向服务器文件的指针。 步骤二:初探与漏洞验证 - 目录遍历 初步测试 :对 id 参数进行模糊测试(Fuzzing)。例如,将参数值从 1 到 10000 进行遍历,试图下载可能的文件。 目录遍历利用 :在尝试数字ID效果有限后,攻击者使用了经典的目录遍历Payload: ....//....//....// 或类似变体(如 ../ 的多次叠加),尝试跳出当前Web目录。 Payload示例 : /server/voicemailRecord/download?id=....//....//....//etc/passwd 成功标志 :服务器响应返回了超出预期目录的文件内容,例如系统文件或Web目录下的其他文件。这确认了 目录遍历漏洞 的存在。 步骤三:敏感信息收集与升级 利用漏洞读取文件 :利用已证实的目录遍历漏洞,开始系统性地读取Web应用目录、配置文件目录和用户目录下的文件。 发现高价值敏感文件 : 首先发现并下载了大量包含个人敏感信息的文件(如学生与工作人员的通信记录),初步构成数据泄露事件。 随后,攻击者发现了一个 极其关键的文件 :一个后缀名为 .账号 或类似命名的文件。该文件疑似系统交付或维护时遗留的临时文件或配置文档。 核心凭证获取 :该 .账号 文件内容包含了 服务器(如SSH)、数据库、以及其他内部系统的用户名和密码 。这些凭证很可能是明文存储的。 步骤四:横向移动与权限提升 凭证复用 :使用泄露的服务器SSH凭证,成功远程登录到一台或多台目标服务器,实现 GetShell 。 系统内部探测 : 在已控制的服务器上,发现了其他Web应用系统(例如一个基于 Jeecg-Boot 的工单系统)。 对这些新系统进行测试,发现存在多处 SQL注入 (如 order by 注入)和历史 Nday漏洞 。 历史Nday利用 :针对Jeecg-Boot系统,利用了其已知的(对于攻击者而言是Nday)历史漏洞,例如: 路径遍历 :再次出现,用于读取系统文件。 任意SQL语句执行 :直接执行任意SQL命令,可能导致数据库完全脱库。攻击者确认通过此漏洞获取了数十万条身份证(SFZ)数据。 步骤五:深度利用与最高权限获取 源码获取 :在已控制的服务器上,攻击者定位并下载了Web应用的 源码 (基于若依框架)。代码审计可能发现了更多未公开的漏洞。 云权限沦陷 :在源码或服务器配置文件(如 application.yml , application.properties 等)中,发现了云服务提供商(如阿里云、腾讯云、AWS等)的 访问密钥对(Access Key / Secret Key,即 AK/SK) 。 最大危害 :获取了AK/SK意味着攻击者拥有了该云服务账户API级别的访问权限。可以在云端进行 创建/删除实例、操作存储桶、下载业务数据、篡改网络配置 等高风险操作,危害范围远超单台服务器。 三、 防御与修复方案 输入过滤与校验 : 对所有用户输入的参数(如 id )进行严格的 白名单 校验。如果预期是数字,则只接受数字字符。 如果必须接受文件名,禁止包含任何路径遍历字符序列(如 ../ , ..\ , ....// )。 对输出进行编码。 安全开发与运维规范 : 严禁 在代码、配置文件、或服务器上明文存储高敏感凭证(密码、AK/SK)。 使用安全的配置管理工具或云服务商提供的 密钥管理服务(KMS/Secrets Manager) 来动态获取凭证。 建立严格的 上线前安全检查清单 ,清除测试文件、临时文件、备份文件和注释掉的代码。 最小权限原则 : Web应用程序运行账户应遵循最小权限原则,仅拥有其运行所必需的权限, 无权 读取Web目录之外的文件。 为云服务AK/SK配置 最小权限的访问策略(RAM/IAM Policy) ,避免使用拥有全局管理员权限的密钥。 定期安全审计与漏洞扫描 : 定期对系统进行源代码安全审计和渗透测试,及时修复已知漏洞。 使用漏洞扫描器检查是否存在目录遍历、SQL注入等常见Web漏洞。 及时更新框架和组件,修补已知的Nday漏洞。 网络隔离与监控 : 对内部系统实施网络分段隔离,防止攻击者在获取一个节点权限后轻易进行横向移动。 部署完善的日志监控与入侵检测系统(IDS/IPS),对异常文件访问、暴力破解、异常API调用等行为进行告警。 四、 总结 本案例深刻地揭示了安全链的脆弱性: 一个被低估的低危漏洞,完全可能成为摧毁整个防御体系的起点 。它强调了以下核心思想: 漏洞无高低 :任何漏洞,无论CVSS评分高低,都可能成为攻击的跳板。 纵深防御至关重要 :不能依赖单一防护点。必须建立从Web应用到操作系统再到云网络的层层防御。 细节决定安全 :一个遗忘的临时文件、一套通用的默认密码、一个过时的框架版本,这些细节上的疏忽最终导致了全面的沦陷。 渗透测试中,耐心和细致 (“细心活儿”)往往是发现关键突破口的最重要品质。