记一次文件上传的曲折经历
字数 1164 2025-08-10 08:28:57
文件上传漏洞利用实战教学文档
1. 信息收集阶段
-
目标系统识别:
- 确认目标系统使用Shiro组件进行身份验证
- 获取低权限账号凭证(xxx/xxx)
- 验证Shiro反序列化漏洞不存在
-
权限评估:
- 低权限账号功能受限,需寻找其他攻击面
- 收集高权限管理员账号信息(通过通讯录功能)
2. 文件上传漏洞发现与利用
2.1 初始文件上传点
-
漏洞位置:
- 头像上传功能存在任意文件上传
- 可上传JSP文件但不被解析
-
限制分析:
- 请求数据包中无控制路径的参数
- 无法直接通过上传获取WebShell
2.2 跨目录文件上传
-
发现新上传点:
- 使用收集的高权限账号发现其他上传功能
- 上传请求返回两个路径参数:
id参数:绝对路径url参数:Web可访问路径
-
路径映射分析:
/home/weblogic/userfiles/映射为/luxxx/userfiles/- 超出映射目录的文件无法通过Web访问
-
WAF绕过技术:
- 路径遍历限制:
../超过3组被拦截 - 绕过方法:使用
../..//../替代
- 路径遍历限制:
2.3 获取Web绝对路径
-
任意文件读取漏洞:
- 需要系统管理员权限
- 通过创建具有系统管理员权限的用户访问文件管理功能
- 下载功能存在任意文件下载漏洞
-
关键文件下载:
- 下载
.bash_history文件 - 从历史命令中寻找线索
- 下载
-
Tomcat配置发现:
- 通过
.bash_history找到Tomcat配置文件 - 从中获取Web应用的绝对路径
- 通过
3. 其他文件操作漏洞
3.1 任意文件删除
- 存在但利用价值有限(不适合红队操作)
3.2 文件移动功能
- 尝试上传cron文件反弹shell
- 但权限不足无法利用
4. 最终WebShell上传
-
确定Web目录:
- 通过Tomcat配置文件确认绝对路径
-
上传WebShell:
- 使用已知的绝对路径上传JSP WebShell
- 成功获取系统权限
5. 关键技巧总结
-
多账号利用:
- 从低权限账号收集高权限账号信息
- 创建具有更高权限的用户
-
路径遍历技巧:
../..//../绕过WAF对../../../的限制
-
历史文件分析:
.bash_history是重要的信息源- 可暴露配置文件路径和系统操作历史
-
文件上传利用链:
低权限账号 → 收集高权限账号 → 发现上传点 → 路径遍历限制 → 获取绝对路径 → 上传WebShell → 获取权限
6. 防御建议
-
文件上传防护:
- 限制上传文件类型(白名单)
- 重命名上传文件
- 禁止路径遍历字符
-
权限控制:
- 严格区分不同权限账号的功能
- 避免普通账号获取高权限账号信息
-
日志清理:
- 定期清理
.bash_history等敏感日志文件 - 避免暴露系统配置信息
- 定期清理
-
WAF规则优化:
- 检测非常规路径遍历方式(如
..//..) - 对文件下载功能进行严格限制
- 检测非常规路径遍历方式(如
-
系统加固:
- 限制Tomcat等中间件的配置文件访问
- 使用专用用户运行服务,限制其权限