以下内容来源自:微信公众号SKR安全。 感谢SKR安全对点可云的支持与信赖,在SKR安全向点可云反映问题后,点可云团队已经第一时间修复该BUG
此次BUG仅限于点可云开源V6版本,目前已经修复并发布于GIT https://gitee.com/yimiaoOpen/nodcloud
请正在使用该版本的用户 升级!!!
开审!!!!以下内容仅供学习,请勿用作非法用途
所有控制器都继承自 app\index\controller\Acl

两种鉴权方式,一种是checklogin函数中,对cookie进行校验,另一种方式是类似授权码的鉴权。
1.1 checklogin分析
从cookie中拿到Nod_User_Id参数和Nod_User_Token,然后在数据库中查询是否存在这条记录,如果存在,就判定鉴权成功

这里看看登录验证方式和Nod_User_Token是如何产生的。

Nod_User_Token的生成方式是随机的,没有规律可寻,不能伪造。在这里将token等数据插入到了数据库中。
这里有一个点,等会要用到。用户在点注销登录之后,只是将cookie进行了删除,并没有将数据库中的这条数据删除,这种方式其实是有点危险的。

1.2 api_key方式
这里apitime是时间戳,apikey是密钥

主要是用apikey和get_plug_key生成的结果进行比较,如果相等,就鉴权成功
下面对get_plug_key函数进行分析

主要还是api_key,api_key是在安装时,获取当时时间戳后md5截取得到的。

这里其实也可以对api_key进行爆破,但是爆破量非常大,没有意义。
这里看似不能利用了,其实还是有突破点的。
2. 柳暗花明又一村
tinkphp日志中对sql语句的查询进行了记录,里面记录了token和登录密码等内容,如果拿到,那么就可以进入后台了。
点进去一搜,结果真有。

因为对在注销后对token并没有进行销毁,只要找到最近一次插入token的语句,就可以加入cookie,从而进入后台了。
声明与免责说明
- 1. 本站部分图片来源于 Unsplash,版权归原作者所有。
- 2. 本站文章、开源代码及免费下载资源仅供个人学习、研究或非商业用途参考,禁止用于商业盈利,版权归原作者所有。
- 3. 内容(含图片、文章、代码)部分转载自网络,若存在侵权,请联系 meng@yimiaonet.com 处理。
- 4. 未经本站书面许可,不得复制、盗用、采集、传播本站内容至任何平台。
- 5. 本站内容不构成专业建议,“OKMG”为注册商标,官方网站:www.okmg.cn,本站保留修改本声明的权利。

