
Nagios XI에서 시간 기반 블라인드 SQLi를 악용하여 데이터베이스 내용을 추출하는 Python PoC로, 멀티스레드 이진 탐색 추출 및 CLI 스키마/테이블/컬럼 선택 기능을 제공합니다.
저장소: MettHK/CVE-2023-48084-Revised
다중 스레딩, 이진 탐색 추출, 데이터베이스/테이블/컬럼 선택을 위한 CLI 플래그가 포함된 Hamibubu/CVE-2023-48084의 업데이트 버전입니다.
원본 저장소가 아닙니다. 파생/개선된 PoC입니다. 원본 작업에 대한 크레딧은 Hamibubu에게 있습니다.
승인된 보안 테스트 및 교육 목적으로만 사용하세요. 소유하지 않았거나 테스트에 대한 명시적 허가가 없는 시스템에는 사용하지 마십시오. 작성자와 기여자는 오용에 대해 책임을 지지 않습니다.
CVE-2023-48084: Nagios XI 5.11.3 이전 버전에는 대량 수정 도구를 통한 SQL 인젝션 취약점이 존재합니다.
이 PoC는 다음에서 시간 기반 블라인드 SQL 인젝션을 악용합니다:
/admin/banner_message-ajaxhelper.php?action=acknowledge_banner_message&id=(SQL)
유효한 비관리자 세션 쿠키(nagiosxi) 또는 API 토큰이 필요합니다.
| 영역 | 변경 사항 |
|---|---|
| 추출 | 문자열 길이와 ASCII 문자에 대한 이진 탐색 (요청 수 대폭 감소) |
| 성능 | 멀티스레드 문자 추출 (-w / --workers) |
| CLI | -d / --database — 스키마 발견 건너뛰기 |
| CLI | -t / --table — 테이블 발견 건너뛰기 (-d 필요) |
| CLI | -C / --columns — 쉼표로 구분된 컬럼, 컬럼 발견 건너뛰기 (-t 필요) |
| 타이밍 | 구성 가능한 --delay, --threshold, --max-length |
| 견고성 | 스레드별 HTTP 세션; 일반 폴백이 있는 선택적 pwntools (진행률 표시줄) |
| 문서 | 원본에 대한 크레딧/링크; 예제에 실습실 호스트명이나 CTF 산출물 없음 |
requests (필수)pwntools (선택 사항; 더 나은 진행률 출력)git clone https://github.com/MettHK/CVE-2023-48084-Revised.git
cd CVE-2023-48084-Revised
pip install -r requirements.txt
# Interactive (discover schemas → tables → columns)
python3 CVE-2023-48084.py -u https://target.example/nagiosxi -c '<cookie>'
python3 CVE-2023-48084.py -u https://target.example/nagiosxi -a '<api_token>'
# Fast path: database + table + columns known
python3 CVE-2023-48084.py \
-u https://target.example/nagiosxi \
-c '<cookie>' \
-d nagiosxi \
-t xi_users \
-C username,email,password \
-w 15 \
--delay 1.2
작업자를 2명보다 많이 사용하지 않는 것을 권장합니다. 잘못된 결과가 나올 수 있습니다.
| 플래그 | 설명 |
|---|---|
-u / --url | 기본 URL (예: https://target.example/nagiosxi) |
-c / --cookie | nagiosxi 세션 쿠키의 값 |
-a / --apiKey | API 토큰 (-c와 함께 사용하지 마세요) |
-d / --database | 스키마/데이터베이스 이름 (스키마 열거 건너뛰기) |
-t / --table | 테이블 이름 (테이블 열거 건너뛰기; -d 필요) |
-C / --columns | 쉼표로 구분된 컬럼들 (컬럼 열거 건너뛰기; -t 필요) |
-w / --workers | 병렬 스레드 (기본값: 10) |
--delay | 참 분기에서 SLEEP 초 (기본값: 1.5) |
--threshold | 히트로 간주할 최소 응답 시간 (기본값: delay * 0.8) |
--max-length | 길이 이진 탐색의 상한 (기본값: 2048) |
--delay를 늘리거나(예: 2) -w를 낮추세요(예: 5).-w 15–20).-d / -t / -C를 선호하세요.