朋友的公司想购买kingcms的授权,让我帮忙看下。发现kingcms很长一段时间没更新了,憋了一段时间放出了最新版的k9,官网下下来学习一下。
在wooyun上看到了几个漏洞,如: WooYun: kingcms最新版sql注入漏洞
来看看这次shell是如何发生的吧,此漏洞一共涉及到两个大的问题,一个是越权修改后台配置,另一个是文件上传导致GetShell
0x00:先来看第一个问题
问题文件在/user/manage.php
上面代码中的“注释1”处,把用户提交的filetype写入了数据库,如果用户提交的filetype为php的话,那就可以上传php文件了。过程如图
0x01:再来看看文件是怎么上传的
整个上传的过程简单来说是这样实现的:
1:获取允许上传的文件类型
2:获取上传文件的类型
3:判断文件是否允许上传(因为修改了配置,所以这里php文件是可以上传的)
4:上传后文件的路径
5:上传后文件的名字
然后分析第4、5步,可以得到文件上传的路径是以当前时间定义的,比如今天是2015-03-16,上传后文件的路径是/upfiles/15/03/16,文件是名字也是根据gmdate()获得格林威治时间,然后再加四位随机数,当然文件上传后可以通过文件属性获得其路径,也可以遍历这4个随机数(毕竟样本太少了,秒遍历啊)。
上传个php文件看看,内容为
注意,URL中的一个参数SIGN是这样计算出来的
上传成功后就可以为所欲为了,大马、菜刀…,这里测试一下吧