总是被忽略的目录遍历到getshell以及云权限~证书站严重案例
字数 2579 2025-09-23 19:27:46
教学文档:从目录遍历漏洞到全面沦陷的渗透实战
一、 漏洞链核心概述
本案例展示了一个经典的、由浅入深的渗透测试过程。攻击链路由一个看似低危的目录遍历 (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目录下的其他文件。这确认了目录遍历漏洞的存在。
- Payload示例:
步骤三:敏感信息收集与升级
- 利用漏洞读取文件:利用已证实的目录遍历漏洞,开始系统性地读取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应用到操作系统再到云网络的层层防御。
- 细节决定安全:一个遗忘的临时文件、一套通用的默认密码、一个过时的框架版本,这些细节上的疏忽最终导致了全面的沦陷。
- 渗透测试中,耐心和细致(“细心活儿”)往往是发现关键突破口的最重要品质。