Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-27541-Analysis-Lab — # Docker lab per riprodurre CVE-2026-27541, un'escalation di privilegi autenticata in WooCommerce Wholesale Prices. Confronta le build vulnerabili e quelle patchate, include script PoC e analisi della causa principale. | Kitploit
Strumenti/GitHubGitHub/rootdirective-sec/cve-2026-27541-analysis-lab
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingApprendimento e FormazioneLab e Pratica
GitHub
rootdirective-sec/cve-2026-27541-analysis-lab

CVE-2026-27541-Analysis-Lab

# Docker lab per riprodurre CVE-2026-27541, un'escalation di privilegi autenticata in WooCommerce Wholesale Prices. Confronta le build vulnerabili e quelle patchate, include script PoC e analisi della causa principale.

Vedi Repository
196 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-27541 — Laboratorio di Escalation dei Privilegi Autenticata in WooCommerce Wholesale Prices

vulnx

Panoramica

Questo progetto è un laboratorio Docker locale per analizzare e riprodurre il comportamento di CVE-2026-27541 nel plugin WooCommerce Wholesale Prices / Wholesale Suite, confrontando le build vulnerabile e corretta fianco a fianco sulla stessa macchina.

Il problema principale è un Controllo degli Accessi Non Corretto (Broken Access Control) nel seguente endpoint REST API:

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

In base al codice sorgente utilizzato in questo laboratorio, quella rotta ha già un permission_callback sia nella build vulnerabile che in quella corretta. Tuttavia, la versione interessata utilizza un controllo delle capacità troppo ampio per un'azione di scrittura delle impostazioni admin:

  • vulnerabile (2.2.6) → current_user_can( 'manage_woocommerce' )
  • corretta (2.2.7) → current_user_can( 'manage_options' )

In questo laboratorio, l'utente shopmgr, che ha il ruolo shop_manager, ha manage_woocommerce=true ma non manage_options. Di conseguenza, questo utente con privilegi bassi può utilizzare una sessione valida di accesso più un X-WP-Nonce valido per invocare l'endpoint di salvataggio delle impostazioni admin sulla build vulnerabile, mentre la build corretta restituisce 403 rest_forbidden per la stessa richiesta.


Cosa dimostra questo laboratorio

  • Nodo vulnerabile (2.2.6): l'utente shopmgr può chiamare con successo POST /wp-json/wwp/v1/admin/save e modificare le impostazioni del plugin.
  • Nodo corretto (2.2.7): la stessa richiesta da shopmgr viene respinta con 403.
  • Richiesta senza autenticazione: se l'endpoint viene chiamato direttamente senza autenticazione, entrambe le build restituiscono 403, il che è coerente con un problema di escalation dei privilegi post-autenticazione.
  • Prova di persistenza: dopo un'esecuzione riuscita del PoC, la build vulnerabile memorizza l'opzione WordPress wwp_see_wholesale_prices_replacement_text=PWNED_BY_POC, mentre la build corretta restituisce ancora See wholesale prices.

Topologia del Laboratorio

Servizi

  • vuln → WordPress + WooCommerce + WooCommerce Wholesale Prices 2.2.6
  • patched → WordPress + WooCommerce + WooCommerce Wholesale Prices 2.2.7
  • db-vuln / db-patched → database MariaDB separati
  • seed-vuln / seed-patched → job di seeding wp-cli che installano WordPress, installano il plugin, creano utenti e creano un prodotto per i test

Porte pubblicate

  • http://localhost:8081 → vulnerabile
  • http://localhost:8082 → corretta

Immagini base

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

Struttura del Repository

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

File importanti

  • docker-compose.yml — definisce gli stack vulnerabile e corretto con database separati
  • scripts/seed-wp.sh — installa WordPress, WooCommerce, il plugin target e crea utenti di test e dati di prodotto
  • poc.py — PoC a impatto minimo per login, estrazione nonce e invocazione dell'endpoint REST

Ambiente Preparato (Seeded)

Una volta che lo stack è pronto, lo script di seeding crea quanto segue:

Utenti

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

Prodotto

  • slug: lab-product
  • prezzo normale: 100
  • prezzo all'ingrosso: 50

Versioni

  • WooCommerce: 10.6.0

  • WooCommerce Wholesale Prices:

    • vulnerabile: 2.2.6
    • corretta: 2.2.7

Lo script scrive anche lab-secrets.json in ogni container WordPress in modo che i dati preparati e le informazioni sulla versione possano essere verificati.


Perché il PoC è a impatto minimo

Questo PoC non tenta di prendere il controllo del sito, cambiare ruoli, installare plugin o eseguire una shell.

Fa solo quanto segue:

  1. effettua il login come shopmgr
  2. visita la pagina admin pertinente per estrarre wpApiSettings.nonce
  3. invia una richiesta all'endpoint target
  4. modifica un valore di impostazione facilmente osservabile:
wwp_see_wholesale_prices_replacement_text = PWNED_BY_POC

Questa impostazione viene utilizzata come marcatore osservabile per dimostrare che un utente con privilegi bassi può modificare una configurazione riservata agli admin.


Riepilogo della Vulnerabilità

Componente interessato

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

Classe di vulnerabilità

  • Controllo degli Accessi Non Corretto (Broken Access Control)
  • Escalation dei Privilegi Autenticata

Significato pratico

Sebbene l'endpoint richieda una sessione valida e un nonce, la versione vulnerabile consente comunque a un utente con privilegi bassi come shopmgr con il ruolo shop_manager di invocare un endpoint che dovrebbe essere riservato agli admin.

Sfumatura importante

Questa non è una vulnerabilità non autenticata.

Se l'endpoint viene chiamato direttamente senza una sessione di accesso, sia la build vulnerabile che quella corretta respingono la richiesta. Il bug risiede nell'autorizzazione dopo l'autenticazione, non nell'autenticazione stessa.


Analisi della Causa Radice

La versione vulnerabile non manca di un permission_callback. Il difetto è che utilizza un controllo delle capacità troppo ampio (manage_woocommerce) per un'azione REST che scrive impostazioni lato admin.

Dal codice sorgente in includes/class-wwp-admin-settings.php:

  • sia la build vulnerabile che quella corretta registrano la stessa rotta: POST /wp-json/wwp/v1/admin/save
  • entrambe le build la instradano a save_registered_settings()
  • entrambe le build utilizzano permission_admin_check() come permission_callback
  • la vera differenza è la capacità che viene controllata

Vulnerabile (2.2.6)

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

Corretta (2.2.7)

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

In questo laboratorio, l'utente shopmgr, che ha il ruolo shop_manager, ha manage_woocommerce=true ma non manage_options, quindi supera il controllo vulnerabile ma fallisce quello corretto.

Cosa è cambiato nel comportamento corretto

La versione corretta fa più che cambiare la risposta da 200 a 403. Modifica la logica di controllo degli accessi restringendo il requisito di capacità da manage_woocommerce a manage_options.

Inoltre, il percorso di salvataggio nella build corretta è ulteriormente rafforzato passando dal filtraggio basato su prefissi a liste bianche esplicite e a una sanificazione più forte.

Perché il PoC riesce sulla versione vulnerabile

Il PoC segue lo stesso flusso di un contesto browser reale:

  • effettua il login come shopmgr
  • apre la pagina delle impostazioni del plugin
  • estrae wpApiSettings.nonce
  • chiama POST /wp-json/wwp/v1/admin/save

Poiché la build vulnerabile consente agli utenti con manage_woocommerce di invocare questa azione di scrittura delle impostazioni, la richiesta riesce e comporta una modifica persistente dell'opzione.

Lezione di sicurezza

Un nonce aiuta a proteggere contro il CSRF, ma non è un controllo di autorizzazione.

Scarica lo strumento