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-2023-45878 — Exploit automatizado em Python para CVE-2023-45878, uma vulnerabilidade de upload de arquivo não autenticado no Gibbon CMS, permitindo execução remota de código através da implantação de webshell PHP com shell interativo e capacidades de transferência de arquivos. | Kitploit
Ferramentas/GitHubGitHub/can0i0ever0enter/cve-2023-45878
Geração de PayloadsAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoFerramenta de Acesso Remoto
GitHubcan0i0ever0enter/cve-2023-45878

CVE-2023-45878

Exploit automatizado em Python para CVE-2023-45878, uma vulnerabilidade de upload de arquivo não autenticado no Gibbon CMS, permitindo execução remota de código através da implantação de webshell PHP com shell interativo e capacidades de transferência de arquivos.

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
Ver Repositório
3há 1 anoAinda não revisado

Exploit do Gibbon CMS (CVE-2023-45878)

Este script Python explora a CVE-2023-45878, uma vulnerabilidade de upload arbitrário de arquivo não autenticado no Gibbon CMS versões 25.0.1 e anteriores, levando à Execução Remota de Código (RCE).

Descrição da Vulnerabilidade

A CVE-2023-45878 existe no endpoint rubrics_visualise_saveAjax.php do Gibbon CMS. Este endpoint é vulnerável porque não exige autenticação e permite gravação arbitrária de arquivos.

A vulnerabilidade surge do seguinte:

  • Acesso não autenticado: O endpoint modules/Rubrics/rubrics_visualise_saveAjax.php é acessível sem qualquer autenticação.
  • Gravação arbitrária de arquivo: O endpoint aceita os parâmetros POST img, path e gibbonPersonID.
    • O parâmetro img deve conter dados formatados de forma especial, onde a parte após uma vírgula é uma string codificada em base64.
    • O parâmetro path, se fornecido, é usado como nome de arquivo de destino para o arquivo enviado, relativo ao diretório de instalação do Gibbon.
    • O script decodifica o conteúdo codificado em base64 do parâmetro img e o grava em um arquivo especificado pelo parâmetro path.
  • Execução Remota de Código: Ao criar um parâmetro img malicioso contendo código PHP codificado em base64 (por exemplo, <?php echo "{VERIFY_TAG}"; if(isset($_GET["cmd"])) {echo @shell_exec($_GET["cmd"]);} ?>) e especificar um path que resulte em um arquivo .php acessível via servidor web, um atacante pode enviar um webshell PHP e obter Execução Remota de Código no servidor vulnerável.

Funcionalidade do Script

Este script Python automatiza a exploração da CVE-2023-45878. Ele realiza as seguintes ações:

  1. Envio de Webshell PHP: Ele cria uma requisição POST maliciosa para modules/Rubrics/rubrics_visualise_saveAjax.php a fim de enviar um webshell PHP. O payload do webshell é <?php echo "{VERIFY_TAG}"; if(isset($_GET["cmd"])) {echo @shell_exec($_GET["cmd"]);} ?>, onde {VERIFY_TAG} é uma tag personalizável. O payload é codificado em base64 e enviado dentro do parâmetro img.
  2. Verificação do Shell: Ele pode verificar se o shell enviado está acessível e funcional, enviando uma requisição GET com um comando simples (por exemplo, cmd=echo) e verificando a presença da VERIFY_TAG na resposta. Ele também realiza uma pré-verificação de um shell existente se opções como --verify ou --interactive forem usadas.
  3. Modo Shell Interativo: Se o shell for enviado e verificado (ou encontrado durante uma pré-verificação), o script pode entrar em um modo interativo. Este modo apresenta:
    • Detecção do sistema operacional remoto (Windows/Linux) para adaptar comandos.
    • Um prompt dinâmico exibindo o usuário atual, hostname e diretório de trabalho remoto (por exemplo, user@host:cwd$).
    • Tratamento interno para o comando para alterar o diretório de trabalho remoto.

Uso

root@kitploit:~
python3 exploit.py <url_alvo> [opções]

Argumentos:

  • target_url: A URL base da instância do Gibbon CMS alvo. O script irá prefixar http:// se nenhum esquema for fornecido e garantirá uma barra no final (ex.: http://exemplo.com/gibbon ou exemplo.com/gibbon).

Opções:

  • -s <caminho_do_shell>, --shell-path <caminho_do_shell>: Especifique o caminho e nome de arquivo desejados para o shell enviado (ex.: shell.php, uploads/shell.php). Se omitido, um nome de arquivo aleatório de 8 caracteres com extensão .php será gerado no diretório base do Gibbon. Aviso: Certifique-se de que o caminho especificado seja gravável pelo servidor web e acessível via web.
  • -v, --verify: Após tentar enviar o shell, verifique se ele está funcionando. Esta opção também aciona uma pré-verificação para ver se já existe um shell com o nome e tag especificados; se sim, o envio é ignorado.
  • -i, --interactive: Entre no modo de shell interativo. Se o shell ainda não estiver presente (verificado por uma pré-verificação), ele será enviado e verificado primeiro.
  • -t <tag>, --tag <tag>: Especifique uma tag estática personalizada usada no payload do webshell para fins de verificação. (Padrão: ExploitGibbon).

Exemplos:

  • Exploit básico com nome de shell aleatório no diretório principal do Gibbon e tag padrão:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/
    
  • Exploit, especificar o nome do arquivo do shell my_shell.php no diretório principal do Gibbon e tag padrão:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s my_shell.php
    
  • Exploit, enviar o arquivo do shell backdoor.php para uploads/, verificar e usar uma tag personalizada:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s uploads/backdoor.php -v -t MinhaTagSecreta123
    
  • Exploit, enviar shell e entrar no modo interativo com tag padrão e timeout de 30 segundos:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s shell.php -i --timeout 30
    
  • Entrar no modo interativo com um shell existente (o script fará a pré-verificação de sua existência):

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s shell.php -t ExploitGibbon -i
    
  • Apenas verificar se um shell chamado existing_shell.php com a tag padrão está ativo (tentará enviar se não for encontrado):

Requisitos

  • Python 3.7+ (devido a f-strings, dicas de tipo, uso de dataclasses, pathlib)
  • Biblioteca requests: Instalar usando pip install requests
  • Biblioteca rich: Instalar usando pip install rich
  • Biblioteca prompt_toolkit (opcional, para modo interativo aprimorado): Instalar usando pip install prompt_toolkit

Aviso Legal

Este script é fornecido apenas para fins educacionais e de teste de segurança. Use-o por sua conta e risco e apenas contra sistemas para os quais você tenha permissão explícita para testar. O autor não se responsabiliza por qualquer uso indevido ou dano causado por este script. Explorar vulnerabilidades sem autorização é ilegal e antiético.

Referências

  • CVE-2023-45878 no NVD
  • Aviso de Segurança USD-2023-0025 da Herolab
  • Código Fonte do GibbonEdu Core (rubrics_visualise_saveAjax.php versão afetada v25.0.01)
Baixar ferramenta
cd
  • Comandos especiais do lado do cliente:
    • !help: Exibe ajuda para comandos interativos.
    • !upload <caminho_local> [caminho_remoto]: Envia um arquivo local para o servidor alvo através do webshell.
    • !download <caminho_remoto> [caminho_local]: Baixa um arquivo do servidor alvo.
    • !lcd <caminho>: Altera o diretório de trabalho local atual.
    • !ldir [caminho]: Lista arquivos e diretórios no diretório de trabalho local atual ou em um caminho especificado.
  • Utiliza a biblioteca prompt_toolkit se disponível para uma experiência de linha de comando aprimorada (histórico, melhor edição); caso contrário, usa a função input() embutida do Python.
  • Operações de Arquivos: O comando interativo !upload reutiliza o endpoint vulnerável para gravar arquivos arbitrários, enquanto o !download usa comandos do sistema executados via webshell (como base64 ou [Convert]::ToBase64String do PowerShell) para recuperar o conteúdo do arquivo.
  • --timeout <timeout>: Defina o tempo limite da requisição HTTP em segundos. (Padrão: 20).
  • root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s existing_shell.php -v