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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-51992 — CVE-2026-51992에 대한 개념 증명(PoC) 및 상세 라이트업: ClickHouse PostgreSQL 사전의 SQL 인젝션 취약점으로, 임의 명령 실행이 가능합니다. | Kitploit
도구/GitHubGitHub/theliimbo/cve-2026-51992
Vulnerability AnalysisCode AnalysisExploitationPenetration TestingLearning & EducationDatabase Security
GitHubtheliimbo/cve-2026-51992

CVE-2026-51992

CVE-2026-51992에 대한 개념 증명(PoC) 및 상세 라이트업: ClickHouse PostgreSQL 사전의 SQL 인젝션 취약점으로, 임의 명령 실행이 가능합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-51992

ClickHouse 내에는 적절한 권한을 가진 사용자가 딕셔너리를 생성하여 다양한 데이터베이스와 상호작용하고 특정 쿼리를 실행할 수 있게 해주는 기능이 존재합니다. PostgreSQL의 경우 SELECT 쿼리는 데이터베이스에서 실행되기 전에 COPY( {QUERY} ) TO STDOUT 문으로 래핑됩니다. 생성된 딕셔너리에 괄호를 추가하면 COPY( {QUERY} ) TO STDOUT 문에서 빠져나와 임의의 SQL 문을 실행할 수 있으며, 이는 궁극적으로 데이터베이스 서버에서 임의의 명령을 실행하는 것으로 이어질 수 있습니다.

세부 정보

PostgreSQL 딕셔너리는 다음 구조로 생성됩니다:

root@kitploit:~
SOURCE(POSTGRESQL(
    port 5432
    host 'postgresql-hostname'
    user 'postgres_user'
    password 'postgres_password'
    db 'db_name'
    table 'table_name'
    replica(host 'example01-1' port 5432 priority 1)
    replica(host 'example01-2' port 5432 priority 2)
    where 'id=10'
    invalidate_query 'SQL_QUERY'
    query 'SELECT id, value_1, value_2 FROM db_name.table_name'
))

딕셔너리에 사용되는 PostgreSQL 엔진에 대한 문서에는 다음과 같이 언급되어 있습니다:

PostgreSQL 측의 SELECT 쿼리는 각 SELECT 쿼리 이후 커밋되는 읽기 전용 PostgreSQL 트랜잭션 내에서 COPY (SELECT ...) TO STDOUT로 실행됩니다.

딕셔너리에 정의된 쿼리는 Postgres 인스턴스로 전송되기 전에 추가 검증이 없기 때문에, 쿼리를 ")"로 시작하면 "COPY(...) TO STDOUT"에서 빠져나와 읽기 전용이 아닌 트랜잭션을 생성할 수 있습니다. 예를 들어, 다음 쿼리를 ClickHouse에서 사용하여 "악성" Postgres 딕셔너리를 생성할 수 있습니다:

CREATE DICTIONARY exec_dict(id UInt64, value UInt64 DEFAULT 0) PRIMARY KEY id SOURCE(POSTGRESQL(port 5432 host '172.17.0.3' user 'postgres' password 'password' db 'postgres' query 'SELECT 1) TO PROGRAM \'id>/tmp/test\';-- ')) LAYOUT(DIRECT())

딕셔너리가 생성되면 ClickHouse 내에서 딕셔너리를 참조하여 로드할 수 있습니다. ClickHouse는 ClickHouse가 기대하는 COPY 함수가 실패했음을 나타내는 오류를 반환합니다. 그러나 쿼리의 나머지 부분은 백엔드 PostgreSQL 데이터베이스에서 여전히 실행됩니다. PostgreSQL의 PROGRAM 기능을 남용하면 임의의 명령을 실행할 수 있습니다.

show-code-executing-in-container

맥락

원래 테스트는 25.8.10.7 버전에서 수행되었지만, 2025년 1월 30일에 보고서가 제출되었을 당시 최신 버전은 26.3.9.8이었고 취약점은 여전히 존재했습니다. 검토 후, 이 이슈는 2026년 4월 10일에 다음과 같은 설명과 함께 "해당 없음"으로 표시되었습니다:

아니요 - 이는 보안상의 이유가 아니라 주로 효율성 때문입니다. postgres 자격 증명과 원격 테이블 함수를 가진 사용자는 이미 많은 작업을 수행할 수 있거나 PostgreSQL 데이터베이스에 직접 연결하여 이러한 쿼리를 실행할 수 있습니다.

따라서 이는 위험이 아닙니다. 여기서 공격자는 PostgreSQL 데이터베이스에 대한 유효한 자격 증명과 ClickHouse의 유효한 사용자, 그리고 postgresql 테이블 함수를 사용할 수 있는 권한이 필요합니다.

PostgreSQL 데이터베이스를 보호하는 측면에서, 사용자는 ClickHouse 사용자가 사용하는 모든 postgresql 자격 증명에 합리적인 권한을 사용해야 합니다. 즉, 제한된 권한, 범위를 의미하며 기본 "postgres" 자격 증명을 그대로 사용해서는 안 됩니다.

따라서 이 문제는 본 글 작성 시점의 최신 ClickHouse 버전에서도 여전히 적용됩니다:

show-same-query-for-clickhouse

newer-version-for-clickhouse

show-vuln-still-happeneing-latest-version

수정 사항이 발행될 가능성은 낮아 보이며, 이는 현재 및 잠재적으로 향후 모든 ClickHouse 버전이 영향을 받을 것임을 의미합니다.

도구 다운로드