dedecms /install/index.php.bak Installation File Not Deleted && Executed Via Apache Analytic Vul

时间:2022-11-07 18:15:58

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的更多相关文章

  1. 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 ...

  2. Referenced file contains errors (http://tiles.apache.org/dtds/tiles-config_3_0.dtd)

    java开发时遇到的问题,之前还是好好的,没有错误提示.可是今天一打开项目就出现这种问题.真不知道是怎么回事,在这里求助.错误如下: Referenced file contains errors ( ...

  3. 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 ...

  4. python基础===Windows环境下使用pip install 安装出错"Cannot unpack file"解决办法

    不知道为什么,加了豆瓣镜像源还是不行 这个命令可以解决! pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douba ...

  5. No input file specified的解决方法apache伪静态

    http://jingyan.baidu.com/article/dca1fa6f8d623ff1a44052e8.html (一)IIS Noinput file specified 方法一:改PH ...

  6. 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 ...

  7. DeDecms远程写入漏洞webshell (dedecms漏洞)

    解释下Apache解析文件的流程: 当Apache检测到一个文件有多个扩展名时,如1.php.bak,会从右向左判断,直到有一个Apache认识的扩展名.如果所有的扩展名Apache都不认识,那么变会 ...

  8. 如何重新安装DEDECMS织梦系统

    重装的方法: 1.找到安装目录\install\index.php.bak文件,改名为index.php:   2.删除安装目录\install\install_lock文件:

  9. dedecms_v5.7的apache文件名解析漏洞的学习

    0x00 Apache文件名解析漏洞 Apache是一个Web服务器,可以提供web服务.配合java中间件.PHP实现动态页面访问. Apache和PHP通过接口接入后,Apache接受用户的请求, ...

随机推荐

  1. hadoop 8088无法访问

    http://bbs.csdn.net/topics/390891983 yarn-site.xml <property> <name>yarn.resourcemanager ...

  2. SAP SE11 网格布局显示

    SE11 进入数据显示界面后 在  Settings -> User Parameters,  Data Browser 页面 勾选ALV Grid display 即可.

  3. JavaScript为unicode编码转换为中文

    代码laycode - v1.1 关于这样的数据转换为中文问题,常用的以下方法. 1. eval解析或new Function("'+ str +'")()  str = eval ...

  4. android判断文件是否是图片文件的方法

    判断一个文件是否是图片文件的方法,采用BitmapFactory去decode然后根据返回的Options参数来确定: public static boolean isImageFile(String ...

  5. ABP&plus;AdminLTE&plus;Bootstrap Table权限管理系统第二节--数据库脚本

    第一点,上一篇文章中我们讲到codefirst中一些问题包括如图 1,codefirst在执行的数据库迁移过程中产生了很多文件,对于强迫症的我而言特别不爽,这些是可以不用生成的啊 2,在codefir ...

  6. centos下彻底删除mysql的方法

    本文记录了CentOS下MySQL的彻底卸载,供大家参考,具体内容如下: 1.查看MySQL是否安装 方式1: [root@localhost usr]# yum list installed mys ...

  7. EF只更新变化的字段

    摘要 在使用EF的时候,由于表字段较多,所以在更新的时候,想要只更新变化的字段,有没有办法呢? 解决办法 代码片段 public async Task<int> UpdateAsync(T ...

  8. Hadoop生态圈-Flume的组件之自定义拦截器(interceptor)

    Hadoop生态圈-Flume的组件之自定义拦截器(interceptor) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客只是举例了一个自定义拦截器的方法,测试字节传输速 ...

  9. mysql日期和字符相互转换

    From: http://www.2cto.com/database/201303/195083.html mysql日期和字符相互转换   date_format(date,'%Y-%m-%d') ...

  10. iOS裁剪,缩放图片白边问题解决办法

    几年没来了,感觉还是要写点啥,以后碰见问题 解决就写这吧,当是一个随时的笔记也好. iOS裁剪,缩放图片的代码网上也很多了,但是笔者出现了右边和下边出现白边的情况.出现白边的原因是给的size中的CG ...