记一次dedecms5.8.1远程代码执行分析

admin 2021年10月23日11:00:50评论128 views字数 781阅读2分36秒阅读模式

记一次dedecms5.8.1远程代码执行分析

首先这里的原创的文章

https://xz.aliyun.com/t/10331#reply-17078

根据这个表哥的思路来分析的

我们先看poc


记一次dedecms5.8.1远程代码执行分析


我们定位到/plus/fink.php这个文件


记一次dedecms5.8.1远程代码执行分析


我们在这里下一个断点


然后我们f7往下走到showMag这个函数

if ($dopost== 'save') {
    $validate = isset($validate) ?strtolower(trim($validate)) : '';
    $svali =GetCkVdValue();
    if ($validate== '' || $validate!= $svali) {
        ShowMsg('验证码不正确!', '-1');
        exit();


记一次dedecms5.8.1远程代码执行分析


来到这个函数之后 我们可以看到这里$gurl如果等于-1的话

进行$_SERVER[‘HTTP_REFERER’] 复制给$gourl


这里没有做任何过滤直接赋值给$gourl了


记一次dedecms5.8.1远程代码执行分析


可以看到此时的$gourl是我们的恶意代码


记一次dedecms5.8.1远程代码执行分析


这里进行了字符串的拼接

此时可以看到$func是包含我们的poc的


我们继续往下走


记一次dedecms5.8.1远程代码执行分析


这里进行了一系列的拼接


记一次dedecms5.8.1远程代码执行分析


此时的$msg是包含我们的恶意代码的

$tpl->LoadString($msg);


我们进入LoadString这个方法


记一次dedecms5.8.1远程代码执行分析


这里进行了一次赋值


然后我们进入到display这个方法


记一次dedecms5.8.1远程代码执行分析


再来到这个方法


记一次dedecms5.8.1远程代码执行分析


调用GetResult方法赋值给了$result

此时的$result是包含我们的恶意代码的


然后我们来到

CheckDisabledFunctions

这个方法

因为他对$result进行了操作


所以我们跟进去


记一次dedecms5.8.1远程代码执行分析


这里要进行一个黑名单的绕过

这里没有对双引号进行监测 php中双引号中的字符串是可以解析为函数的


所以实现了一个绕过


记一次dedecms5.8.1远程代码执行分析


判断完之后这里进行了写入操作


记一次dedecms5.8.1远程代码执行分析


然后这里进行了包含执行‘


记一次dedecms5.8.1远程代码执行分析

原文始发于微信公众号(疯猫网络):记一次dedecms5.8.1远程代码执行分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年10月23日11:00:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次dedecms5.8.1远程代码执行分析http://cn-sec.com/archives/597673.html

发表评论

匿名网友 填写信息