续:组合利用链(二)-zzzphp<=1.7.3文件上传getshell
字数 957 2025-08-26 22:11:40
ZZZPHP <=1.7.3 文件上传GetShell漏洞分析与利用
漏洞概述
本漏洞是ZZZPHP 1.7.3及以下版本中存在的一个组合利用链漏洞,通过控制文件上传目录和利用自解压功能,可实现任意文件上传并最终获取服务器Shell权限。
漏洞成因分析
1. 任意目录上传漏洞
在save.php文件的up_load函数中,存在以下问题:
- 上传目录可控:
upfolder参数可被攻击者控制,允许将文件上传到任意目录 - 自动创建目录:如果指定目录不存在,系统会自动创建该目录
2. 文件类型限制绕过
虽然系统对上传文件类型做了白名单限制(仅允许zip压缩包、图片和pdf),但仍存在以下问题:
- type参数可控:文件类型检查参数
$type可被攻击者控制 - PHP5扩展名上传:可构造
type=PHP5和filename=xxx.php5上传文件- 虽然能上传成功,但由于Apache默认不解析
.php5扩展名,此方法无法直接利用
- 虽然能上传成功,但由于Apache默认不解析
3. 自解压功能漏洞
系统存在一个关键的自解压功能点:
up_data函数中的unzip功能:getfile函数会遍历zip目录下的压缩包- 发现压缩包后会自动解压
- 组合利用:
- 通过控制上传目录将zip文件上传到特定位置
- 利用自解压功能解压恶意zip文件
- 解压后的文件可包含webshell等恶意脚本
漏洞利用链
完整的漏洞利用流程如下:
- 控制上传目录:通过可控的
upfolder参数指定上传目录 - 上传恶意zip文件:利用文件上传功能上传包含webshell的zip压缩包
- 触发自解压:系统自动解压上传的zip文件
- 获取Shell:访问解压后的webshell文件获取服务器权限
漏洞修复
ZZZPHP在1.7.4版本中修复了该漏洞:
- 修复任意目录上传问题:对上传目录进行了严格限制
- 建议:使用ZZZCMS的用户应升级至1.7.4或更高版本
教学总结
该漏洞是一个典型的组合利用链漏洞,展示了如何将多个看似不严重的问题组合起来形成高危漏洞。在代码审计中需要特别关注:
- 文件上传功能的目录和类型控制
- 系统自解压或自动处理功能的安全性
- 参数可控性带来的潜在风险
通过此案例,安全研究人员可以学习到组合利用链的审计思路和利用方法。