Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2024-27630 — CVE-2024–27630 Referencia | Kitploit
Herramientas/GitHubGitHub/ally-petitt/cve-2024-27630
Análisis de VulnerabilidadesRecopilación de InformaciónSeguridad WebPruebas de PenetraciónPapers e InvestigaciónAprendizaje y Educación
GitHubally-petitt/cve-2024-27630

CVE-2024-27630

CVE-2024–27630 Referencia

Ver Repositorio
6hace 2 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Detalles de la Vulnerabilidad CVE-2024–27630

Resumen

En Savane v3.12 y anteriores, la falta de validación del parámetro file_id al eliminar un archivo de /bugs/index.php conduce a una vulnerabilidad de Referencia Directa a Objetos Insegura (IDOR) que puede hacer que un administrador autenticado de un grupo con un rastreador de errores elimine arbitrariamente archivos adjuntos de cualquier rastreador de errores, lo que provoca una falta de disponibilidad de estos archivos. Dado que los IDs de archivo se incrementan con cada nueva subida, es posible crear un script que elimine iterativamente todos los archivos adjuntos en el servidor mediante file_id.

Clasificación CWE: CWE-639: Omisión de Autorización a través de Clave Controlada por el Usuario

Reportado por: Ally Petitt

Producto Afectado: Savane

Versiones Afectadas: 3.12 y anteriores

Detalles Técnicos

La función responsable de eliminar archivos adjuntos en los rastreadores de errores es trackers_data_delete_file(), que se define en el bloque de código a continuación.

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 función comienza con una consulta SQL para verificar que el grupo al que pertenece el ID de error especificado en item_id es el grupo del que el atacante forma parte, conocido como $group_id. La función no comprueba si file_id también es parte del grupo, lo que significa que mientras item_id corresponda a un error válido en el grupo del atacante, este puede modificar file_id para que apunte a cualquier archivo dentro del directorio de subida /var/lib/savane/trackers_attachments.

Adicionalmente, esta función solo es accesible para administradores del rastreador de errores.

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;

Pasos de Validación

Estos pasos demuestran la eliminación de un archivo no autorizado; sin embargo, tenga en cuenta que un atacante podría automatizar la eliminación de todos los archivos por su ID, ya que son predecibles.

  1. Tenga una cuenta que sea administradora de un grupo con un rastreador de errores (cuenta atacante).
  2. Con una cuenta de usuario separada (víctima), suba un archivo adjunto en un informe de error a un grupo del cual el atacante no sea administrador. Un ejemplo del directorio de subida resultante es el siguiente, donde el archivo 40231 fue subido por la víctima:
root@60ae93fe131f:/var/lib/savane/trackers_attachments# ls
40226  40227  40230  40231
  1. Visite la página principal del grupo del cual el atacante es administrador. Luego, visite Bugs > Browse y observe un ID de elemento válido en la columna más a la izquierda de la tabla. Este ID se usará en el siguiente paso.

  2. Como atacante, haga una solicitud GET a la ruta /bugs/index.php?func=delete_file&item_id=<ATTACKER_ITEM_ID>&item_file_id=<FILE_ID_TO_DELETE>.

    En mi caso, esto se ve como http://172.17.0.2:7890/bugs/index.php?func=delete_file&item_id=50697&item_file_id=40231.

  3. Verifique que el archivo de la víctima (de un grupo sobre el cual el atacante no tiene privilegios) ha sido eliminado. Por ejemplo:

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

Mitigación

Actualice a Savane versión 3.13 o superior. El parche se puede encontrar aquí.

Descargar herramienta