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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2024-12356 — 비파괴적 탐지기로, BeyondTrust Remote Support 및 PRA의 인증되지 않은 RCE를 탐지하며, 인자 주입과 PostgreSQL 이스케이프 우회를 연결하여 시간 기반 차등 분석을 통해 악용 가능성을 검증합니다. | Kitploit
도구/GitHubGitHub/skraft9/cve-2024-12356
Vulnerability ScannersVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRed Teaming
GitHubskraft9/cve-2024-12356

CVE-2024-12356

비파괴적 탐지기로, BeyondTrust Remote Support 및 PRA의 인증되지 않은 RCE를 탐지하며, 인자 주입과 PostgreSQL 이스케이프 우회를 연결하여 시간 기반 차등 분석을 통해 악용 가능성을 검증합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

BeyondTrust Remote Support 및 Privileged Remote Access에서 인자 주입과 PostgreSQL 문자열 이스케이프 우회를 통한 인증 없는 원격 코드 실행

윤리적 경고: 연구, 교육 및 승인된 테스트 목적으로만 사용하십시오. 허가 없이 시스템에 사용하지 마십시오.


BeyondTrust Remote Support(RS) 및 Privileged Remote Access(PRA)는 조직의 내부 시스템으로의 권한 있는 원격 세션을 중개하는 어플라이언스로, 인터넷에 자주 노출되며 네트워크에서 신뢰할 수 있는 위치를 차지합니다.

어플라이언스의 WebSocket 엔드포인트에 도달할 수 있는 인증되지 않은 공격자는 두 가지 결함을 연결하여 사이트 사용자 권한으로 운영 체제 명령을 실행할 수 있습니다: 어플라이언스의 thin-scc-wrapper 스크립트의 인자 주입(CVE-2024-12356)과 잘못된 UTF-8 바이트를 조기 SQL 리터럴 중단으로 변환하는 PostgreSQL 문자열 이스케이프 우회(CVE-2025-1094)입니다. 취약한 경로는 인증 전에 도달합니다.

이 저장소의 bt_rs_rce_check.py는 해당 체인에 대한 비파괴적 탐지기입니다. 실제 익스플로잇이 사용하는 정확한 인증 없는 코드 경로를 구동하지만 도달 가능성 증명에서 멈춥니다: 대상에 실행을 요청하는 유일한 것은 무해한 sleep(시간 기반 차등) 또는 사용자가 제어하는 대역외 수집기로의 무해한 호스트명/HTTP 조회뿐입니다. 셸을 열거나, 파일을 쓰거나, 데이터를 읽거나, 지속성을 유지하거나, 측면 이동을 하지 않습니다.

  • CVE ID:
    • CVE-2024-12356 — BeyondTrust RS 및 PRA의 명령/인자 주입
    • CVE-2025-1094 — PostgreSQL psql 잘못된 UTF-8 SQL 주입 결함, RCE 완성을 위해 연결됨
  • 취약점 유형:
    • 근본 원인: CWE-88 인자 주입 (BeyondTrust는 CVE-2024-12356을 CWE-77로 분류; Rapid7의 분석은 CWE-88이 더 정확하다고 주장)
    • 연결된 결함: CWE-89 잘못된 UTF-8 처리로 인한 SQL 주입 (CVE-2025-1094)
    • 최종 영향: CWE-78 OS 명령 주입 (인증 없는 RCE)
  • 영향을 받는 소프트웨어: BeyondTrust Remote Support(RS) 및 Privileged Remote Access(PRA).
  • 영향을 받는 버전: 24.3.1 및 이전 버전 (공개 시점 기준 모든 패치되지 않은 온프레미스 및 클라우드 빌드).
  • 수정: BeyondTrust 패치 BT24-10 (자체 호스팅 어플라이언스용 BT24-10-ONPREM1 / BT24-10-ONPREM2; 클라우드 인스턴스는 BeyondTrust가 패치).
  • 점수: 9.8 (치명적) CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • 악용 상태: 실제 환경에서 활발히 악용됨; CISA KEV 카탈로그에 등재됨.

  • 영향

    이 체인은 내부 시스템에 대한 권한 있는 액세스를 중개하는 것이 유일한 목적인 어플라이언스에서 사이트 사용자 권한으로 인증 없는 원격 코드 실행을 가능하게 하므로, 단일 익명 요청이 노출된 RS 또는 PRA 호스트를 발판과 어플라이언스가 중개하는 모든 다운스트림 시스템으로의 피벗 지점으로 전환합니다.

    자격 증명, 사용자 상호 작용 또는 사전 액세스가 필요 없습니다: 공격자는 외부의 익명 사용자이며, 유일한 전제 조건은 어플라이언스의 WebSocket 엔드포인트에 대한 네트워크 도달 가능성입니다.

    이 취약점은 실제 환경에서 악용되는 것이 발견된 후 공개되었으며, 2024년 12월 19일에 CISA 알려진 악용 취약점 카탈로그에 추가되었고, 국가 후원 행위자에 의한 것으로 알려진 2024년 12월 미국 재무부 침해와 공개적으로 연관되었습니다.


    취약점 체인

    취약한 로직은 어플라이언스의 thin-scc-wrapper 셸 스크립트에 있으며, 인증되지 않은 WebSocket 프레임에서 공격자가 제어하는 세션 키(gskey)를 읽어 데이터베이스로 전달합니다. 완전한 RCE는 세 가지 별개의 문제의 체인입니다.

    1. thin-scc-wrapper의 인자 주입 (CVE-2024-12356). 래퍼는 신뢰할 수 없는 gskey를 헬퍼에 따옴표 없이 전달하므로, 셸이 echo가 실행되기 전에 단어 분할로 인자를 나눕니다:

    root@kitploit:~
    quoted=$(export PHPRC="$BG_app_root/config/php-cli.ini"; echo $gskey | $ingrediRoot/app/dbquote)
    

    -e로 시작하는 키는 echo를 echo -e로 바꾸어 백슬래시 이스케이프를 해석하고, 공격자가 다음 단계로 흐르는 데이터에 임의의 원시 바이트 — 가장 중요하게는 \xC0 — 를 방출할 수 있게 합니다. 공격자는 새 명령을 주입하는 것이 아니라 기존 명령의 플래그를 제어하므로, 이는 전통적인 명령 주입이 아닌 인자 주입(CWE-88)입니다.

    2. 잘못된 UTF-8을 통한 PostgreSQL 이스케이프 우회 (CVE-2025-1094). dbquote는 PHP의 pg_escape_string()으로 값을 이스케이프하며, 이는 libpq의 PQescapeStringInternal()을 호출합니다. 멀티바이트 문자의 경우 pg_encoding_mblen()이 보고한 길이를 신뢰하고 문자의 바이트를 검증 없이 그대로 복사합니다:

    root@kitploit:~
    len = pg_encoding_mblen(encoding, source);
    for (i = 0; i < len; i++)   /* copy the character */
        *target++ = *source++;
    

    0xC0과 같은 바이트는 2바이트 문자를 알리므로, 이스케이퍼는 다음 바이트를 "연속" 바이트로 삼킵니다 — 해당 바이트가 작은따옴표(0x27)인 경우에도 마찬가지입니다. 따라서 0xC0 0x27 시퀀스는 "이스케이프된" 문자열에 이스케이프되지 않은 작은따옴표 바이트가 여전히 포함된 채로 통과합니다.

    3. psql이 리터럴에서 벗어나 \!를 실행합니다 (CVE-2025-1094). "이스케이프된" 문자열은 psql로 파이프되며, psql은 0xC0 0x27을 하나의 문자로 취급하지 않으므로 0x27이 SQL 문자열 리터럴을 조기에 닫고 그 이후의 모든 것이 새 입력으로 구문 분석됩니다. 공격자는 이를 사용하여 사이트 사용자 권한으로 셸 명령을 실행하는 psql의 \! 메타 명령에 도달합니다:

    root@kitploit:~
    <0xC0>'; \! <cmd> #
    

    Rapid7은 실제 RCE가 항상 CVE-2025-1094에 의존하며, 그것만으로 충분하다는 것을 발견했습니다: 바이너리 WebSocket 프레임(UTF-8 검증이 이를 제거하는 텍스트 프레임이 아닌) 내부에 원시 0xC0 바이트를 전달하면 gskey에 수정 없이 도달하여 echo -e 단계 없이 SQL 탈출을 트리거합니다. 이 탐지기는 해당 바이너리 프레임 방식을 사용합니다.


    도달 가능성

    전체 체인은 단일 WebSocket을 통해 인증 전에 도달할 수 있습니다:

    1. 엔드포인트 — /nw에 대한 인증 없는 WebSocket (어플라이언스의 Tornado 핸들러).
    2. 앱 선택 — 취약한 "thin" 앱은 Sec-WebSocket-Protocol: ingredi support desk customer thin 헤더로 선택되며, URL 인코딩된 ingredi%20support%20desk%20customer%20thin으로 전송됩니다.
    3. 회사 확인 — 대상 테넌트는 HTTP Host 헤더(설치된 회사에 매핑) 또는 대체로 X-Ns-Company 헤더에서 확인됩니다. 둘 다 설치된 회사에 매핑되지 않으면 어플라이언스는 gskey가 처리되기 전에 소켓을 닫습니다.
    4. 페이로드 — 프로토콜 버전 1, thinMint UUID, authType 0(gskey 인증), 그 다음 악성 gskey(버전 1은 locale_code 줄이 없음을 의미)를 전달하는 개행으로 구분된 바이너리 프레임:
    root@kitploit:~
    1
    <thinMint UUID>
    0
    <0xC0>'; \! <cmd> #
    

    탐지

    BT24-10은 dbquote/psql에 도달하기 전에 영숫자가 아닌 gskey를 거부하는 입력 검증 게이트를 추가합니다:

    root@kitploit:~
    elif [[ ! "$gskey" =~ ^[a-zA-Z0-9]{32}$ ]]; then
        blog "bad session key given"
        ...
        exit 1
    

    0xC0, 따옴표 또는 셸 메타 문자를 포함하는 모든 키는 거부되고 스크립트가 종료되므로, 패치된 어플라이언스는 1 failure 응답이나 명령 실행을 생성하지 않습니다. 탐지기는 이러한 동작 차이를 대상에서 나가는 연결이 필요 없는 이그레스 독립적 시간 기반 차등으로 전환합니다:

    • 대조군 — 유효한 형식의 gskey(A × 32). 패치된 빌드와 패치되지 않은 빌드 모두에서 DB 조회에 도달하여 ['2\n', '1 failure\n']를 빠르게 반환합니다.
    • 주입 — <0xC0>'; \! sleep <delay> #. 취약한 호스트에서 psql은 주입된 sleep을 실행하므로 1 failure 응답이 약 <delay>초 지연됩니다. 패치된 호스트에서 gskey 정규식이 키를 거부하고, 스크립트가 종료되며, 소켓이 응답 없이 빠르게 닫힙니다.

    판정이 어플라이언스 자체 응답의 타이밍에 의존하므로, 대상이 아웃바운드 DNS/HTTP를 차단하는 경우에도 유효합니다 — 이 경우 OAST 콜백만으로는 오탐(false-negative)이 발생할 수 있습니다. 선택적 콜백 모드는 이그레스를 허용하는 호스트에 대한 확인용일 뿐입니다.


    사용법

    하나의 종속성을 설치합니다:

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

    차등 모드 (권장, 이그레스 독립적):

    root@kitploit:~
    python3 bt_rs_rce_check.py --target rs.example.com --mode differential
    

    OAST 확인이 포함된 차등:

    root@kitploit:~
    python3 bt_rs_rce_check.py --target rs.example.com \
        --oast <your-collector>.oast.pro --mode both
    

    Host 헤더가 테넌트로 확인되지 않는 경우, 명시적 슬러그 또는 X-Ns-Company 헤더를 통해 차례로 시도되는 후보 슬러그 파일(줄당 하나)을 제공합니다:

    root@kitploit:~
    python3 bt_rs_rce_check.py --target rs.example.com --company acme
    python3 bt_rs_rce_check.py --target rs.example.com --company-list slugs.txt
    

    주요 옵션:

    옵션의미
    --target <host>어플라이언스 가상 호스트 / FQDN (필수).
    --company <slug>명시적 테넌트 슬러그, X-Ns-Company로 전송됨.
    --company-list <file>후보 슬러그 파일, 하나가 확인될 때까지 시도됨.
    --oast <domain>콜백 확인용 대역외 수집기 도메인.
    --mode {differential,callback,both}탐지 전략 (기본값 differential).
    --delay <seconds>시간 기반 테스트용 sleep 지속 시간 (기본값 9).
    --timeout <seconds>프로브당 소켓 시간 초과 (기본값 25).
    --header 'H: v'추가 원시 요청 헤더; 반복 가능.

    결과 해석:

    • VULNERABLE — 주입된 1 failure 응답이 대조군에 비해 약 --delay초 지연되었습니다. sleep이 실행되었습니다; 인증 없는 RCE 체인이 이 호스트에서 악용 가능합니다.
    • PATCHED — 대조군이 1 failure를 빠르게 반환했지만, 주입은 응답 없이 거부되었습니다. BT24-10 gskey 정규식이 적용되어 있으며 주입이 psql 싱크에 도달하지 않습니다.
    • UNRESOLVED ("company did not resolve") — 두 프로브 모두 1 failure를 생성하지 않았으므로 대조군도 gskey 핸들러에 도달하지 못했습니다. 이는 패치된 결과가 아닙니다; Host/회사가 설치된 회사에 매핑되지 않아 어플라이언스가 소켓을 닫았습니다. 올바른 가상 호스트(--target) 또는 유효한 슬러그(--company / --company-list)로 다시 시도하십시오.

    수정

    BT24-10 (BT24-10-ONPREM1 / BT24-10-ONPREM2)을 적용하거나 24.3.1 이상으로 업그레이드하십시오. 이 체인은 PostgreSQL psql 결함(CVE-2025-1094)에도 의존하므로 PostgreSQL 클라이언트 도구도 패치된 상태로 유지하고, 가능한 경우 어플라이언스의 WebSocket 엔드포인트에 대한 네트워크 노출을 제한하십시오.


    참고 자료

    • CVE-2024-12356 — NVD 항목: BeyondTrust RS/PRA 명령/인자 주입 (CVSS 9.8).
    • CVE-2025-1094 — NVD 항목: PostgreSQL psql 잘못된 UTF-8 / SQL 주입 결함, RCE 완성을 위해 연결됨.
    • BeyondTrust 권고 BT24-10 — RS/PRA 명령 주입에 대한 공식 공급업체 보안 권고 및 패치.
    • CISA KEV 카탈로그 항목 — CVE-2024-12356, 2024년 12월 19일 추가, 및 추가를 알리는 CISA 알림.
    • Rapid7 분석: CVE-2024-12356 — 인증 없는 RCE를 재현하고 연결된 PostgreSQL 결함 CVE-2025-1094를 발견.
    • Metasploit 익스플로잇 모듈 — rapid7/metasploit-framework PR #19877, BeyondTrust RS/PRA에 대한 인증 없는 RCE.

    법적 고지

    이 소프트웨어는 승인된 보안 테스트 및 방어적 연구용으로만 제공됩니다. 소유하거나 서면으로 명시적 테스트 승인을 받은 시스템에 대해서만 실행하십시오. 이는 무기화된 명령 실행, 데이터 액세스 및 지속성을 의도적으로 피하는 비파괴적 탐지기입니다. 모든 관련 법률 준수 및 적절한 승인 획득에 대한 책임은 전적으로 사용자에게 있습니다; 저자는 오용에 대해 어떠한 책임도 지지 않습니다.

    도구 다운로드