
WooCommerce용 SMS 및 OTP, 주문 알림 및 버려진 장바구니 복구 플러그인 for WordPress; SMS Alert <3.9.6; 인증되지 않은 권한 상승(강제 비밀번호 재설정)

SMS Alert ≤ 3.9.5 — 인증되지 않은 임의 비밀번호 재설정을 통한 권한 상승
WordPress 플러그인 SMS Alert – SMS & OTP for WooCommerce, Order Notifications & Abandoned Cart Recovery의 심각한 인증 결함입니다. 비밀번호 재설정에 OTP 검증이 활성화된 경우, 인증되지 않은 호출자가 전화번호가 등록된 사용자(관리자 포함)의 새 비밀번호를 설정할 수 있으며, 해당 전화번호의 소유를 증명할 필요가 없습니다.
| CVE | CVE-2026-11387 |
| CWE | CWE-287: Improper Authentication |
| CVSS 3.1 | 9.8 Critical (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| 공급업체 | Cozy Vision Technologies Pvt. Ltd. |
| 제품 | SMS Alert (sms-alert) |
| 영향 범위 | 3.9.5까지의 모든 버전 |
| 패치 버전 | 3.9.6 (2026년 6월 27일) |
| CNA | Wordfence |
이 저장소는 승인된 테스트 전용 Abraxas Labs 개념 증명(PoC)을 보관합니다 — 공급업체 공개, 실험실 재현, 또는 서면 허가를 받은 호스트에 한합니다.
SMS Alert는 WooCommerce / WordPress 비밀번호 분실 흐름에 후크하여 SMS로 전송된 일회용 코드가 새 비밀번호를 승인하도록 설계되었습니다. 영향을 받는 버전에서 option=smsalert-change-password-form 뒤의 핸들러는 호출자가 OTP 검증을 완료했는지 또는 계정을 소유하고 있는지 확인하지 않고 smsalert_user_newpwd를 적용합니다.
공식 CVE 기록은 동일한 신원 확인 누락이 피해자의 이메일 주소를 변경한 후 일반적인 재설정을 통해 계정을 탈취하는 데에도 사용될 수 있음을 지적합니다. 두 경로 모두 인증되지 않은 계정 탈취입니다.
사이트는 다음 두 가지 조건이 모두 충족될 때만 노출됩니다:
billing_phone).이러한 조건에서 영향은 선택한 계정의 완전한 손상입니다. 관리자 계정 탈취는 사이트 전체 손상입니다.
| 조건 | 결과 |
|---|---|
| 인증되지 않은 네트워크 접근 | WordPress 자격 증명 불필요 |
| 대상이 쇼핑객 / 구독자 | 해당 고객의 계정 탈취 |
| 대상이 관리자 | wp-admin으로의 권한 상승, 플러그인/테마 설치, 지속적 악성코드 |
기밀성, 무결성, 가용성 모두 높음: 공격자는 주문 및 개인정보를 읽고, 사이트 콘텐츠와 사용자를 변경하며, 정당한 소유자를 잠글 수 있습니다.
SMS Alert의 비밀번호 재설정은 대략 다음과 같습니다:
비밀번호 분실 요청 → 사용자 전화로 OTP 전송 → 검증된 비밀번호 변경 POST
문제가 있는 단계는 마지막 단계입니다. 플러그인은 $_REQUEST['option'] == 'smsalert-change-password-form'(3.9.5의 class-wpresetpassword.php 참조)에서 라우팅한 후 제출된 비밀번호를 기록합니다. 해당 POST를 이전 OTP 세션, nonce, 또는 호출자가 재설정에 명시된 사용자임을 증명하는 기능 검사에 바인딩하지 않습니다.
이 개념 증명은 해당 핸들러에 머무릅니다:
wc_reset_password가 설정된 상태로 WooCommerce /my-account/lost-password/ 및 /wp-login.php?action=lostpassword에 POST하여 피해자 사용자 이름에 대한 플러그인의 재설정 경로에 진입합니다.option=smsalert-change-password-form과 함께 smsalert_user_newpwd / smsalert_user_cnfpwd를 /, /my-account/lost-password/, wp-login 비밀번호 분실 액션에 POST합니다. password-reset=true를 포함한 Location 헤더는 성공으로 간주됩니다.wp-login.php를 시도하여 실험실 실행이 실제 탈취와 실패(OTP 옵션 꺼짐 또는 사용자에게 전화번호 없음)를 구분할 수 있게 합니다.OTP는 제출되지 않습니다. 이것이 버그입니다.
CVE-2026-11387-WooCommerce-SMS-OTP-Abraxas-Labs.py는 작은 Python 3 클라이언트입니다: 컬러 배너, 그 다음 위의 세 단계. 명령줄에서 전달한 URL에만 통신합니다.
requestsHomebrew Python(PEP 668)을 사용하는 macOS에서는 시스템 pip install 대신 venv를 사용하세요:
python3 -m venv .venv
.venv/bin/pip install requests
CVE-2026-11387-WooCommerce-SMS-OTP-Abraxas-Labs.py <base_url> <victim_username> [new_password]
.venv/bin/python3 CVE-2026-11387-WooCommerce-SMS-OTP-Abraxas-Labs.py \
https://shop.example \
admin
세 번째 인자는 적용할 비밀번호를 설정합니다. 기본값은 abr4x4s#L4b5입니다.
인자 없이 실행하면 스크립트는 배너와 사용법을 출력한 후 1로 종료합니다. 이는 클라이언트가 시작되는지 확인하는 안전한 방법입니다.
대상 WordPress 사이트는 SMS Alert ≤ 3.9.5가 실행 중이어야 하며, 재설정 시 OTP가 활성화되어 있어야 하고, 피해자 사용자 이름에는 OTP용 전화번호가 이미 있어야 합니다. 패치된 3.9.6+ 사이트 또는 전화번호가 없는 사용자에 대해서는 로그인 확인이 실패할 것으로 예상됩니다.
소유하지 않았거나 서면 승인을 받지 않은 호스트에는 이 도구를 사용하지 마십시오.
wp-admin 세션을 신뢰할 수 없는 것으로 취급하세요.class-ultimatemember.php (Trac)연구 및 교육 목적으로만 사용하십시오. 이 저장소를 호스팅하는 당사자와 대상 시스템 소유자 모두의 명시적 서면 허가 없이 어떤 호스트에 대해서도 이 자료를 실행, 배포 또는 사용하지 마십시오.
Abraxas Labs · abraxaslabs.tech · github.com/abraxas · @abraxas_null