
Labo de vulnérabilité : MainWP Dashboard <= 3.1.2 XSS stocké non authentifié
Lab vulnérable pour CVE-2016-15041 : XSS stocké sans authentification dans le plugin WordPress MainWP Dashboard <= 3.1.2.
docker compose up -d --build
Attendez ~30 secondes pour la configuration automatique. Le lab affiche une bannière lorsqu'il est prêt :
docker compose logs -f wordpress
| Ressource | URL / Identifiants |
|---|
| WordPress | http://localhost:8088 |
| Connexion admin | admin / admin123 |
| Point d'accès vulnérable | 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 manuel :
./scripts/poc.sh http://localhost:8088
docker compose down -v
| Champ | Valeur |
|---|---|
| CVE | CVE-2016-15041 |
| Sévérité | Élevée |
| Type | XSS stocké (sans authentification) |
| Versions affectées | MainWP Dashboard <= 3.1.2 |
| Version corrigée | 3.1.3 |
L'assistant de configuration rapide de MainWP Dashboard est accessible sans authentification. Un attaquant peut injecter du JavaScript via le paramètre mwp_setup_purchase_username. La charge utile est stockée dans les options de WordPress et rendue sans échappement lorsqu'un administrateur consulte la page Extensions.
GET /wp-admin/admin-post.php?page=mainwp-setup&step=purchase_extension → obtenir le nonce CSRF (aucune authentification requise)POST avec le nonce (aucune authentification requise)Le plugin vulnérable (v3.1.2) a été obtenu à partir de la révision r1394563 du SVN de WordPress (14 avril 2016). De légers correctifs de compatibilité PHP 8 ont été appliqués sans affecter la vulnérabilité :
__autoload() par spl_autoload_register()La vulnérabilité XSS se trouve dans view/view-mainwp-extensions-view.php à la ligne 74, où $username est affiché sans esc_attr().