0x01 漏洞描述:
在 /Application/Home/Controller/IndexAjaxController.class.php
控制器中,存在一个 Upload
方法来处理通过 base64 编码上传的图像。该方法首先接收 POST 请求中的 img
和 size
参数,检查 img
是否为空。如果不为空,它会从 img
参数中提取 base64 数据,去掉 MIME 类型前缀,并使用 base64_decode
解码。接着,方法会检查是否存在 Upload
目录,如果不存在,则创建该目录以确保能够存放上传的文件。随后,使用 uniqid()
生成一个唯一的文件名,确保文件名不冲突,最后通过 file_put_contents
将解码后的图像数据写入指定的文件路径。上传成功后,方法返回一个成功的 JSON 响应,其中包含文件路径;如果上传失败,则返回错误信息。通过这种方式,可以将 base64 编码的图像文件保存到服务器的指定目录中。从而导致任意文件写入漏洞产生。
问题源码:
public function Upload(){
$ba