这个不是0day,我手里也没0day,算是一个漏洞的二次审计,一篇随便写写的记录文,还请各位大牛多多交流。
0x01 偶遇 {#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 继续深入 {#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那个漏洞) {#0x03-shellphpcms}
注册会员,来到上传头像处,选择一个正常图片点保存:
burpsuite抓包改包:
shell成功上传运行:
所以这里给大家一个思路,如果网上找不到现有版本的漏洞,可以去官网看一下补丁包,自己二次审计一下代码,也许有意想不到的收获。
百度一下powered by fineCMS,也是有很多的,你们懂得!!
0x04 后话 {#0x04}
系统是linux,菜刀连接可以执行命令,用户组是www,内核版本是2.6.32
作为一个写代码的,提权什么的其实我不太清楚也不太精通。但因为可以执行命令而且是www用户(不是虚拟主机)所以可以直接往目标写shell(找个目标的有写权限的目录就行了),目标就算拿下了。
提权算是后话,Linux提权基本上就是靠内核漏洞了。先反弹一个shell到本地(用nc什么的),然后在它服务器上编译好提权exp,运行就可以获得一个root权限的shell了。
这里给大家推荐一个工具:Linux_Exploit_Suggester,地址 https://github.com/PenturaLabs/Linux_Exploit_Suggester
只要输入内核版本,它就帮你咨询出来能使用的exp:
附件里我会提供未修复漏洞的fineCMS,和漏洞补丁,给各位想学习php和代码审计的同学使用。