漏洞详情
禅道项目管理软件12.4.2版本存在后台任意文件上传漏洞
禅道已在12.4.3版本中修复该漏洞。
代码审计
对比 12.4.2
与 12.4.3
的源代码发现 /module/client/ext/model/xuanxuan.php
路径增加了文件上传后缀的限制。
找到12.4.2版本中的对应文件,通过base64解码 link
,之后正则匹配是否有 http(s)://
(因为没有匹配大小写,利用可使用HTTP绕过),如果存在就返回 false
,检查无误会调用父类中的 downloadZipPackage
函数。
找到父类定义的函数 /module/client/model.php
中的 downloadZipPackage
,这个函数通过 fopen
远程打开 $link
链接的文件内容,并写入 /www/data/client/$version/
路径中。
/**
* Download zip package.
* @param $version
* @param $link
* @return bool | string
*/
public function downloadZipPackage($version, $link)
{
ignore_user_abort(true);
set_time_limit(0);
if(empty($version) || empty($link)) return false;
$dir = "data/client/" . $version . '/';
$link