Dedecms 前端RCE分析

0x01 背景

Dedecms V5.8.1 bate存在前端RCE,并且利用简单,对于这种有趣的,高质量的RCE很感兴趣于是进行复现分析后有了这篇文章。

注:Dedecms源码已经开发,并且本次分析均在本地环境测试,文章仅记录分享,不得用于任何非法活动。

0x02 环境搭建

下载Dedecms:

https://github.com/dedecms/DedeCMS/releases/tag/v5.8.1

0x03 源码分析

漏洞利用链整体分析:

图片

1、定位include/common.func.php中的ShowMsg()方法:

function ShowMsg($msg, $gourl, $onlymsg = 0, $limittime = 0)
{
    if (empty($GLOBALS['cfg_plus_dir'])) {
        $GLOBALS['cfg_plus_dir'] = '..';
            }
            if ($gourl == -1) {
                    $gourl = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
                            if ($gourl == "") {
                                        $gourl = -1;
                                               }
                                                   }
  $htmlhead = "html内容" . (isset($GLOBALS['ucsynlogin']) ? $GLOBALS['ucsynlogin'] : '') . "html内容";
  $htmlfoot = "html内容";
  $litime = ($limittime == 0 ? 1000 : $limittime);
  $func = '';
  if ($gourl == '-1') {
       if ($limittime == 0) {
            $litime = 3000;
                               }
              $gourl = "javascript:history.go(-1);";
                                 }
           if ($gourl == '' || $onlymsg == 1) {
            $msg = "";        
            } else {
             //当网址为:close::objname 时, 关闭父框架的id=objname元素
                if (preg_match('/close::/', $gourl)) {
                    $tgobj = trim(preg_replace('/close::/', '', $gourl));
                     $gourl = 'javascript:;';            
                     $func .= "window.parent.document.getElementById('{$tgobj}').style.display='none';\r\n";        }        $func .= "var pgo=0;      function JumpUrl(){        if(pgo==0){ location='$gourl'; pgo=1; }      }\r\n";        $rmsg = $func;        $rmsg .= "document.write(\"
                                                                                          
\");\r\n";
        $rmsg .= "document.write(\"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值