从任意文件下载到服务器权限获取
字数 1227 2025-08-29 08:30:19
从任意文件下载到服务器权限获取 - 渗透测试教学文档
声明
本教学文档仅用于网络安全技术研究,所有渗透测试行为必须获得合法授权,违者后果自负。
漏洞概述
本案例展示了如何通过发现和利用任意文件下载漏洞,逐步获取服务器权限的完整过程。关键点包括接口发现、参数测试、敏感文件下载、信息收集和权限提升。
漏洞发现
1. 接口识别
- 通过浏览器插件(如小熊猫插件)发现可疑接口:
zipDownload - 此类名称具有争议性的接口往往值得深入测试
2. 参数测试
- 直接访问接口返回错误提示:
- 缺少
path参数 - 添加
path参数后又提示缺少type参数
- 缺少
- 完整请求结构:
https://ip/xxx/xxx/zipDownload?type=1&path=etc/passwd
漏洞验证
- 使用目录遍历技术测试漏洞有效性:
- 成功下载
/etc/passwd文件 - 确认存在任意文件下载漏洞
- 成功下载
信息收集阶段
1. 敏感文件下载
尝试下载多个Linux系统中的敏感文件:
-
.bash_history
- 查看用户历史命令记录
- 本例中未发现有价值信息
-
.mysql_history
- 检查MySQL操作历史
-
SSH相关文件
.ssh/目录内容- 发现SSH配置允许root远程登录
- 发现非标准SSH端口(xxx0)
-
其他系统文件
/etc/shadow- 用户密码哈希/proc/self/cmdline- 进程启动参数- cron任务文件
- maps内存映射文件
2. 端口扫描
- 确认目标服务器开放了SSH和MySQL端口
权限提升路径
1. 密码破解尝试
- 使用john工具破解
/etc/shadow中的root密码哈希 - 长时间破解未获得结果
2. 关键文件分析
- 下载
/proc/self/cmdline文件- 包含内核启动参数
- 发现yml配置文件的绝对路径
3. 配置文件获取
- 下载发现的yml配置文件
- 文件中包含多种数据库凭据:
- MySQL
- Redis
- MongoDB
- MQTT
4. 凭据重用攻击
- 尝试使用数据库密码连接MySQL(公网开放)
- 多个密码尝试失败
- 尝试相同密码SSH登录
- 使用MongoDB的密码成功以root身份登录
- 获得服务器完全控制权限
防御建议
1. 防止任意文件下载
- 严格校验文件路径参数
- 限制可访问的目录范围
- 实施白名单机制
2. 安全配置
- 禁止root用户远程SSH登录
- 使用密钥认证替代密码认证
- 修改默认SSH端口
3. 敏感信息保护
- 配置文件不应包含明文密码
- 使用环境变量或加密存储凭据
- 限制配置文件权限
4. 系统加固
- 定期更新系统和应用
- 实施最小权限原则
- 监控异常登录行为
总结
本案例展示了从简单的文件下载漏洞到完全控制服务器的完整攻击链,强调了:
- 敏感接口的发现和测试
- 系统信息的全面收集
- 凭据重用攻击的有效性
- 纵深防御的重要性
通过此案例,安全人员应更加重视任意文件下载漏洞的危害性,并采取相应防护措施。