记一次任意文件下载(尝试Getshell未果)
字数 1264 2025-08-06 18:08:14
任意文件下载漏洞利用与Getshell尝试分析
漏洞背景
本文记录了一次通过任意文件下载漏洞尝试Getshell的过程,虽然最终未能成功获取shell,但展示了完整的渗透测试思路和方法。
目标系统
目标系统是一个招聘网站,基于ASP.NET MVC架构。
渗透测试过程
1. 初始信息收集
- 尝试注册账户但放弃,选择其他测试方式
- 系统存在文件上传功能
2. 文件上传测试
- 尝试直接上传恶意文件
- 开启抓包工具拦截上传请求
- 修改上传参数尝试绕过限制
- 上传测试失败,思路暂时中断
3. 发现任意文件下载漏洞
- 测试发现系统存在任意文件下载漏洞
- 经过测试,使用
../../../三层目录穿越可成功下载Web.config文件- Web.config是ASP.NET应用程序的配置文件,包含敏感信息
4. Getshell尝试
-
第一次尝试:
- 通过任意文件下载漏洞尝试直接上传webshell
- 上传测试失败
-
第二次尝试:
- 下载系统源码进行分析
- 从网络下载MVC源码对比目录结构
- 尝试下载
System.Web.Mvc.dll文件 - 通过对比找到真正的业务代码目录
-
第三次尝试 - 图片抓取上传:
- 发现系统不能抓取外部图片
- 测试是否可以抓取服务器本地图片
- 确认可以抓取服务器上的JPG图片
- 尝试抓取aspx文件,部分成功
- 改为尝试抓取asmx文件(ASP.NET Web服务文件)
- 使用Tas9er的ByPassGodzilla工具(GitHub项目)
- 制作图片马:
copy 1.jpg/b + 2.asmx 3.jpg - 利用头像上传功能上传图片马
- 通过UEditor编辑器抓取图片功能尝试Getshell
5. 失败原因分析
- 目录权限限制导致上传的webshell无法执行
- 系统仅允许解析HTML等安全文件类型
- aspx/asmx文件虽然可以上传但无法执行
技术要点总结
-
任意文件下载漏洞利用:
- 使用
../../../进行目录穿越 - 优先下载Web.config获取配置信息
- 下载DLL文件分析系统架构
- 使用
-
图片抓取上传技巧:
- 测试服务器本地图片抓取功能
- 尝试不同扩展名(aspx, asmx)
- 使用图片马技术绕过上传限制
-
Bypass技术:
- 使用copy命令制作图片马:
copy 1.jpg/b + 2.asmx 3.jpg - 利用UEditor等编辑器的抓取功能
- 使用copy命令制作图片马:
防御建议
-
修复任意文件下载漏洞:
- 限制文件下载路径
- 对用户输入进行严格过滤
-
加强上传功能安全:
- 检查文件内容而不仅是扩展名
- 限制图片抓取功能只能访问外部URL
-
服务器配置:
- 设置严格的目录权限
- 禁止执行上传目录中的脚本文件
-
其他:
- 定期更新框架和组件
- 实施WAF防护
工具与资源
- ByPassGodzilla工具:https://github.com/Tas9er/ByPassGodzilla
- 图片马制作技术
- UEditor编辑器漏洞利用
虽然本次渗透测试未能最终获取shell,但展示了完整的渗透思路和多种技术手法的组合应用,对防御方和攻击方都有参考价值。