0x01 偶遇
有一个目标站,扫了一下旁站,用工具没有拿到几个cms的指纹。很奇怪,随手点一个,发现下面有powered by fineCMS。我记得以前也见过这个cms,是用CI框架二次编写的cms,网上搜索搜索“finecms漏洞”,找到的都是1.7.2版本以前的(seay博客里有1.7.2注射: http://www.cnseay.com/tag/finecms%E6%BC%8F%E6%B4%9E/)。但是这个网站是v2.0.12.版本比较新。
倔强的我会选择换一个旁站呢,还是继续深入?
0x02 继续深入
我们来到finecms的官网:http://www.dayrui.com/
发现论坛里有这么一个公告,一个补丁。发表日期是12.8,再结合这个“头像上传”,我似乎想到了什么。
于是我把补丁下下来,并在网上找了一个没打补丁的v2.1.0源码。
补丁包里就两个文件,function_helper.php和Account.php。我们来把这两个文件和补丁之前的文件进行比较看看。
多了一个删除目录下所有文件的函数:
判断文件名并删除多余目录。之前的代码之所以有问题就是因为它没有递归删除用户上传的压缩包内的文件夹内的内容
这不就是phpcms那个头像上传getshell吗,原来fineCMS中头像上传的地方使用的是phpcms的源码。而且这个开发者也很负责,在phpcms出事以后很快就发布了自己的补丁。
所以,我们就可以利用头像上传的getshell方法秒拿fineCMSv2.1.0以前版本的shell。
0x03 老办法拿shell(这部分不理解的话参考phpcms那个漏洞)
注册会员,来到上传头像处,选择一个正常图片点保存:
burpsuite抓包改包:
shell上传成功执行:
OP>