
脆弱性ラボ: MainWP Dashboard <= 3.1.2 認証不要の保存型XSS
| リソース | URL / 認証情報 |
|---|
| WordPress | http://localhost:8088 |
| 管理者ログイン | admin / admin123 |
| 脆弱性エンドポイント | 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:
./scripts/poc.sh http://localhost:8088
docker compose down -v
| フィールド | 値 |
|---|---|
| CVE | CVE-2016-15041 |
| 重要度 | 高 |
| タイプ | 保存型XSS(認証不要) |
| 影響を受けるバージョン | MainWP Dashboard <= 3.1.2 |
| 修正バージョン | 3.1.3 |
MainWP Dashboardのクイックセットアップウィザードは認証なしでアクセスできます。攻撃者はmwp_setup_purchase_usernameパラメータを介してJavaScriptを注入できます。ペイロードはWordPressのオプションに保存され、管理者が拡張機能ページを表示する際にエスケープされずにレンダリングされます。
GET /wp-admin/admin-post.php?page=mainwp-setup&step=purchase_extension → CSRF nonceを取得(認証不要)POST:nonceを使用してXSSペイロードを送信(認証不要)脆弱性のあるプラグイン(v3.1.2)は、WordPress SVNリビジョンr1394563(2016年4月14日)から取得しました。脆弱性に影響を与えない軽微なPHP 8互換性パッチが適用されています:
__autoload()をspl_autoload_register()に置き換えXSS脆弱性はview/view-mainwp-extensions-view.phpの74行目に存在し、$usernameがesc_attr()なしで出力されています。