今天突然看到一个DedeCMS V5.7 SP2前台文件上传漏洞(CVE-2018-20129)
http://www.iwantacve.cn/index.php/archives/88/
原文没有代码分析,于是自己复现一下看看
安装完成后首先在后台打开会员功能
然后访问http://localhost/member/article_add.php
在编辑器中选择文件上传
将filename改为1.jpg.ph*h
虽然没有文件名回显,但是文件的确传上去了..
从触发页面select_images_post.php分析代码可以发现
上传的文件是先在/include/uploadsafe.inc.php有一层黑名单过滤
但是之后在/include/dialog/select_images_post.php
可以看到这里在处理时去掉了以下字符\r\n\t\*\%\\\/\?><\|\":
所以上面的1.jpg.ph*h中*被替换掉了后面又拼接成了php
文件名前面的.jpg是为了满足38行if(!preg_match("#\.(".$cfg_imgtype.")#i", $imgfile_name))
这个判断
最终上传的文件可以在/uploads/allimg/181213/找
同理,其他一些上传的地方也可能存在一样的问题
比如1
2/include/select_soft_post.php
/include/select_templets_post.php
补充: 后面看到了几个师傅的复现文章才发现这里实际上是需要后台登陆的