原文链接:
https://www.o2oxy.cn/3632.html
介绍:
首先呢,先了解下Konga是什么东东(有点多余,知道有漏洞就行了!),了解konga之前呢,先了解下Kong:Kong是一款基于OpenResty(Nginx + Lua模块)编写的高可用、易扩展的,由Mashape公司开源的API Gateway项目。Kong是基于NGINX和Apache Cassandra或PostgreSQL构建的,能提供易于使用的RESTful API来操作和配置API管理系统,所以它可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。
那么它的功能呢,有以下这么几点(百度抄来的):
高级路由、负载平衡、健康检查——所有这些都可以通过管理 API 或声明性配置进行配置。
使用 JWT、基本身份验证、ACL 等方法对API 进行身份验证和授权。
代理、SSL/TLS 终止以及对 L4 或 L7 流量的连接支持。
用于实施流量控制、req/res转换、日志记录、监控和包括插件开发人员中心的插件。
复杂的部署模型,如声明式无数据库部署和混合部署(控制平面/数据平面分离),没有任何供应商锁定。
本机入口控制器支持服务Kubernetes。
了解完Kong,我们再来说Konga,简易来说,其实就是图形化的用来管理Kong的一个系统。
漏洞描述:
那么上面功能介绍也说了,它调用api呢是使用jwt做的身份验证,一般没有点安全意识的去docker装个Konga谁还去专门去改下jwt的默认密钥呢!是不!
图下:通过图可看到默认key为:oursecret

那么我们再去看看他是通过那些参数去进行的jwt加密:
从图下可看到:它是通过UID 进行jwt加密返回的

漏洞复现:
那么我们就可以去漏洞利用一下了:
首先呢,访问jwt的官网:
https://jwt.io/#debugger-io
然后通过如图的方式生成一个jwt-token,从箭头处可看到一处放uid,一处放Konga的默认key

通过左边生成的token就可以以管理员身份访问后台任意接口了
我们还是找个倒霉鬼实验一番把:
首先呢我们访问的这个接口是需要身份验证的

然后的我们把刚才jwt网站生成的token加到请求头中:
可以看到,是成功获取到数据的

我们也可以试试用户管理的接口:

好了,到这里就分析结束了。这里多嘴说一句:Konga的默认密码为:3个admin,我有理由相信100个你们中,有99个字典里不会有这个密码!反正我是没有。