dedecms v5.7织梦漏洞修复 后台 getshell

  • A+

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. 将该文件进行压缩

dedecms v5.7织梦漏洞修复 后台 getshell

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

dedecms v5.7织梦漏洞修复 后台 getshell

dedecms v5.7织梦漏洞修复 后台 getshell
4.访问dede/album_add.php,选择从 从ZIP压缩包中解压图片
dedecms v5.7织梦漏洞修复 后台 getshell

  1. 发布,预览文档
    dedecms v5.7织梦漏洞修复 后台 getshell

dedecms v5.7织梦漏洞修复 后台 getshell

dedecms v5.7织梦漏洞修复 后台 getshell

dedecms v5.7织梦漏洞修复 后台 getshell

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

dedecms v5.7织梦漏洞修复 后台 getshell

dedecms v5.7织梦漏洞修复 后台 getshell

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

dedecms v5.7织梦漏洞修复 后台 getshell

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

dedecms v5.7织梦漏洞修复 后台 getshell

dedecms v5.7织梦漏洞修复 后台 getshell

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

dedecms v5.7织梦漏洞修复 后台 getshell

dedecms v5.7织梦漏洞修复 后台 getshell

漏洞产生点:

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

  • 微信客服
  • 联系免费答疑
  • weinxin
  • QQ客服
  • 联系免费答疑
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: