0x00 简述
版本:deedcms v5.7 sp2
下载链接:http://updatenew.dedecms.com/base-v57/package/DedeCMS-V5.7-UTF8-SP2.tar.gz
dedecms后台getshell漏洞有很多,之前遇见的都是一些直接上传php文件,或者修改一下后缀(大小写),或者修改模版。这个漏洞产生的原因也是在上传功能处,不同之处是,需要上传的是一个zip文件,然后zip文件在解压过程中对文件名校验不严格,造成可以getshell
0x01 演示

  1. 首先构造一个文件名为1.jpg.php的文件,内容为<?php phpinfo();?>
  2. 将该文件进行压缩

  1. 在常用操作-文件式管理器处上传压缩文件到soft目录下


4.访问dede/album_add.php,选择从 从ZIP压缩包中解压图片

  1. 发布,预览文档

0x02 代码分析
查看album_add.php
参数dopost值为save
执行49行的else if

跟踪代码到160行,从压缩文件中获取图片

进入GetMatchFiles函数,传入的fileexp为jpg|png|gif

通过正则匹配检查文件名是否合法

漏洞产生点:

else if(preg_match("/\.(".$fileexp.")/i",$filename))
            {
                $filearr[] = $truefile;
            }

点击收藏 | 4 关注 | 1 打赏
登录 后跟帖