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-2024-27630 — Referência CVE-2024–27630 | Kitploit
Ferramentas/GitHubGitHub/ally-petitt/cve-2024-27630
Análise de VulnerabilidadesColeta de InformaçõesSegurança WebTestes de PenetraçãoPapers e PesquisaAprendizado e Educação
GitHubally-petitt/cve-2024-27630

CVE-2024-27630

Referência CVE-2024–27630

Ver Repositório
1há 2 anosAinda 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

Detalhes da Vulnerabilidade CVE-2024–27630

Visão Geral

No Savane v3.12 e versões anteriores, a falta de validação no parâmetro file_id ao excluir um arquivo de /bugs/index.php leva a uma vulnerabilidade de Referência Direta a Objetos Insegura (IDOR) que pode fazer com que um administrador autenticado de um grupo com um rastreador de bugs exclua arbitrariamente anexos de arquivos de qualquer rastreador de bugs, resultando na indisponibilidade desses arquivos. Como os IDs dos arquivos incrementam a cada novo upload, é possível criar um script que exclua iterativamente todos os anexos de arquivos no servidor pelo file_id.

Classificação CWE: CWE-639: Bypass de Autorização por Chave Controlada pelo Usuário

Reportado por: Ally Petitt

Produto Afetado: Savane

Versões Afetadas: 3.12 e anteriores

Detalhes Técnicos

A função responsável por excluir anexos de arquivos nos rastreadores de bugs é trackers_data_delete_file(), que está definida no bloco de código abaixo.

frontend/php/include/trackers/data.php:2417

root@kitploit:~
function trackers_data_delete_file ($group_id, $item_id, $file_id)
{
  global $sys_trackers_attachments_dir;
  # Make sure the attachment belongs to the group.
  $res = db_execute ("
    SELECT bug_id from " . ARTIFACT . " WHERE bug_id = ? AND group_id = ?",
    [$item_id, $group_id]
  );
  if (db_numrows ($res) <= 0)
    {
      # TRANSLATORS: the argument is item id (a number).
      $msg = sprintf (
        _("Item #%s doesn't belong to project"), $item_id
      );
      fb ($msg, 1);
      return;
    }

  $result = false;
  # Delete the attachment.
  if (unlink ("$sys_trackers_attachments_dir/$file_id")) 
    $result = db_execute ("
      DELETE FROM trackers_file WHERE item_id = ?  AND file_id = ?",
      [$item_id, $file_id]
    );
Baixar ferramenta

A função começa com uma consulta SQL para verificar se o grupo ao qual pertence o ID do bug especificado em item_id é o grupo do qual o atacante faz parte, conhecido como $group_id. A função não verifica se o file_id também faz parte do grupo, o que significa que, desde que o item_id corresponda a um bug válido no grupo do atacante, o atacante pode modificar o file_id para apontar para qualquer arquivo no diretório de upload /var/lib/savane/trackers_attachments.

Além disso, esta função só é acessível aos administradores do rastreador de bugs.

frontend/php/bugs/index.php:586

root@kitploit:~
  case 'delete_file':
    # Remove an attached file.
    if ($is_trackeradmin)
      {
        trackers_data_delete_file($group_id, $item_id, $item_file_id);

         # Unset previous settings and return to the item.
         $depends_search = $reassign_change_project_search = $add_cc
           = $input_file = $changed = $vfl = $details = null;
         include '../include/trackers_run/mod.php';
      }
    else
      exit_permission_denied ();
    break;

Etapas de Validação

Estas etapas demonstram a exclusão de um arquivo não autorizado; no entanto, observe que um atacante poderia automatizar a exclusão de todos os arquivos pelos seus IDs, já que eles são previsíveis.

  1. Tenha uma conta que seja administradora de um grupo com um rastreador de bugs (conta do atacante).
  2. Com uma conta de usuário separada (vítima), envie um anexo de arquivo em um relatório de bug para um grupo do qual o atacante não é administrador. Uma amostra do diretório de upload resultante é a seguinte, onde o arquivo 40231 foi enviado pela vítima:
root@kitploit:~
root@60ae93fe131f:/var/lib/savane/trackers_attachments# ls
40226  40227  40230  40231
  1. Visite a página inicial do grupo do qual o atacante é administrador. Em seguida, visite Bugs > Browse e observe um ID de Item válido na coluna mais à esquerda da tabela. Este ID será usado na próxima etapa.

  2. Como atacante, faça uma requisição GET para o caminho /bugs/index.php?func=delete_file&item_id=<ATTACKER_ITEM_ID>&item_file_id=<FILE_ID_TO_DELETE>.

    No meu caso, isso se parece com http://172.17.0.2:7890/bugs/index.php?func=delete_file&item_id=50697&item_file_id=40231.

  3. Verifique se o arquivo da vítima (de um grupo sobre o qual o atacante não tem privilégios) foi excluído. Por exemplo:

root@kitploit:~
root@60ae93fe131f:/var/lib/savane/trackers_attachments# ls
40226  40227  40230

Mitigação

Atualize para a versão 3.13 ou superior do Savane. O patch pode ser encontrado aqui.