
POC amélioré pour CVE-2022-1388 qui affecte plusieurs produits F5.
POC amélioré pour CVE-2022-1388 qui affecte plusieurs produits F5.
Il s'agit d'une version améliorée du Proof of Concept de Horizon3 pour CVE-2022-1388 : https://github.com/horizon3ai/CVE-2022-1388
C'est aussi une refonte complète avec remaniement du travail de PsychoSec par https://github.com/PsychoSec2/CVE-2022-1388-POC
LOL ce gars a mentionné dans la section Requirements un point tel que brains et a un code dupliqué à +40% et absolument non évolutif.
Le bloc de session a également été supprimé car je n'y vois pas beaucoup de sens ici.
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 se trouve 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é :
Connection header must include X-F5-Auth-Token
X-F5-Auth-Token header must be present
Host header must be localhost / 127.0.0.1 or the Connection header must include X-Forwarded-Host
Auth header must be set with the admin username and any password
git
pip3
python3
git clone https://github.com/iveresk/cve-2022-1388-iveresk-command-shell.git
cd cve-2022-1388-iveresk-command-shell
pip3 install -r requirements.txt
python3 cve-2022-1388-1veresk.py -h
Test d'une cible :
python3 cve-2022-1388-1veresk.py.py -u -t https://192.168.0.221
Running test on target: https://192.168.0.221 | Command: whoami
Response: root
Target is vulnerable!!
Utilisez l'option -s pour lancer un shell interactif. Shell interactif :
python3 cve-2022-1388-1veresk.py -u -s https://192.168.0.221
Running interactive shell..
root@f5-localhost: /var/service/restjavad$
Dose not require the use of any reverse tcp connection or listeners.
Use 'exit' command to exit the 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 ne pas donner le résultat attendu. Cela est probablement dû à l'utilisation de JSON dans les requêtes et réponses de l'API serveur. Pour éviter tout problème, essayez de ne pas utiliser de caractères communs à la syntaxe JSON tels que les guillemets doubles, les deux-points, les virgules, les accolades et les crochets lorsque vous utilisez le shell interactif. Toute syntaxe JSON doit être dans un format structuré.
L'utilisation d'une syntaxe JSON non structurée dans une commande peut entraîner une requête API mal formée vers le serveur et pourrait aboutir à : aucune sortie de commande, rien exécuté, ou pourrait vous faire sortir du script Python entièrement. 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 via le 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 quand même pouvoir obtenir une sortie de commande de base. Si vous n'obtenez aucune sortie, 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 du bulletin 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 mainteneurs du projet ne sont pas responsables de toute utilisation abusive du logiciel. Utilisez-le de manière responsable.
N'hésitez pas à me contacter via Keybase pour tout détail.