从任意文件读取到GetShell
字数 1034 2025-08-25 22:58:20
从任意文件读取到GetShell - 渗透测试教学文档
背景概述
目标系统是一个身份证上传应用,用户通过钓鱼短信引导访问。初步分析发现主要功能是将身份证上传至OSS(对象存储服务),功能较为单一。
信息收集阶段
子域名枚举
使用subDomainsBrute工具进行子域名爆破,发现关键子域名:
admin1.example.com- 管理后台入口
管理后台发现
- 存在测试环境登录页面
- 成功使用弱密码
admin/admin1234登录
漏洞发现与利用
任意文件读取漏洞
在后台图片编辑功能中发现存在任意文件读取漏洞的接口。
关键读取文件路径:
/root/.bash_history- 获取系统操作历史记录/etc/shadow- 获取系统用户密码哈希(备用方案)/www/server/panel/data/admin_path.pl- 获取宝塔面板的安全入口路径/www/server/panel/data/default.db- 宝塔面板的SQLite数据库文件
宝塔面板利用
- 通过读取
admin_path.pl获取宝塔面板的安全入口 - 下载宝塔面板源代码分析
- 发现密码以MD5形式存储在SQLite数据库中
- 使用Navicat读取数据库文件获取账号密码
- 通过cmd5.com等在线服务破解MD5哈希
扩展攻击面建议
SSRF测试
评论中提到的扩展攻击方法:
- 尝试通过任意文件读取漏洞构造SSRF(服务器端请求伪造)
- 目标:访问阿里云元数据接口
http://169.254.169.254/latest/meta-data/ - 可能获取AK/SK(Access Key/Secret Key)从而控制OSS服务
技术要点总结
- 子域名爆破:使用工具如subDomainsBrute发现隐藏管理界面
- 弱密码测试:常见管理后台弱密码组合尝试
- 任意文件读取:
- 优先读取历史记录文件了解系统架构
- 读取关键配置文件获取更多入口点
- 读取数据库文件获取凭证
- 凭证破解:
- 识别哈希类型(本例为MD5)
- 使用在线破解服务或本地破解工具
- 横向扩展:
- 通过SSRF尝试访问云服务元数据
- 获取云服务凭证扩大控制范围
防御建议
- 禁用或限制管理后台的外部访问
- 使用强密码策略,避免默认或弱密码
- 修复任意文件读取漏洞,限制文件访问路径
- 对敏感文件(如数据库、配置文件)设置严格权限
- 禁用或限制云服务元数据接口的外部访问
- 定期审计系统日志和用户行为