朋友的公司想购买kingcms的授权,让我帮忙看下。发现kingcms很长一段时间没更新了,憋了一段时间放出了最新版的k9,官网下下来学习一下。
在wooyun上看到了几个漏洞,如: WooYun: kingcms最新版sql注入漏洞
这里越权涉及到两个方面。
0x00:先来看看如果查看所有会员信息。
问题文件在/api/conn.php
首先要绕过上面代码中的权限判断,其实就是计算出$sign1,然后使$_GET[‘SIGN’]与之相等即可。来看看$sign1是如何计算出来的
参与计算的参数只有kc_config('system.salt')不是用户输入的,但是kingcms的这个参数是空,此因所有参与计算的参数都是用户输入的,按上面的算法简单计算一下就知道$sign1了,然后输入的$_GET[‘SIGN’]等于$sign1即可绕过权限判断。
然后就执行了数据库查询并把查到的用户信息显示了出来。
Paload(GET提交):
上面的参数是经过base64编码的,如上面的参数data的value解码以后是SELECT * FROM king_user WHERE userid=10004,通过构造sql语句(修改userid的值,遍历即可),base64编码以后提交,就可以查询所有会员的信息了。如下图
0x01:下面看看如何修改所有会员的各种信息。
/user/manage.php
当userid不为空时,就会用提交的内容把该userid对应的用户信息修改,而userid是用户直接提交的。
Payload(get提交):
其中userid是你要修改的用户的id,可以遍历,参数SIGN是这样计算出来的
过程见下图