DedeCMS V5.7 SP2前台文件上传漏洞(CVE-2018-20129)
时间:2023年06月11日
/来源:网络
/编辑:佚名
一、漏洞描述
织梦内容管理系统(Dedecms)是一款PHP开源网站管理系统。Dedecms V5.7 SP2版本中的uploads/include/dialog/select_images_post.php文件存在文件上传漏洞,远程攻击者可以利用该漏洞上传并执行任意PHP代码。
该漏洞利用条件:1、需要开发会员注册功能 2、权限必须是管理员,普通用户无法写入文件
二、漏洞环境搭建
1、官方下载DeDeCMS V5.7 SP2(UTF-8),下载地址: http://www.dedecms.com/products/dedecms/downloads/
2、使用phpstudy搭建web环境
3、把下载好的源码放到网站根目录下(www),然后开启phpstudy, 浏览器访问http://192.168.10.171/dedecms/uploads/install/index.php
4、点击我已阅读并继续。然后是环境检测,保存默认即可
5、接下来是参数配置,需要设置的只有数据库密码,把自己的密码填上去就行了
6、然后就把环境搭好了
7、登录后台,开启会员功能
三、漏洞复现
1、首先进入会员中心,必须是管理员的权限,因为后面上传文件有权限限制。进入会员中心后进入内容中心模块
2、发布一个文章,点击下面的编辑器的上传图片按钮。
3、测试上传一个test.jpg的图片但是内容只有php一句话,下图返回可以看到上传失败
4、测试上传一个test.jpg的图片但是内容只有php一句话和图片的标识头
5、查看代码,在dedecms\include\dialog\select_images_post.php中的36行,过滤了一些看起来不正常的字符,可以通过以.p*hp后缀来绕过这行代码
6、在38行处判断了文件名是否包含了$cfg_imgtype的字符。查看cfg_imgtype所在的位置dedecms\install\config.cache.inc.php,可以构造abc.p*hp可以绕过36和38行代码
7、从上面的正则表达式中可以看到,*、%、?、<>可以绕过限制,这里以”*”为例,构造payload绕过
7.1、点击上传,选择准备好的一句话图片木马文件(一个test.jpg的图片但是内容只有php一句话和图片的标识头)
7.2、用burp工具抓包,将test.jpg改为test.jpg.p*hp,下图可以看到成功上传,但是不知道上传的路径
7.3 制作一个隐藏度高点的图片马(图片不损坏),然后上传
7.4下图可以看到成功上传并且返回了上传的地址
8、菜刀连接访问,解析失败,无法连接,可能是图片和一句话制作的图片马影响了解析
9、通过上传图片马获得的上传地址,浏览器访问http://192.168.10.171/dedecms/uploads/uploads/allimg/190808
10、点击上图的位置,可以看到如下图所示,说明这个是之前上传的那个没有返回上传地址一句话木马
11、菜刀连接
四、漏洞防御
1、 在服务器端使用”白名单”的方式检查上传文件的类型
2、 强制将所上传的图片的后缀修改”.jpg”,”.png”,”.gif”等格式
3、 升级版本
织梦内容管理系统(Dedecms)是一款PHP开源网站管理系统。Dedecms V5.7 SP2版本中的uploads/include/dialog/select_images_post.php文件存在文件上传漏洞,远程攻击者可以利用该漏洞上传并执行任意PHP代码。
该漏洞利用条件:1、需要开发会员注册功能 2、权限必须是管理员,普通用户无法写入文件
二、漏洞环境搭建
1、官方下载DeDeCMS V5.7 SP2(UTF-8),下载地址: http://www.dedecms.com/products/dedecms/downloads/
2、使用phpstudy搭建web环境
3、把下载好的源码放到网站根目录下(www),然后开启phpstudy, 浏览器访问http://192.168.10.171/dedecms/uploads/install/index.php
4、点击我已阅读并继续。然后是环境检测,保存默认即可
5、接下来是参数配置,需要设置的只有数据库密码,把自己的密码填上去就行了
6、然后就把环境搭好了
7、登录后台,开启会员功能
三、漏洞复现
1、首先进入会员中心,必须是管理员的权限,因为后面上传文件有权限限制。进入会员中心后进入内容中心模块
2、发布一个文章,点击下面的编辑器的上传图片按钮。
3、测试上传一个test.jpg的图片但是内容只有php一句话,下图返回可以看到上传失败
4、测试上传一个test.jpg的图片但是内容只有php一句话和图片的标识头
5、查看代码,在dedecms\include\dialog\select_images_post.php中的36行,过滤了一些看起来不正常的字符,可以通过以.p*hp后缀来绕过这行代码
6、在38行处判断了文件名是否包含了$cfg_imgtype的字符。查看cfg_imgtype所在的位置dedecms\install\config.cache.inc.php,可以构造abc.p*hp可以绕过36和38行代码
7、从上面的正则表达式中可以看到,*、%、?、<>可以绕过限制,这里以”*”为例,构造payload绕过
7.1、点击上传,选择准备好的一句话图片木马文件(一个test.jpg的图片但是内容只有php一句话和图片的标识头)
7.2、用burp工具抓包,将test.jpg改为test.jpg.p*hp,下图可以看到成功上传,但是不知道上传的路径
7.3 制作一个隐藏度高点的图片马(图片不损坏),然后上传
7.4下图可以看到成功上传并且返回了上传的地址
8、菜刀连接访问,解析失败,无法连接,可能是图片和一句话制作的图片马影响了解析
9、通过上传图片马获得的上传地址,浏览器访问http://192.168.10.171/dedecms/uploads/uploads/allimg/190808
10、点击上图的位置,可以看到如下图所示,说明这个是之前上传的那个没有返回上传地址一句话木马
11、菜刀连接
四、漏洞防御
1、 在服务器端使用”白名单”的方式检查上传文件的类型
2、 强制将所上传的图片的后缀修改”.jpg”,”.png”,”.gif”等格式
3、 升级版本
新闻资讯 更多
- 【织梦cms教程】dedecms5.7转帝国cms7.2方法03-02
- 【织梦cms教程】dedecms(织梦)自定义表单后台显示不全 自定义模型当中添加自定义字段后在后台添加内容后不显示解决方案03-01
- 【织梦cms教程】织梦DEDECMS网站首页如何实现分页翻页02-09
- 【织梦cms教程】织梦网站如何变成动态02-09
- 【织梦cms教程】织梦DEDECMS导航下拉菜单的实现方法02-08
- 【织梦cms教程】DedeCMS帝国备份王织梦系统网站搬家02-08
- 【织梦cms教程】织梦DedeCMS相关文章的调用方法01-27
- 【织梦cms教程】【织梦二次开发】dedecms删除文章同时删除附件01-21
热门文章
- 178Moban源码谈谈免费源码与收费源码的区别
- 2帝国CMS忘记后台登陆用户名、密码、认证码的解决方法
- 3帝国CMS(EmpireCMS) v7.5后台任意代码执行漏洞及具体修复方法
- 4帝国CMS和WordPress 哪个好?哪个适合建站?
- 5如何解决Discuz的密码错误次数过多请15分钟后登陆的问题
- 6帝国cms灵动标签取得内容和栏目链接地址
- 7emlog pro 注册码“开心”教程(如果有一天,emlog官方版 或者 emlog免费版 跑路了,那用户怎么办?)
- 8织梦CMS在nginx下设置伪静态方法(附nginx伪静态规则)
- 9帝国cms后台登录出现”您还未登录”怎么解决?
- 10帝国cms7.5忘记登录密码 和忘记登录认证码以及多次登录 失败被锁定解决办法