朋友的公司想购买kingcms的授权,让我帮忙看下。发现kingcms很长一段时间没更新了,憋了一段时间放出了最新版的k9(2014-12-13更新),官网下下来学习一下。
在wooyun上看到了几个漏洞,如: WooYun: kingcms最新版sql注入漏洞
问题出在这里:/api/conn.php
先首需要说明的是,这里的目录遍历与文件读取并不是因为服务器配置不当等引起的,而是该cms的某些函数没过过滤+使用不当引起的。
0x00:先来看看如何目录遍历的。
先来看看怎么绕过上面代码中的权限验证,也即要使得$sign1与$sign相等,其中$sing是用户输入的,$sign1的计算方法如下:
计算过程中所用到的参数只有kc_config('system.salt')不是用户输入的,但是在kingcms中,这个参数全都是空的,也就是说$sing1完全由用户的输入参数按上述算法计算得来,因此,这里可以轻松绕过。然后执行到这句$arr[$key]=$file->getDir($path,$filetype);
跟进
直接把目录列出来了。路径是从根文件开始的,这里输入路径时,要base64 encode一下。成功列目录,如图
0x01:再来看看如何实现任意文件读取的。
代码与上面第一段相同,这里就不贴出来了。看到这句$arr[$key]=$file->get($val);
跟进
直接把文件读出并返回了,路径是从根文件开始的,这里输入文件名及路径时,要base64 encode一下。文件成功读取,如图