首先,在phpcms之前的那个上传洞出来的时候,我就注意到finecms升级了一个补丁包。打开一看就是补的类似phpcms的洞,于是我知道finecms在上传头像处用的与phpcms是类似的代码。
然后phpcms后来又出了一个暴力上传的缺陷( WooYun: PHPCMS前台设计缺陷导致任意代码执行 ),我猜finecms没有补,一来看果然是这样。
先来介绍一下吧,与phpcms类似,finecms对上传头像是这样处理的:
用户上传压缩包 => php解压 => 递归删除非.jpg的文件
具体代码如下(/member/controllers/Account.php 第416行):
那么如果我上传包含这样代码的压缩包:
在上传与被删除这个时间差里访问,就能在网站根目录下生成新的php文件,那么新生成的php文件是不会被删除的。
这就是一个竞争性上传漏洞,需要我们抓住这个时间差,在上传的php文件还没被删除前访问到它,就能够暴力getshell了。
利用方法与代码详见漏洞证明。
准备一个如下php文件:
保存为1.php,放在目录1下,将目录1打包为1.zip:

然后登陆finecms,记下cookie。
如下代码,你测试的时候根据自己的情况做些修改,我就不多说了,我也是直接拿felixk3y的代码修改得到的:
运行时第一个参数是目标url,第二个参数是你的cookie:

因为我是在本地测试的,所以很快就拿下shell了(我把生成的文件放在网站根目录下,这个可以根据自己情况修改py脚本):

访问可见phpinfo:

这个跟网速也有很大关系,如果你没能及时在你上传的文件被删除前访问之,就没法生成shell了。所以有可能要测试很多次都不成功,称之为暴力getshell也不为过,拼人品了~