🐈‍⬛
H4CKdotCL
Laboratorio
  • 🪅Bienvenidos al Book
  • Certificaciones
    • ⏳Junior Penetration Tester - eJPTv2
    • 🥉Ethical Hacking Professional Certification - CEHPC
    • 🥉Cybersecurity Awareness Professional Certification - CAPC
  • Metodología y Fases de Hacking Ético
    • Metodologías
      • Metodología OWASP (Open Web Application Security Project)
      • Metodología PTES
      • Metodología ISSAF
      • Metodología OSSTMM
    • Recopilación Pasiva de Información
      • Sublist3r
      • Httpx
      • theHarvester
      • Google Dorks
      • Wafw00f
      • Shodan
      • Whatweb
    • Recopilación Activa de Información
      • enum4linux
      • Guía de uso para Gobuster
      • Nmap (Network Mapper)
      • Wfuzz
      • SecList
      • FFUF
      • SMBClient
      • CrackMapExec
      • SMBMap
      • WPScan
      • Steghide
      • subfinder
    • SQLMap
    • Hydra
  • Utilidades
    • Docker: Potenciando Laboratorios de Pentesting
    • 📖Ejemplos de informes de Hacking Ético y auditoría de seguridad
  • Vulnerabilidades Web
    • IDOR (Insecure Direct Object Reference)
    • SSRF (Server-Side Request Forgery)
    • CSRF (Cross-Site Request Forgery)
    • File Upload Vulnerabilities
    • LFI (Local File Inclusion)
    • RFI (Remote File Inclusion)
    • XSS (Cross-Site Scripting)
    • XXE (XML External Entity)
    • Template Injections
    • Clickjacking
    • Broken Access Control
    • SQL Injection (Inyección SQL)
    • NoSQL Injection (Inyección NoSQL)
    • LDAP Injection (Inyección LDAP)
    • Log Poisoning
    • Open Redirect Bypass
Con tecnología de GitBook
En esta página

¿Te fue útil?

  1. Vulnerabilidades Web

Log Poisoning

🌐 Vulnerabilidad: Log Poisoning (Envenenamiento de Registros)


🕵️‍♂️ ¿Qué es Log Poisoning?

Log Poisoning es una vulnerabilidad en la que un atacante manipula las entradas registradas en los archivos de registro (logs) de una aplicación para inyectar contenido malicioso. Este contenido puede incluir scripts o comandos que se ejecuten si los logs son procesados de manera insegura o utilizados en otros contextos (como visualización, análisis o carga en otra aplicación).


⚙️ ¿Cómo se produce?

  1. Falta de sanitización en los datos de entrada:

    • La aplicación registra directamente las entradas del usuario en los logs.

  2. Inyección de código o comandos maliciosos:

    • El atacante manipula entradas para incluir código malicioso.

  3. Ejecución de los logs comprometidos:

    • Cuando los logs se procesan sin validación, el código malicioso puede ejecutarse.


🛠️ Mecanismo de ataque

Ejemplo: Una aplicación web registra la dirección IP de los usuarios en un archivo de logs:

<?php
    $ip = $_SERVER['REMOTE_ADDR'];
    error_log("Acceso desde IP: $ip");
?>

El atacante envía una solicitud modificada para que la dirección IP registrada sea:

127.0.0.1 <?php system('cat /etc/passwd'); ?>

El log ahora contiene:

Acceso desde IP: 127.0.0.1 <?php system('cat /etc/passwd'); ?>

Si estos logs son leídos y procesados por un sistema que ejecuta código PHP, el comando cat /etc/passwd se ejecutará, exponiendo información confidencial.


🎯 Impacto

  • Ejecución de código remoto (RCE): Si los logs se procesan como código, el atacante puede ejecutar comandos en el servidor.

  • Inyección de scripts: Scripts maliciosos pueden inyectarse en las herramientas de monitoreo o visualización de logs.

  • Manipulación de datos: Un atacante puede insertar datos falsos para ocultar sus actividades.

  • Escalamiento de privilegios: En sistemas que procesan logs como entradas válidas para otras operaciones.


📉 Puntaje CVSS v3

  • Vector de ataque: Red

  • Complejidad del ataque: Media

  • Impacto en confidencialidad: Alto

  • Impacto en integridad: Alto

  • Impacto en disponibilidad: Medio

  • Puntaje CVSS v3: 7.5 - 9.0 (Alto - Crítico) 🔥


🧑‍💻 Ejemplo práctico

Código vulnerable:

<?php
    $username = $_GET['username'];
    error_log("Usuario intentó iniciar sesión: $username");
?>

Ataque: El atacante envía como username:

<script>alert('XSS');</script>

Log generado:

Usuario intentó iniciar sesión: <script>alert('XSS');</script>

📌 Si los logs se muestran en una interfaz web sin sanitización, este código se ejecutará en el navegador, generando un ataque XSS.


🛡️ ¿Cómo prevenir Log Poisoning?

1️⃣ Sanitización de entradas

Limpia todas las entradas antes de registrarlas en los logs:

<?php
    $username = htmlspecialchars($_GET['username'], ENT_QUOTES, 'UTF-8');
    error_log("Usuario intentó iniciar sesión: $username");
?>

2️⃣ Uso de formatos seguros

Asegúrate de que los logs no se procesen como código ejecutable. Por ejemplo:

  • Usa texto plano para registros en lugar de formatos interpretables como JSON o XML.

  • Si usas JSON, escapa caracteres especiales:

<?php
    $username = json_encode($_GET['username']);
    error_log("Usuario intentó iniciar sesión: $username");
?>

3️⃣ Separación de responsabilidades

Evita que los mismos sistemas que registran datos sean responsables de procesarlos. Usa herramientas específicas para análisis de logs con validación adicional.

4️⃣ Restricciones de acceso a los logs

Asegúrate de que los archivos de logs solo sean accesibles por usuarios autorizados:

chmod 600 /var/log/app.log

5️⃣ Auditoría y monitoreo de logs

Revisa periódicamente los logs para identificar patrones sospechosos o entradas maliciosas.

6️⃣ Deshabilitar ejecución de scripts en directorios de logs

Configura el servidor para que no ejecute scripts almacenados en directorios de logs. Por ejemplo, en Apache:

<Directory "/var/logs">
    php_admin_flag engine Off
</Directory>

7️⃣ Uso de herramientas seguras de manejo de logs

Usa bibliotecas o frameworks que manejen los logs de manera segura:

  • Monolog en PHP.

  • Winston en Node.js.

  • Log4j (configurado correctamente) en Java.


💡 Dato extra: Aunque Log Poisoning no siempre lleva directamente a una explotación, puede ser un paso inicial en un ataque más complejo, como RCE, XSS, o manipulación de análisis forense.

🚨 Nota importante: La vulnerabilidad puede combinarse con otras fallas, como LFI (Local File Inclusion), para ejecutar código desde los logs.

AnteriorLDAP Injection (Inyección LDAP)SiguienteOpen Redirect Bypass

Última actualización hace 6 meses

¿Te fue útil?