Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-10795-Lab — # Docker 랩: CVE-2026-10795 재현 UpdraftPlus UpdraftCentral 인증 우회를 플러그인 설치와 연계하여 RCE(원격 코드 실행)를 달성하는 Docker 랩입니다. 취약/패치된 대상, PoC 익스플로잇, 소스 레벨 분석을 포함합니다. | Kitploit
도구/GitHubGitHub/rootdirective-sec/cve-2026-10795-lab
Authentication & AuthorizationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubrootdirective-sec/cve-2026-10795-lab

CVE-2026-10795-Lab

# Docker 랩: CVE-2026-10795 재현 UpdraftPlus UpdraftCentral 인증 우회를 플러그인 설치와 연계하여 RCE(원격 코드 실행)를 달성하는 Docker 랩입니다. 취약/패치된 대상, PoC 익스플로잇, 소스 레벨 분석을 포함합니다.

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기
133개월 전아직 검토되지 않음

CVE Lab: CVE-2026-10795 - UpdraftPlus UpdraftCentral RPC 인증 우회를 통한 플러그인 설치 연계

핵심 요약

이 저장소는 UpdraftPlus WordPress 플러그인의 UpdraftCentral 원격 통신 계층에 영향을 미치는 인증되지 않은 인증 우회 취약점인 CVE-2026-10795를 재현하고 검증하기 위한 로컬 Docker 랩입니다.

취약한 동작은 UpdraftCentral RPC 메시지 처리 흐름에 존재합니다. 취약한 버전에서는 위조된 format=1 RPC 메시지가 서명 검증을 우회하고, 실패한 RSA 복호화 경로를 트리거한 후에도 예측 가능한 null 키/null IV 동작으로 대칭 복호화에 도달할 수 있습니다. 이를 통해 조작된 암호화 RPC 메시지가 UpdraftCentral 명령으로 수락되어 전달될 수 있습니다.

이 랩은 두 가지 UpdraftPlus 버전을 비교합니다:

서비스UpdraftPlus 버전용도URL
vuln1.26.4취약한 비교 대상http://127.0.0.1:8081
patched1.26.5패치된 비교 대상http://127.0.0.1:8082

시연되는 공격 체인은 다음과 같습니다:```text Unauthenticated attacker → forged UpdraftCentral RPC request → format=1 signature verification bypass → failed RSA decrypt not rejected in vulnerable version → predictable zero-key/zero-IV decrypt path → forged JSON RPC command accepted → privileged UpdraftCentral command dispatch → plugin.upload_plugin → install and activate marker plugin → hard-coded /usr/bin/id proof endpoint

주요 취약점은 인증 우회입니다. 이 랩은 권한 있는 UpdraftCentral 키 상태가 존재할 때 우회가 RCE 스타일의 영향으로 연결될 수 있음을 보여줍니다. UpdraftCentral은 WordPress 플러그인을 설치하고 활성화할 수 있는 합법적인 플러그인 관리 명령을 노출하기 때문입니다.

이는 직접적인 명령 주입 취약점이 아닙니다. 코드 실행 증명은 RPC 인증 경계를 우회한 후 인증된 플러그인 설치 기능을 남용하여 이루어집니다.

이 랩은 통제된 로컬 연구, 소스 수준 이해, 그리고 포트폴리오 시연 전용으로 설계되었습니다.

## 검증된 사실

| 주장 | 증거 | 이 랩에서 검증하는 방법 |
| ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| 이 랩에서 UpdraftPlus 1.26.4는 취약합니다. | 취약한 서비스는 위조된 `format=1` RPC 메시지를 수락하고 `plugin.upload_plugin`을 디스패치합니다. | `python3 poc/poc.py --url http://127.0.0.1:8081`을 실행합니다. |
| 이 랩에서 UpdraftPlus 1.26.5는 위조된 메시지를 차단합니다. | 패치된 서비스는 RPC 응답 본문을 반환하지 않으며 위조된 명령을 디스패치하지 않습니다. | `python3 poc/poc.py --url http://127.0.0.1:8082`을 실행합니다. |
| 이 문제는 UpdraftCentral RPC 계층의 인증 우회입니다. | 위조된 인증되지 않은 RPC 요청은 취약한 버전에서 명령 디스패치에 도달할 수 있습니다. | 포트 `8081`과 `8082` 사이의 `--ping` 동작을 비교합니다. |
| 이 랩은 마커 플러그인을 사전 설치하지 않습니다. | 설정은 WordPress, UpdraftPlus 및 로컬 UpdraftCentral 키 상태만 설치합니다. | PoC를 실행하기 전에 `/wp-json/cve-lab/v1/id`를 확인합니다. |
| PoC는 위조된 RPC를 통해 마커 플러그인을 설치합니다. | PoC는 RPC 데이터 필드에 ZIP 플러그인 페이로드와 함께 `plugin.upload_plugin`을 보냅니다. | PoC를 실행한 다음 `/wp-json/cve-lab/v1/id`를 요청합니다. |
| 취약한 대상은 RCE 스타일의 영향에 도달합니다. | 마커 플러그인은 `/usr/bin/id` 출력을 반환하는 하드코딩된 엔드포인트를 노출합니다. | 취약한 대상은 `uid=33(www-data) gid=33(www-data)`를 반환합니다. |
| 패치된 대상은 마커 플러그인을 설치하지 않습니다. | 패치된 서비스에서 마커 엔드포인트는 `404 rest_no_route`를 반환합니다. | `http://127.0.0.1:8082`에 대해 PoC를 실행합니다. |
| 이 랩에는 UpdraftCentral 키 상태가 필요합니다. | UpdraftCentral 디스패치는 로컬 키 항목 및 관련 메타데이터에 의존합니다. | `scripts/setup-wordpress.sh`를 검토합니다. |

## 가정 및 미지의 사항

이 랩은 원격 제어가 구성된 사이트 상태를 재현하기 위해 의도적으로 로컬 UpdraftCentral 키 상태를 시드합니다.

시드된 키 상태는 랩 전제 조건이지 취약점 자체가 아닙니다. 이를 통해 랩은 취약한 RPC 파싱 및 복호화 경로를 일관되게 실행할 수 있습니다.

이 랩은 모든 UpdraftPlus 설치가 즉시 악용 가능하다고 주장하지 않습니다. 시연된 체인은 권한 있는 WordPress 사용자와 연결된 UpdraftCentral 로컬 키 항목의 존재에 의존합니다.

이 랩은 하드코딩된 `/usr/bin/id` 증명 엔드포인트를 노출하는 마커 플러그인을 설치하여 통제된 RCE 스타일의 영향을 시연합니다. 이는 일반적인 웹 셸, 임의 명령 실행 매개변수, 리버스 셸, 지속성 메커니즘, 자격 증명 탈취 또는 외부 콜백을 제공하지 않습니다.

PoC는 로컬 대상으로만 범위가 제한되며 기본적으로 비로컬 호스트 이름을 거부합니다.

## 근본 원인 요약

근본 원인은 취약한 버전의 UpdraftPlus에서 UpdraftCentral RPC 메시지에 대한 부적절한 검증입니다.

취약한 RPC 흐름은 `format=1` 메시지를 수락합니다. `format=1` 경로는 최신 메시지 형식과 동일한 서명 검증을 요구하지 않습니다.

전반적인 문제는 다음과 같습니다:```text
format=1 message
→ signature verification is bypassed
→ RSA decrypt of the symmetric key can fail
→ failed decrypt result is not rejected
→ false is passed into the symmetric cipher as a key
→ phpseclib normalizes this into a predictable null key path
→ attacker-controlled encrypted JSON can decrypt successfully
→ command is dispatched

취약한 동작에서 RSA 복호화는 다음을 반환할 수 있습니다:```text false

해당 실패한 복호화 결과를 거부하는 대신, 취약한 흐름은 계속 진행되어 그 값을 대칭 복호화 계층에 전달합니다.

실질적인 취약 패턴은 다음과 같습니다:```php
$sym_key = $rsa->decrypt($sym_key);
$rij->setKey($sym_key);
$decrypted = $rij->decrypt($ciphertext);

문제는 $sym_key가 사용되기 전에 검증되지 않는다는 점입니다.

$sym_key가 false일 때, 암호화 설정은 예측 가능한 null 키/null IV 동작을 따릅니다. 이로 인해 알려진 제로 키와 제로 IV를 사용해 암호화된 RPC 페이로드를 제작할 수 있게 됩니다.

패치된 버전은 대칭 키가 사용되기 전에 가드를 추가합니다:```php if (false === $sym_key || !is_string($sym_key) || strlen($sym_key) < 16) { return false; }

이것은 신뢰 경계를 변경합니다.

패치 전:```text
failed RSA decrypt result could still reach symmetric decrypt

패치 후:```text failed RSA decrypt result is rejected before command dispatch

이것이 취약한 서비스는 위조된 RPC 명령을 전달하지만 패치된 서비스는 그렇지 않은 이유입니다.

## 인증 우회가 코드 실행으로 이어질 수 있는 이유

CVE-2026-10795는 근본적인 결함이 RPC 인증 및 메시지 검증 계층에 있기 때문에 인증 우회로 가장 잘 설명됩니다.

그러나 해당 인증 경계를 우회하면 공격자가 제어하는 RPC 메시지가 권한 있는 UpdraftCentral 명령에 도달할 수 있습니다.

중요한 명령 경로 중 하나는 다음과 같습니다:```text
plugin.upload_plugin

This command is part of UpdraftCentral’s plugin management functionality. It accepts a plugin ZIP payload, writes it to a temporary location, installs the plugin, and activates it when requested.

The impact chain is therefore:```text Authentication bypass → forged privileged RPC command → plugin upload through legitimate UpdraftCentral functionality → plugin installation → plugin activation → WordPress plugin code execution

이것은 명령 주입이 아닙니다.

랩은 단일 엔드포인트를 노출하는 마커 플러그인을 설치하여 코드 실행을 시연합니다:```text
/wp-json/cve-lab/v1/id

마커 플러그인은 명령 매개변수를 허용하지 않습니다. 다음만 실행합니다:```text /usr/bin/id

이렇게 하면 PoC를 통제된 상태로 유지하고 랩을 범용 웹 셸로 바꾸는 것을 피할 수 있습니다.

## 소스 패치 요약

관련 패치 동작은 패치된 버전이 RPC 메시지 본문을 복호화하려고 시도하기 전에 잘못된 대칭 키를 거부한다는 것입니다.

중요한 검증은 다음과 같습니다:```php
if (false === $sym_key || !is_string($sym_key) || strlen($sym_key) < 16) {
    return false;
}

이것은 실패한 RSA 복호화 결과가 예측 가능한 대칭 키 경로가 될 수 있는 취약한 폴백 동작을 방지합니다.

실질적인 결과는 다음과 같습니다:```text UpdraftPlus 1.26.4 → forged format=1 RPC message reaches command dispatch

UpdraftPlus 1.26.5 → failed symmetric key validation stops the forged message → command dispatch is not reached

이 랩은 또한 실제 UpdraftCentral 플러그인 업로드 명령 경로를 대상으로 하여 다운스트림 영향을 검증합니다.

관련 명령어 동작은 다음과 같습니다:```text
plugin.upload_plugin
→ base64 decode ZIP data
→ write temporary ZIP file
→ UpdraftCentral_Plugin_Upgrader->install()
→ activate_plugin()

패치된 버전은 이 명령 경로에 도달하기 전에 위조된 메시지를 차단합니다.

소스 수준 워크스루

이 섹션에서는 소스 코드 수준에서 취약한 경로를 설명하고 각 PoC 단계를 관련 UpdraftPlus / UpdraftCentral 동작에 매핑합니다.

이 랩은 가짜 취약 애플리케이션 경로에 의존하지 않습니다. 취약한 동작은 실제 UpdraftCentral RPC 리스너와 실제 UpdraftCentral 플러그인 관리 명령 경로를 통해 도달합니다.

중요한 소스 영역은 다음과 같습니다:```text vendor/team-updraft/common-libs/src/updraft-rpc/class-udrpc2.php central/bootstrap.php central/listener.php central/commands.php central/modules/plugin.php

### 수신기 생성

취약한 RPC 경로는 WordPress가 다음을 포함하는 POST 요청을 수신할 때 시작됩니다:```text
udrpc_message
format
key_name

RPC 라이브러리는 해당 POST 필드가 존재할 때 WordPress wp_loaded에 리스너를 등록합니다.

개념적으로 흐름은 다음과 같습니다:```php if (!empty($_POST['udrpc_message']) && !empty($_POST['format'])) { add_action('wp_loaded', array($this, 'wp_loaded')); add_action('wp_loaded', array($this, 'wp_loaded_final'), 10000); }

이는 공격자가 특별한 REST 엔드포인트나 관리자 URL을 알 필요가 없음을 의미합니다. 위조된 RPC 요청은 WordPress 사이트 루트로 일반 POST 요청으로 전송됩니다.

PoC는 다음을 전송합니다:```text
POST /
format=1
key_name=0.central.updraftplus.com
udrpc_message=<crafted encrypted message>

요청은 합법적인 UpdraftCentral 원격 통신에 사용되는 동일한 리스너 경로에 도달합니다.

키 이름 일치

UpdraftCentral은 로컬 원격 제어 키를 WordPress 옵션에 저장합니다. 이 실습에서 설정 스크립트는 취약한 대상과 패치된 대상 모두에 대해 제어된 키 상태를 시드합니다.

도구 다운로드