
CVE-2026-5147용 익스플로잇 스크립트로, MySQL 인터페이스를 대상으로 부울 기반 및 시간 기반 블라인드 SQL 인젝션을 수행하여 버전, 데이터베이스, 스키마 및 데이터를 추출합니다. 보정(calibration), 덤프 하위 명령 및 구성 가능한 페이로드를 포함합니다.
승인된 취약점 검증 및 랩 실습을 위한 도구: SQL 인젝션이 존재하는 엔드포인트에 대해 MySQL 부울 기반 블라인드 인젝션(EXP / INSTR 또는 ASCII) 및 시간 기반 블라인드 인젝션(if + ascii + sleep)을 수행하고, 선택적으로 버전, 데이터베이스 이름, 테이블 구조 및 데이터를 추출합니다(sqlmap의 --dump와 유사한 동작).
승인되지 않은 시스템에서는 사용하지 마십시오.
pip install requests
CURRENT_USERINSTRcode-p instr 또는 ascii)을 사용합니다.--skip-calibrate: 위 보정을 건너뜁니다. 여전히 부울 + JSON 필드 기반으로 추측하며, 자동으로 시간 기반으로 전환하지 않습니다(로컬 디버깅에 적합).「참」으로 판정하는 JSON 필드 이름과 값은 --json-code-field, --json-code-true로 조정할 수 있습니다(대상 API와 일치해야 함).
# 도메인만 지정: 기본 경로로拼接(스크립트 내 DEFAULT_API_PATH 참조)
python cve-2026-5147.py -u target.example.com
# HTTPS, 사용자 정의 경로 및 인젝션 파라미터 이름 지정
python cve-2026-5147.py -u target.example.com --https --path /api/foo --param id
# 전체 데이터베이스 덤프(요청량이 매우 많으므로 주의)
python cve-2026-5147.py -u target.example.com dump
# 테이블 이름 문자열만 추출, 데이터 내보내지 않음
python cve-2026-5147.py -u target.example.com dump --schema-only
진행 상황 및 진단 정보는 stderr로, 최종 요약은 stdout으로 출력됩니다.
| 매개변수 | 설명 |
|---|---|
-u / --url | 대상(도메인, host:port 또는 전체 URL), 필수 |
--path | 경로가 없을 때 호스트 뒤에 붙는 경로(기본 테넌트 유형 API 경로) |
--https | scheme이 없을 때 https 사용(기본값은 http:// 추가) |
--param | 인젝션 파라미터 이름(기본값 website) |
-p / --payload | 부울 구문: instr 또는 ascii(시간 기반 블라인드는 고정 if+ascii+sleep) |
--timeout | HTTP 타임아웃(초); 시간 기반 블라인드 진입 시 자동으로 sleep+5 이상으로 설정 |
--sleep | 시간 기반 블라인드 sleep() 초 수 |
--time-floor | 참 판정: 총 소요 시간 ≥ 이 값(초); 기본값 약 sleep - 1 |
--json-code-field / --json-code-true | 부울 사이드 채널에서 읽는 JSON 필드 및 「참」 값 |
--skip-calibrate | 프로브 보정 건너뛰기 |
--only | version / database / both: 버전만, 데이터베이스 이름만 또는 둘 다 추출 |
-H / -P | 추가 요청 헤더, 추가 쿼리 매개변수, 반복 가능 |
dump 하위 명령에는 --schema-only, --dump-out, --dump-row-limit, --dump-select 등이 있으며, python cve-2026-5147.py -h를 참조하십시오.
| 하위 명령 | 의미 |
|---|---|
info(기본값) | VERSION(), 현재 데이터베이스 이름 DATABASE() 추출(--only의 영향을 받음) |
dump | 현재 데이터베이스의 테이블 이름, 테이블별 컬럼 이름 및 행 데이터 추가 추출(또는 --schema-only로 스키마만) |
main()에서 먼저 calibrate_sqli_oracle을 수행하고, 실패 시 effective_detect = "time"으로 설정하고 bind_time_payload를 실행합니다. 시간 모드에서는 다시 calibrate_time_oracle을 수행합니다.--json-code-field와 정렬되었습니다(더 이상 code로 하드코딩되지 않음).command의 argparse 도움말이 기본 하위 명령이 dump가 아닌 **info**임을 표시하도록 수정되었습니다.이 스크립트는 보안 연구 및 승인된 테스트 전용입니다. 사용자는 현지 법률 및 대상 환경의 승인 범위를 준수해야 합니다.