wavewindsor

导航

Nacos未授权访问

靶机地址: 192.168.142.112

知识点

Jwt(json web token): 定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任。

当用户通过服务端的校验之后,服务端会根据用户的用户名和密码去查用户的信息,例如:用户id、用户手机号等,再通过jwt的方式生成一个token,token中包含用户的信息,下次用户的所有请求都会带着token到达服务端,服务端从token里解析出来用户的信息,基于这些信息,认证用户成功登录后再执行之后的业务。

Jwt由Header头部、Payload负载、Signature签名组成,它们之间用圆点(.)连接。

使用https://jwt.io/可以对jwt信息进行解码

Nacos访问认证绕过:

cat nacos/conf/application.properties|grep “key”在application.properties文件中查找key

该key值固定,在nacos使用jwt构造认证token,使用HS256算法,把配置文件中nacos.core.auth.plugin.nacos.token.secret.key的默认值当作私钥生成Signature,将用户名和时间戳写到jwt token里,所以可以在登录时对accessToken进行伪造,从而实现访问认证绕过

复现

搭建好本地靶场,访问http://192.168.142.112:8848/nacos/#/login登录界面(8848为nacos服务默认端口)

使用用户名nacos、密码nacos进行登录,使用burp获取数据包,成功登录后会返回Authorization,accessToken作为用户登录凭证

复制保存Authorization:Bearer

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY5NDYxNzAzNX0.g8rgWYSiZgwhMgfyLHqLl4EUdipye9hAwHrWocJqsjA

退出nacos登录,使用任意账户密码试图登录,抓包修改数据

在数据包加上Authorization后,点击转发,成功登录,且为超级管理员权限

修复方式

修改配置文件中的nacos.core.auth.plugin.nacos.token.secret.key默认值

升级nacos到最新版

posted on 2023-09-13 20:26  Wav3W1nd50r  阅读(760)  评论(0编辑  收藏  举报