Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-27541-Analysis-Lab — # Docker-Lab zur Reproduktion von CVE-2026-27541, einer authentifizierten Privilegieneskalation in WooCommerce Wholesale Prices. Vergleicht verwundbare und gepatchte Builds, enthält PoC-Skript und Root-Cause-Analyse. | Kitploit
Tools/GitHubGitHub/rootdirective-sec/cve-2026-27541-analysis-lab
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsLernen & BildungLabs & Praxis
GitHubrootdirective-sec/cve-2026-27541-analysis-lab

CVE-2026-27541-Analysis-Lab

# Docker-Lab zur Reproduktion von CVE-2026-27541, einer authentifizierten Privilegieneskalation in WooCommerce Wholesale Prices. Vergleicht verwundbare und gepatchte Builds, enthält PoC-Skript und Root-Cause-Analyse.

Repository anzeigen
19vor 6 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-2026-27541 — WooCommerce Wholesale Prices Authentifizierte Privilegienausweitung Labor

vulnx

Überblick

Dieses Projekt ist ein lokales Docker-Labor zur Analyse und Reproduktion des Verhaltens von CVE-2026-27541 im WooCommerce Wholesale Prices / Wholesale Suite-Plugin, indem verwundbare und gepatchte Builds Seite an Seite auf derselben Maschine verglichen werden.

Das Kernproblem ist Broken Access Control im folgenden REST-API-Endpunkt:

/wp-json/wwp/v1/admin/save

Basierend auf dem in diesem Labor verwendeten Quellcode verfügt diese Route in beiden Builds (verwundbar und gepatcht) bereits über einen permission_callback. Die betroffene Version verwendet jedoch eine zu weit gefasste Fähigkeitsprüfung für eine Admin-Einstellungs-Schreibaktion:

  • verwundbar (2.2.6) → current_user_can( 'manage_woocommerce' )
  • gepatcht (2.2.7) → current_user_can( 'manage_options' )

In diesem Labor hat der Benutzer shopmgr, der die Rolle shop_manager besitzt, manage_woocommerce=true, aber nicht manage_options. Dadurch kann dieser Benutzer mit geringen Rechten eine gültige angemeldete Sitzung sowie ein gültiges X-WP-Nonce verwenden, um den Admin-Einstellungs-Speicher-Endpunkt im verwundbaren Build aufzurufen, während der gepatchte Build für dieselbe Anfrage 403 rest_forbidden zurückgibt.


Was dieses Labor beweist

  • Verwundbarer Knoten (2.2.6): Der Benutzer shopmgr kann erfolgreich POST /wp-json/wwp/v1/admin/save aufrufen und Plugin-Einstellungen ändern.
  • Gepatchter Knoten (2.2.7): Dieselbe Anfrage von shopmgr wird mit 403 abgelehnt.
  • Nicht authentifizierte Anfrage: Wenn der Endpunkt direkt ohne Authentifizierung aufgerufen wird, geben beide Builds 403 zurück, was konsistent mit einem Post-Authentifizierungs-Privilegienausweitungsproblem ist.
  • Persistenznachweis: Nach einem erfolgreichen PoC-Lauf speichert der verwundbare Build die WordPress-Option wwp_see_wholesale_prices_replacement_text=PWNED_BY_POC, während der gepatchte Build weiterhin See wholesale prices zurückgibt.

Labor-Topologie

Dienste

  • vuln → WordPress + WooCommerce + WooCommerce Wholesale Prices 2.2.6
  • patched → WordPress + WooCommerce + WooCommerce Wholesale Prices 2.2.7
  • db-vuln / db-patched → separate MariaDB-Datenbanken
  • seed-vuln / seed-patched → wp-cli-Seed-Jobs, die WordPress installieren, das Plugin installieren, Benutzer erstellen und ein Produkt für Tests erstellen

Veröffentlichte Ports

  • http://localhost:8081 → verwundbar
  • http://localhost:8082 → gepatcht

Basis-Images

  • WordPress: wordpress:6.8.1-php8.2-apache
  • MariaDB: mariadb:11.4.5
  • Seeder: wordpress:cli-php8.2

Repository-Struktur

.
├── docker-compose.yml
├── README.md
├── patched/
│   └── Dockerfile
├── vuln/
│   └── Dockerfile
├── scripts/
│   └── seed-wp.sh
└── poc.py

Wichtige Dateien

  • docker-compose.yml — definiert die verwundbaren und gepatchten Stacks mit separaten Datenbanken
  • scripts/seed-wp.sh — installiert WordPress, WooCommerce, das Ziel-Plugin und erstellt Testbenutzer und Produktdaten
  • poc.py — PoC mit minimalem Schadenspotenzial für Login, Nonce-Extraktion und REST-Endpunkt-Aufruf

Seed-Umgebung

Sobald der Stack bereit ist, erstellt das Seed-Skript Folgendes:

Benutzer

  • admin / AdminPass!234
  • shopmgr / ShopMgrPass!234

Produkt

  • Slug: lab-product
  • Regulärer Preis: 100
  • Großhandelspreis: 50

Versionen

  • WooCommerce: 10.6.0

  • WooCommerce Wholesale Prices:

    • verwundbar: 2.2.6
    • gepatcht: 2.2.7

Das Skript schreibt außerdem lab-secrets.json in jeden WordPress-Container, damit die Seed-Daten und Versionsinformationen überprüft werden können.


Warum der PoC minimalen Schaden anrichtet

Dieser PoC versucht nicht, die Website zu übernehmen, Rollen zu ändern, Plugins zu installieren oder eine Shell auszuführen.

Er führt nur Folgendes aus:

  1. meldet sich als shopmgr an
  2. besucht die relevante Admin-Seite, um wpApiSettings.nonce zu extrahieren
  3. sendet eine Anfrage an den Ziel-Endpunkt
  4. ändert einen leicht beobachtbaren Einstellungswert:
wwp_see_wholesale_prices_replacement_text = PWNED_BY_POC

Diese Einstellung wird als beobachtbarer Marker verwendet, um zu demonstrieren, dass ein Benutzer mit geringen Rechten eine nur für Administratoren bestimmte Konfiguration ändern kann.


Schwachstellen-Zusammenfassung

Betroffene Komponente

  • Plugin: WooCommerce Wholesale Prices / Wholesale Suite
  • Route: POST /wp-json/wwp/v1/admin/save

Schwachstellenklasse

  • Broken Access Control
  • Authentifizierte Privilegienausweitung

Praktische Bedeutung

Obwohl der Endpunkt eine gültige Sitzung und ein Nonce erfordert, erlaubt die verwundbare Version dennoch einem Benutzer mit geringen Rechten wie shopmgr mit der Rolle shop_manager, einen Endpunkt aufzurufen, der nur für Administratoren gedacht sein sollte.

Wichtige Nuance

Dies ist keine nicht authentifizierte Schwachstelle.

Wenn der Endpunkt direkt ohne angemeldete Sitzung aufgerufen wird, lehnen sowohl der verwundbare als auch der gepatchte Build die Anfrage ab. Der Fehler liegt in der Autorisierung nach der Authentifizierung, nicht in der Authentifizierung selbst.


Root-Cause-Analyse

Der verwundbaren Version fehlt kein permission_callback. Der Fehler besteht darin, dass sie eine zu weit gefasste Fähigkeitsprüfung (manage_woocommerce) für eine REST-Aktion verwendet, die Admin-seitige Einstellungen schreibt.

Aus dem Quellcode in includes/class-wwp-admin-settings.php:

  • sowohl der verwundbare als auch der gepatchte Build registrieren dieselbe Route: POST /wp-json/wwp/v1/admin/save
  • beide Builds leiten sie an save_registered_settings() weiter
  • beide Builds verwenden permission_admin_check() als permission_callback
  • der eigentliche Unterschied ist die geprüfte Fähigkeit

Verwundbar (2.2.6)

if ( ! current_user_can( 'manage_woocommerce' ) ) {
    return new WP_Error( 'rest_forbidden', ... );
}

Gepatcht (2.2.7)

if ( ! current_user_can( 'manage_options' ) ) {
    return new WP_Error( 'rest_forbidden', ... );
}

In diesem Labor hat der Benutzer shopmgr, der die Rolle shop_manager besitzt, manage_woocommerce=true, aber nicht manage_options, sodass er die verwundbare Prüfung besteht, aber die gepatchte nicht.

Was sich im gepatchten Verhalten geändert hat

Die gepatchte Version tut mehr, als nur die Antwort von 200 auf 403 zu ändern. Sie ändert die Zugriffskontrolllogik, indem sie die Fähigkeitsanforderung von manage_woocommerce auf manage_options verschärft.

Darüber hinaus ist der Speicherpfad im gepatchten Build weiter gehärtet, indem von präfixbasierter Filterung auf explizite Whitelists und stärkere Sanitisierung umgestellt wird.

Warum der PoC auf der verwundbaren Version erfolgreich ist

Der PoC folgt demselben Ablauf wie ein realer Browser-Kontext:

  • als shopmgr anmelden
  • die Plugin-Einstellungsseite öffnen
  • wpApiSettings.nonce extrahieren
  • POST /wp-json/wwp/v1/admin/save aufrufen

Da der verwundbare Build Benutzern mit manage_woocommerce erlaubt, diese Einstellungs-Schreibaktion aufzurufen, ist die Anfrage erfolgreich und führt zu einer persistenten Optionsänderung.

Sicherheitslektion

Ein nonce hilft gegen CSRF, ist aber keine Autorisierungskontrolle.

Eine gültige Sitzung und ein gültiges Nonce zu haben, bedeutet nicht, dass ein Benutzer eine Admin-Aktion ausführen darf. Die Verwendung einer zu weit gefassten Fähigkeit auf einem privilegierten Endpunkt reicht aus, um eine Autorisierungsumgehung mit geringen Rechten zu erzeugen.


Tool herunterladen