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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-2005 — CVE-2026-2005용 PoC | Kitploit
도구/GitHubGitHub/var77/cve-2026-2005
Privilege EscalationMemory ForensicsVulnerability AnalysisExploitationLearning & EducationDatabase SecurityBinary Exploitation
GitHubvar77/cve-2026-2005

CVE-2026-2005

CVE-2026-2005용 PoC

저장소 보기
2653개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-2005 - PostgreSQL pgcrypto 힙 오버플로우 익스플로잇

PostgreSQL pgcrypto 확장의 PGP 세션 키 구문 분석에 존재하는 힙 기반 버퍼 오버플로우를 위한 PoC 익스플로잇으로, 임의 메모리 읽기/쓰기 및 슈퍼유저로의 권한 상승으로 이어집니다.

전체 기술 세부 사항은 Zeroday Cloud 권고를 참조하세요.

데모

PoC 데모

사용법

1. PostgreSQL 컴파일

취약한 커밋에서 PostgreSQL을 클론하고 컴파일하여 바이너리의 심볼 오프셋이 정확히 일치하도록 합니다. 익스플로잇은 유출된 포인터를 ELF 심볼 오프셋과 대조하여 ASLR 베이스를 해석합니다. 빌드나 버전이 다르면 오프셋이 달라지므로 실패합니다.

root@kitploit:~
git clone https://github.com/postgres/postgres.git
cd postgres
git checkout 4b324845ba5d24682b9b3708a769f00d160afbd7
./configure \
    --prefix="$HOME/projects/pg/pgsql" \
    --with-libxml \
    --with-libxslt \
    --enable-debug \
    --with-ssl=openssl
make -j$(nproc)
make install-world-bin

2. Python 종속성 설치

root@kitploit:~
pip install -r requirements.txt

3. 익스플로잇 실행

root@kitploit:~
python poc.py \
    --binary "$HOME/projects/pg/pgsql/bin/postgres" \
    --dbname test-db \
    --host 127.0.0.1 \
    --port 5432 \
    --user test-user \
    --password secret \
    --cmd id

옵션

익스플로잇 흐름

익스플로잇은 7단계로 진행됩니다.

  1. 힙 포인터 유출 - 조작된 PGP 메시지가 mdst 버퍼의 malloc 청크 헤더를 손상시킵니다. PostgreSQL이 손상된 청크에서 pfree()를 호출하면, 할당자가 포인터 주소가 포함된 오류를 출력하여 mdst->data의 힙 위치를 누출합니다.

  2. 임의 읽기 - 두 번째 오버플로우가 mdst->data를 (leaked_ptr - 0x10000)을 가리키도록 덮어씁니다. 복호화 후, mbuf_steal_data()는 해당 주소의 내용을 복호화된 출력으로 반환하며, 오래된 코드 포인터가 포함될 수 있는 힙 메모리를 덤프합니다.

  3. 포인터 스캔 - 16진수 덤프를 스캔하여 코드 주소처럼 보이고(>= 0x500000000000) 힙 영역에 없는 8바이트 리틀엔디언 값을 찾습니다. 이는 PIE(Position Independent Executable) 포인터 후보입니다.

  4. PIE 베이스 투표 - 각 후보 주소는 postgres 바이너리의 ELF 심볼 오프셋과 대조됩니다. 페이지 오프셋이 일치하는 각 (addr - sym_offset) 쌍에 대해 투표가 행해집니다. 10표 이상 받은 후보만 유지되며, 투표 수로 정렬했을 때 가장 작은 베이스(PIE는 가장 낮은 주소에 매핑된 ELF 세그먼트)가 최상위 후보입니다.

  5. PIE 베이스 검증 - 임의 읽기 프리미티브를 사용하여 익스플로잇은 (candidate_base + current_user_offset)에서 CurrentUserId를 읽고 세션의 알려진 OID와 비교합니다. 일치하면 PIE 베이스가 확인됩니다.

  6. 임의 쓰기 - 오버플로우가 와 MBuf 헤더를 모두 손상시킵니다. 위조된 /는 암호화된 슈퍼유저 OID(10)를 포함하는 내장 sym-encrypted 패킷을 가리킵니다. 위조된 는 를 가리킵니다(는 의 가 출력 길이를 처음 4바이트에 쓰는 과정을 반영합니다).

요구 사항

  • Python 3.10+
  • psycopg2-binary, pwntools, pycryptodome (pip install -r requirements.txt)
  • pgcrypto가 활성화된 취약한 커밋(4b324845)에서 컴파일된 PostgreSQL

면책 조항

이 PoC(Proof of Concept)는 교육 및 방어 연구 목적으로만 제공됩니다. 소유한 시스템 또는 명시적인 테스트 승인을 받은 시스템에서만 사용하세요.

참고 자료

  • CVE-2026-2005: PostgreSQL pgcrypto 정수 오버플로우에서 RCE까지
도구 다운로드
ArgumentDefaultDescription
--binary(postgres 바이너리)심볼 추출을 위한 postgres 바이너리 경로
--dbnamepostgres대상 데이터베이스 이름
--hostlocalhostPostgreSQL 호스트
--port5432PostgreSQL 포트
--userpostgres데이터베이스 사용자
--password(비어 있음)데이터베이스 비밀번호
--cmdwhoami권한 상승 후 실행할 OS 명령
--gdb(플래그)오버플로우 지점에서 tmux를 통해 GDB 연결
msrc
mdst
msrc->data
read_pos
mdst->data
CurrentUserId - 4
-4
pgp-pgsql.c:533
SET_VARSIZE
  • 권한 상승 - CurrentUserId가 10(부트스트랩 슈퍼유저)으로 덮어써지면, COPY FROM PROGRAM은 지정된 OS 명령을 postgres 시스템 사용자로 실행합니다.