朋友的公司想购买kingcms的授权,让我帮忙看下。发现kingcms很长一段时间没更新了,憋了一段时间放出了最新版的k9(2014-12-13更新),官网下下来学习一下。
在wooyun上看到了几个漏洞,如: WooYun: kingcms最新版sql注入漏洞
只需要普通用户就可以完成getshell
问题出在这里:/apps/block/manage.php
这里有个权限验证$u->auth_role('block_edit'); ,我们去看看
看上面代码“注释1”处,如果用户没有相应的权限就返回false,但是在上面的第一段代码中,并没有判断是不是返回false啊,也没有exit(),也就是说返回true和返回false是一样的,没有判断,程序继续向下执行啊。注册的会员都可以操作这里。
再看第一段代码的注释2处,直接把$_POST['notes']的内容进行了拼接,然后调用了$file->put(),跟进
仅对文件的名字调用了自定义的encode方法处理,对于写入文章的内容没有处理,这里是这样拼接的
因此,$_POST['notes']的内容应该为:/?><?php eval($_POST["p"]);/,然后URL编码即可。
Payload:get提交,普通权限的用户即可操作
提交过程如下图
测试之