Konga 任意用户登录 分析

渗透技巧 2年前 (2022) admin
1,055 2 0

首先是Docker 启动Konga

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

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

Konga 任意用户登录 分析

 

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

Konga 任意用户登录 分析

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

首先找到

Konga 任意用户登录 分析

然后进入到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 中

Konga 任意用户登录 分析

然后如果是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

参考:

漏洞百出知识星球

原文始发于print(“”):Konga 任意用户登录 分析

版权声明:admin 发表于 2022年10月3日 上午11:36。
转载请注明:Konga 任意用户登录 分析 | CTF导航

相关文章

2 条评论

您必须登录才能参与评论!
立即登录
  • 请教
    请教 游客

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

    然后如果是docker启动的。直接复制粘贴过来的那么他的key 为{{somerandomstring}},这是什么意思?复制过来的到底是啥?
    docker run -p 1337:1337 –name konga -e “TOKEN_SECRET={{somerandomstring}}” pantsel/konga
    这里为啥jwt又变了?

    • admin

      仔细阅读下代码,这块意思启动docker不给参数TOKEN_SECRET,就是默认的key,如果给了,你的jwt就改成那个key生成的jwt。