
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: 부적절한 인증 |
| CVSS 3.1 | 9.8 치명적 (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 개념 증명을 포함합니다 - 공급업체 공개, 실험실 재현, 또는 평가에 대한 서면 허가를 받은 호스트에 한합니다.
SMS Alert는 WooCommerce / WordPress 비밀번호 분실 흐름을 후킹하여 SMS로 전송된 일회용 코드가 새 비밀번호를 게이트하도록 합니다. 영향을 받는 버전에서 option=smsalert-change-password-form 뒤의 핸들러는 호출자가 OTP 검증을 완료했거나 해당 계정을 소유하고 있는지 확인하지 않고 smsalert_user_newpwd를 적용합니다.
공식 CVE 기록은 동일한 신원 확인 누락을 이용하여 피해자의 이메일 주소를 변경한 후 일반 재설정을 통해 계정을 탈취할 수 있다고도 언급합니다. 두 경로 모두 비인증 계정 탈취입니다.
사이트는 다음 두 가지 조건이 모두 참일 때만 노출됩니다:
billing_phone).이러한 조건에서 영향은 선택된 계정의 완전한 침해입니다. 관리자 탈취는 사이트 전체 침해입니다.
| 조건 | 결과 |
|---|---|
| 비인증 네트워크 접근 | WordPress 자격 증명 불필요 |
| 대상이 쇼퍼 / 구독자 | 해당 고객의 계정 탈취 |
| 대상이 관리자 | wp-admin으로의 권한 상승, 플러그인/테마 설치, 지속적 악성코드 |
기밀성, 무결성, 가용성 모두 높음: 공격자는 주문 및 PII를 읽고, 사이트 콘텐츠와 사용자를 변경하며, 정당한 소유자를 잠글 수 있습니다.
SMS Alert를 사용한 비밀번호 재설정은 대략 다음과 같습니다:
lost-password request → OTP to the user’s phone → verified change-password POST
깨진 단계는 마지막입니다. 플러그인은 $_REQUEST['option'] == 'smsalert-change-password-form'으로 라우팅하고(3.9.5의 class-wpresetpassword.php 참조) 제출된 비밀번호를 기록합니다. 이 POST를 호출자가 재설정에 명시된 사용자임을 증명할 사전 OTP 세션, nonce 또는 capability 검사에 바인딩하지 않습니다.
이 개념 증명은 해당 핸들러에 머뭅니다:
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 lost-password 액션에 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