漏洞出现在E-mobile/App/Ajax/ajax.php
文件中,是后缀过滤被绕过导致的。
业务逻辑如下:
(1)$photo = $_FILES["upload_quwan"];
将上传文件赋值给$photo
,
(2)$ext_temp = path_info($photo["name"]);
获取上传文件后缀
(3) 后缀合法性校验(漏洞核心位置)
校验过程存在缺陷,只校验了上传文件后缀有没有在黑名单,却未考虑后缀为空的情况,比如123.php.
,此时取到的后缀为空,不在黑名单。
(4) 拼接路径,完成上传。
action=mobile_upload_save
直接上传即可
还是这个文件,继续分析action
为其他的分支,在action=dingtalkImg
时,存在该漏洞,我们看下实现过程:
(1) 获取一个result参数,然后传入GrabImage
函数进行远程文件抓取操作。
(2) 跟进GrabImage
,该函数做了几点操作:
全程一气呵成,没有做任何文件后缀校验。
所以,该处既存在全回显SSRF,同样文件保存在服务器,可以造成RCE
服务器上启一个web服务,将代码放进去:
然后构造URL进行请求:
action=outSignImg
时
在/E-mobile/App/System/File/downfile.php
中
(1)赋值过程(11-18行)
$fileurl = $_REQUEST["url"];
// ....
$rooturl = "http://".$_SERVER['HTTP_HOST'];
$checkurl = explode("/", $fileurl);
当$checkurl
中包含某些特定字符时,则拼接指定的URL:
(2)拼接完整URL,不满足上述两种特定流程时。
else
{
$url = $rooturl.$fileurl;// 将HOST和url参数值拼接
$filetype = pathinfo($fileurl); // 获取文件后缀
$type = $filetype["extension"]; // 将type设置为文件后缀
}
(3)$url
传入file_get_content
造成SSRF
url=@butian.net
butian.net
13 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!