Maccms8.x 命令执行漏洞分析

下载链接https://share.weiyun.com/23802397ed25681ad45c112bf34cc6db

首先打开Index.php

    $m = be(‘get‘,‘m‘);

m参数获取经过第17行分割后

$par = explode(‘-‘,$m);

这里填入?m=vod-search

经过34-39行处理

    $acs = array(‘vod‘,‘art‘,‘map‘,‘user‘,‘gbook‘,‘comment‘,‘label‘);

    if(in_array($ac,$acs)){
        $tpl->P["module"] = $ac;
        include MAC_ROOT.‘/inc/module/‘.$ac.‘.php‘;
    }

这样就包含了/inc/module/vod.php

elseif($method==‘search‘)
{
    $tpl->P["siteaid"] = 15;
    $wd = be("all", "wd");
    if(!empty($wd)){ $tpl->P["wd"] = $wd; }

然后获取wd参数

之后在index.php第45行附近进入了

    $tpl->ifex();

跟踪函数

刚上来

    function ifex()
    {
        if (!strpos(",".$this->H,"{if-")) { return; }
        $labelRule = buildregx(‘{if-([\s\S]*?):([\s\S]+?)}([\s\S]*?){endif-\1}‘,"is");

定义正则的规则 而$this-H在vod文件中说明了/inc/module/vod.php 189行附近

    $tpl->H = loadFile(MAC_ROOT_TEMPLATE."/vod_search.html");

回到/inc/common/template.php  866行

preg_match_all($labelRule,$this->H,$iar);

其实就是匹配出提取出来的wd参数

接着进入循环

        for($m=0;$m<$arlen;$m++){
            $strn = $iar[1][$m];
            $strif= asp2phpif( $iar[2][$m] ) ;

接着往下走发现要实现eval

在916到921行限制是最少的

else{
//die("if($strif){\$ifFlag=true;}else{\$ifFlag=false;}");
   @eval("if($strif){\$ifFlag=true;}else{\$ifFlag=false;}");
   if ($ifFlag){ $this->H=str_replace($iar[0][$m],$strThen,$this->H);} else { $this->H=str_replace($iar[0][$m],"",$this->H); }
}

总结一下$this-H中必须有{if-我们输入的wd参数带有{if-就可以绕过

然后满足

{if-([\s\S]*?):([\s\S]+?)}([\s\S]*?){endif-\1}

这样提交

{if-A:phpinfo()}{endif-A}

进入preg_match_all中上面内容被扔进一个二维数组中

第874行的函数就是

        for($m=0;$m<$arlen;$m++){
            $strn = $iar[1][$m];
            $strif= asp2phpif( $iar[2][$m] ) ;  --874

phpinfo()

接着不满足881行的if条件

if (strpos(",".$strThen,$labelRule2)>0){

进入了906行 而又不满足908行的if

if (strpos(",".$strThen,$labelRule3)>0){

进入了最没限制的916行

导致了命令执行

时间: 2024-12-19 18:13:26

Maccms8.x 命令执行漏洞分析的相关文章

WordPress &lt;= 4.6 命令执行漏洞(PHPMailer)复现分析

漏洞信息 WordPress 是一种使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站.也可以把 WordPress 当作一个内容管理系统(CMS)来使用.WordPress 使用 PHPMailer 组件向用户发送邮件.PHPMailer(版本 < 5.2.18)存在远程命令执行漏洞,攻击者只需巧妙地构造出一个恶意邮箱地址,即可写入任意文件,造成远程命令执行的危害. 漏洞编号 CVE-2016-10033 影响版本 WordPress

DVWA系列之9 high级别命令执行漏洞

将DVWA Security切换到high级别,在Command Execution中查看网页源码. 这里首先也是用stripslashes函数对获取到的IP地址进行了处理,主要是为了去掉转义后添加的斜杠,原因之前已经解释过,由于在high级别下会自动启用PHP的magic_quotes_gpc魔术引号,对所有的传值数据自动用addslashes()函数转义,所以需要用stripslashes()函数去除. 接下来使用了explode函数,以"."为分隔符将$target变量中的IP地

小白日记36:kali渗透测试之Web渗透-手动漏洞挖掘(二)-突破身份认证,操作系统任意命令执行漏洞

手动漏洞挖掘 ###################################################################################### 手动漏洞挖掘原则[会比自动扫描器发现的漏洞要多,要全面] 1.每一个变量都进行尝试 2.所有头[如:cookie中的变量] 3.逐个变量删除 #####################################################################################

DVWA系列之7 low级别命令执行漏洞

下面我们开始分析DVWA中的Command Execution命令执行漏洞. 首先仍是将DVWA Security设置为Low,选择Command Execution,这里在文本框中输入一个IP,点击Submmit提交便可以执行ping命令. 点击"View Source"查看网页源码. 可以看到,这里的数据是以post方式提交过来的,然后被赋值给了变量$target. 接下来有一个if语句,判断条件是"stristr(php_uname('s'), 'Windows NT'

DVWA系列之10 命令执行漏洞的挖掘与防御

通用的命令执行漏洞防御方法通常是使用两个函数:EscapeShellCmd和EscapeShellArg,下面分别来分析这两个函数. EscapeShellCmd()函数可以把一个字符串中所有可能瞒过Shell而去执行另外一个命令的字符转义,比如管道符(|).分号(;).重定向(>).从文件读入(<)等. 下面我们来测试一下这个函数是否管用,以low级别的命令执行漏洞为例,对应的网页文件为D:\AppServ\www\dvwa\vulnerabilities\exec\source\low.p

NETGEAR 系列路由器命令执行漏洞简析

NETGEAR 系列路由器命令执行漏洞简析 2016年12月7日,国外网站exploit-db上爆出一个关于NETGEAR R7000路由器的命令注入漏洞.一时间,各路人马开始忙碌起来.厂商忙于声明和修复,有些人忙于利用,而我们则在复现的过程中寻找漏洞的本质. 一.漏洞简介 1.漏洞简介 2016年12月7日,NETGEAR R7000路由器在exploit-db上被爆出存在远程命令执行漏洞,随着安全研究人员的不断深入,R8000和R6400这两款路由器也被证实有同样的问题. 2016年12月1

python 代码审计-命令执行漏洞(自己编写的代码)

python 代码审计-命令执行漏洞(自己编写的代码) 0x00 源代码 def execute(request): context ={} ip= request.POST.get("ip") username= request.POST.get("username") password= request.POST.get("password") idnex= int(request.POST.get("index")) c

【知道创宇404实验室】Oracle WebLogic远程命令执行漏洞预警

2019年04月17日,国家信息安全漏洞共享平台(CNVD)官方发布安全公告 http://www.cnvd.org.cn/webinfo/show/4989 称Oracle WebLogic wls9-async组件存在反序列化远程命令执行漏洞,***者可利用该漏洞,可在未授权的情况下远程执行命令.随后知道创宇404实验室启动应急流程,通过分析后复现了该漏洞并确定该漏洞影响启用了wls9_async_response.war及wls-wsat.war组件的所有Weblogic版本(包括最新版本

路由器漏洞挖掘之 DIR-850/645 命令执行漏洞复现

前言 这次来分析两个比较经典的路由器命令执行漏洞,DIR-850 和 DIR-645 的 RCE,漏洞成因都是由于参数拼接不当造成的. 漏洞分析 根据前一篇文章中的任意文件读取漏洞,在读取到 DEVICE.ACCOUNT 配置文件中的敏感信息之后,我们就可以进一步利用,达到命令执行的目的,进而 getshell. php 源代码 代码如下: 这里的 server 变量可控,导致在拼接时,我们可以闭合前面的命令参数,执行任意命令. 通过前一步的任意文件读取得到 admin 的密码之后,登录上去抓包