Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2024-27630 — Riferimento CVE-2024–27630 | Kitploit
Strumenti/GitHubGitHub/ally-petitt/cve-2024-27630
Analisi delle VulnerabilitàRaccolta InformazioniSicurezza WebPenetration TestingPaper e RicercaApprendimento e Formazione
GitHubally-petitt/cve-2024-27630

CVE-2024-27630

Riferimento CVE-2024–27630

Vedi Repository
62 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Dettagli sulla vulnerabilità CVE-2024–27630

Panoramica

In Savane v3.12 e versioni precedenti, la mancanza di validazione del parametro file_id durante l'eliminazione di un file da /bugs/index.php porta a una vulnerabilità Insecure Direct Object Reference (IDOR) che consente a un amministratore autenticato di un gruppo con un bug tracker di eliminare arbitrariamente gli allegati file di qualsiasi bug tracker, causando l'indisponibilità di questi file. Poiché gli ID dei file incrementano a ogni nuovo caricamento, è possibile creare uno script che elimini iterativamente tutti gli allegati file sul server tramite file_id.

Classificazione CWE: CWE-639: Authorization Bypass Through User-Controlled Key

Segnalato da: Ally Petitt

Prodotto interessato: Savane

Versioni interessate: 3.12 e precedenti

Dettagli tecnici

La funzione responsabile dell'eliminazione degli allegati file nei bug tracker è trackers_data_delete_file(), definita nel blocco di codice seguente.

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

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]
    );

La funzione inizia con una query SQL per verificare che il gruppo del bug ID specificato in item_id sia il gruppo di cui l'attaccante fa parte, noto come $group_id. La funzione non verifica se anche file_id appartiene al gruppo, il che significa che finché item_id corrisponde a un bug valido nel gruppo dell'attaccante, quest'ultimo può modificare file_id per puntare a qualsiasi file nella directory di upload /var/lib/savane/trackers_attachments.

Inoltre, questa funzione è accessibile solo agli amministratori del bug tracker.

frontend/php/bugs/index.php:586

  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;

Passaggi di validazione

Questi passaggi dimostrano l'eliminazione di un file non autorizzato; tuttavia, si noti che un attaccante potrebbe automatizzare l'eliminazione di tutti i file tramite il loro ID, poiché questi sono prevedibili.

  1. Disporre di un account che sia amministratore di un gruppo con un bug tracker (account dell'attaccante).
  2. Con un account utente separato (vittima), caricare un allegato file in un bug report in un gruppo di cui l'attaccante non è amministratore. Un esempio della directory di upload successiva è il seguente, dove il file 40231 è stato caricato dalla vittima:
root@60ae93fe131f:/var/lib/savane/trackers_attachments# ls
40226  40227  40230  40231
  1. Visitare la homepage del gruppo di cui l'attaccante è amministratore. Quindi, andare su Bugs > Browse e annotare un Item ID valido nella colonna più a sinistra della tabella. Questo ID verrà utilizzato nel passaggio successivo.

  2. Come attaccante, effettuare una richiesta GET al percorso /bugs/index.php?func=delete_file&item_id=<ATTACKER_ITEM_ID>&item_file_id=<FILE_ID_TO_DELETE>.

    Nel mio caso, la richiesta era simile a http://172.17.0.2:7890/bugs/index.php?func=delete_file&item_id=50697&item_file_id=40231.

  3. Verificare che il file della vittima (da un gruppo su cui l'attaccante non ha privilegi) sia stato eliminato. Ad esempio:

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

Mitigazione

Aggiornare a Savane versione 3.13 o successiva. La patch è disponibile qui.

Scarica lo strumento