## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-DOTTAK-CVE-2025-30921
# CVE-2025-30921
## 1️⃣ コンポーネント種別
WordPress プラグイン
## 2️⃣ コンポーネント詳細
`コンポーネント名` Newsletters
`影響を受けるバージョン` <= 4.9.9.7
`コンポーネントスラッグ` newsletters-lite
`コンポーネントリンク` https://wordpress.org/plugins/newsletters-lite/
## 3️⃣ OWASP 2017: TOP 10
`脆弱性クラス` A3: インジェクション
`脆弱性種別` SQLインジェクション
## 4️⃣ 前提条件
管理者
## 5️⃣ **脆弱性の詳細**
### 👉 **概要**
Newsletters プラグイン バージョン 4.9.9.7 以下のダッシュボード(`/wp-admin/admin.php?page=newsletters`)で統計概要グラフを表示する際に、URL パラメータの入力検証とエスケープ処理が不十分なために SQL インジェクション脆弱性が発生します。
この脆弱性により、管理者権限を持つ攻撃者が、対象サイトのデータベース情報を取得することが可能です。
### 👉 **再現手順(PoC)**
1. Newsletters プラグイン バージョン 4.9.9.7 以下がインストールされた WordPress サイトを用意します。
2. Newsletters プラグインのダッシュボードメニュー(`/wp-admin/admin.php?page=newsletters`)に移動します。

3. ブラウザの開発者ツールを使用して、'Elements' タブで `action=wpmlwelcomestats&security=` を検索し、`security` の値を確認します。たとえば、検索結果が下図のように表示された場合は、`22b1ac0de6` をメモします。
root@kitploit:~
// ...
jQuery.getJSON(newsletters_ajaxurl + 'action=wpmlwelcomestats&security=22b1ac0de6', ajaxdata, function(json) {
// ...

4. メモした `security` の値を以下の URL パスの `<SECURITY VALUE>` 部分に入力し、その URL にリクエストを送信します。
root@kitploit:~
http://localhost:8080/wp-admin/admin-ajax.php?action=wpmlwelcomestats&security=<SECURITY VALUE>&type=years&chart=bar&from=2024-12-31&to=2024-12-31&history_id=FOO%27+UNION+SELECT+(CONCAT((DATABASE()),%22-%22,(@@VERSION))),NULL+LIMIT+1,2+%23
### 👉 **追加情報(任意)**
#### [脆弱性の根本原因]
上記 PoC で SQL インジェクション脆弱性が発生する URL をリクエストすると、`/wp-content/plugins/newsletters-lite/wp-mailinglist-plugin.php` ファイル内の `ajax_welcomestats` 関数が呼び出されます。
このとき、リクエストパラメータ `history_id` は SQL クエリ文字列の条件句として直接参照され、変数 `$history_condition` として初期化されます。この変数は、エスケープ処理を一切行わずにデータベースクエリへ渡されます。

したがって、URL パラメータ `history_id` に入力された値に対する検証やエスケープ処理がないため、SQL インジェクション脆弱性が発生します。(なお、URL パラメータ `from` および `to` も、入力検証とエスケープ処理の不備により、SQL インジェクション攻撃の影響を受けます。)
## 6️⃣ エクスプロイトデモ

## 7️⃣ 参照
* https://nvd.nist.gov/vuln/detail/CVE-2025-30921