
Laboratorio vulnerabilità: MainWP Dashboard <= 3.1.2 XSS Memorizzato non autenticato
Laboratorio vulnerabile per CVE-2016-15041: XSS persistente non autenticata nel plugin MainWP Dashboard per WordPress <= 3.1.2.
docker compose up -d --build
Attendi circa 30 secondi per la configurazione automatica. Il laboratorio stampa un banner quando è pronto:
docker compose logs -f wordpress
| Risorsa | URL / Credenziali |
|---|---|
| WordPress | http://localhost:8088 |
| Login Admin | admin / admin123 |
| Endpoint Vulnerabile | http://localhost:8088/wp-admin/admin-post.php?page=mainwp-setup&step=purchase_extension |
Nuclei:
nuclei -t https://raw.githubusercontent.com/projectdiscovery/nuclei-templates/main/http/cves/2016/CVE-2016-15041.yaml -u http://localhost:8088
PoC manuale:
./scripts/poc.sh http://localhost:8088
docker compose down -v
| Campo | Valore |
|---|---|
| CVE | CVE-2016-15041 |
| Gravità | Alta |
| Tipo | XSS persistente (non autenticata) |
| Affetto | MainWP Dashboard <= 3.1.2 |
La procedura guidata di configurazione rapida del MainWP Dashboard è accessibile senza autenticazione. Un attaccante può iniettare JavaScript tramite il parametro mwp_setup_purchase_username. Il payload viene memorizzato nelle opzioni di WordPress e renderizzato senza escaping quando un amministratore visualizza la pagina delle Estensioni.
GET /wp-admin/admin-post.php?page=mainwp-setup&step=purchase_extension → ottiene il nonce CSRF (nessuna autenticazione richiesta)POST payload XSS con il nonce (nessuna autenticazione richiesta)Il plugin vulnerabile (v3.1.2) è stato ottenuto dalla revisione SVN di WordPress r1394563 (14 aprile 2016). Sono state applicate patch minori per la compatibilità con PHP 8 che non influiscono sulla vulnerabilità:
__autoload() deprecato con spl_autoload_register()La vulnerabilità XSS esiste in view/view-mainwp-extensions-view.php alla riga 74 dove $username viene stampato senza esc_attr().
| Risolto | 3.1.3 |