
pgAdmin 4 버전 ≤ 8.14의 원격 코드 실행(RCE) 취약점인 CVE-2025-13780을 위한 포괄적인 취약점 스캐너입니다.
CVE-2025-13780에 대한 종합적인 취약점 스캐너로, pgAdmin 4 버전 ≤ 8.14에 존재하는 원격 코드 실행(RCE) 취약점입니다.
이 취약점은 pgAdmin 4의 Restore(복원) 기능에 존재합니다. 애플리케이션은 정규식을 사용하여 \로 시작하는 위험한 셸 명령을 차단하려고 시도합니다. 그러나 이 검사는 우회될 수 있습니다.
(^|\n)[ \t]*\\\xef\xbb\xbf를 앞에 추가하면 정규식 일치가 실패합니다.\n 대신 \n\r을 사용합니다.# Clone the repository
git clone https://github.com/ThemeHackers/CVE-2025-13780.git
cd CVE-2025-13780
# Install dependencies
pip install -r requirements.txt
requests - API 요청용 HTTP 라이브러리rich (선택 사항) - 색상과 진행률 표시줄이 포함된 향상된 터미널 출력python-socketio 및 websocket-client (선택 사항) - 익스플로잇 모드의 WebSocket 지원# Basic scan
python3 scanner.py http://localhost:5050
# With authentication
python3 scanner.py http://localhost:5050 --email [email protected] --password admin
# Verbose mode
python3 scanner.py http://localhost:5050 -v
# Scan from file
python3 scanner.py -f targets.txt
# With multi-threading (default: 5 threads)
python3 scanner.py -f targets.txt --threads 10
# Export results to JSON
python3 scanner.py -f targets.txt -o results.json --json
스캐너는 여러 요인을 기반으로 신뢰도 점수(0-100)를 계산합니다:
버전 ≤ 8.14인 경우:
버전 > 8.14인 경우:
버전을 알 수 없는 경우:
상태는 신뢰도 점수에 따라 결정됩니다:
Docker Compose를 사용하여 취약한 pgAdmin 4 인스턴스를 구성합니다:
docker-compose up -d
[email protected]admin| 코드 | 의미 |
|---|---|
| 0 | 취약점이 발견되지 않음 |
| 1 | 취약한 대상이 하나 이상 발견됨 |
| 2 | 스캔 오류 발생 |
╔═══════════════════════════════════════════════════════════════╗
║ CVE-2025-13780 pgAdmin 4 Scanner ║
║ Regex Bypass Remote Code Execution ║
║ ║
║ Affected: pgAdmin 4 <= 8.14 ║
╚═══════════════════════════════════════════════════════════════╝
[*] Checking connectivity to http://localhost:5050
[+] Target appears to be pgAdmin
[+] Detected version: 8.14
[+] CSRF token obtained
[!] Version 8.14 is in vulnerable range (<= 8.14)
[*] Testing regex bypass patterns
[+] BOM bypass: BYPASSED
[+] CRLF bypass: BYPASSED
⚠️ VULNERABILITY DETECTED ⚠️
이 도구는 교육 및 승인된 보안 테스트 목적으로만 제공됩니다.
이 프로젝트는 MIT 라이선스를 따릅니다 - 자세한 내용은 LICENSE 파일을 참조하세요.
| 옵션 | 설명 |
|---|
target | 대상 URL (예: http://localhost:5050) |
-f, --file | 대상 목록이 포함된 파일 (줄당 하나) |
-e, --email | 인증에 사용할 pgAdmin 이메일 |
-p, --password | 인증에 사용할 pgAdmin 비밀번호 |
-o, --output | 결과를 저장할 출력 파일 |
--json | 결과를 JSON 형식으로 출력 |
-q, --quiet | 배너 및 정보 메시지 숨기기 |
-v, --verbose | 상세/디버그 출력 활성화 |
-t, --timeout | 요청 제한 시간(초) (기본값: 10) |
--threads | 다중 대상 스캔에 사용할 스레드 수 (기본값: 5) |
--exploit-demo | 익스플로잇 데모 모드 실행 |
--exploit | 실제 익스플로잇 실행 (--lhost 필요) |
--lhost | 리버스 셸 콜백용 공격자 IP |
--lport | 리버스 셸용 공격자 포트 (기본값: 4444) |
--cmd | 실행할 사용자 지정 명령 (선택 사항) |
| 요인 | 최대 점수 | 세부 정보 |
|---|
| 취약 범위 내 버전 (≤ 8.14) | 40 | ≤ 8.14로 감지된 버전 |
| 버전을 알 수 없음 | 15 | 버전을 확인할 수 없는 경우 |
| Restore 엔드포인트 접근 가능 | 25 | 인증 없이 Restore API에 접근 가능 |
| Restore 엔드포인트 (인증 필요) | 15 | Restore API가 존재하지만 인증 필요 |
| BOM 및 CRLF 우회 모두 작동 | 25 | 두 정규식 우회 방법 모두 성공 |
| 하나의 우회 방법만 작동 | 20 | BOM 또는 CRLF 우회 중 하나라도 성공 |
| 브라우저 엔드포인트 접근 가능 | 10 | 기본 pgAdmin 인터페이스 접근 가능 |