Archivos de Sesión PHP

Los archivos de sesión PHP también pueden ser usados en un ataque LFI, llevando a RCE, particularmente si un atacante puede manipular la información de sesión. En una aplicación web típica, la información de sesión se guarda en archivos en el servidor. Si un atacante puede inyectar código malicioso en estos archivos de sesión y si la aplicación incluye estos archivos mediante una vulnerabilidad LFI, esto puede llevar a RCE.

Por ejemplo, la aplicación vulnerable hosteada en http://IP/sessions.php contiene el siguiente código:

php
if(isset($_GET['page'])){
    $_SESSION['page'] = $_GET['page'];
    echo "You're currently in" . $_GET["page"];
    include($_GET['page']);
}

Un atacante podría explotar esta vulnerabilidad inyectando código PHP en su variable de sesión usando <? echo phpinfo(); ?> en el parámetro de la página.

LFI2RCE - Session Files

El código es guardado en el archivo de sesión del servidor. Por ello, el atacante puede usar la vulnerabilidad LFI para incluir este archivo de sesión. Como los IDs de sesión son hasheados, el ID puede ser encontrado en las cookies del navegador.

LFI2RCE - Session Files

Acceder a la URL sessions.php?page=/var/lib/php/sessions/sess_[sessionID] ejecutará el código PHP inyectado en el archivo de sesión.

LFI2RCE - Session Files