Impossibile caricare un file sulla pagina vulnerabile xss

2

Mi stavo chiedendo, se avessi uno script php, in grado di caricare un file, cosa succede se lo immetto in una pagina vulnerabile a Xss. Quindi, ne ho creato uno ed ecco il codice di index.php

<html>
    <body>
    <form action ="" method="GET">
    <input id="name" name="name">
    <input type="submit">
    </form>
    </body>
    <?php
    if(isset($_GET['name'])){
        echo $_GET['name'];
    }
    ?>
</html>

E, qui ho uno script php, che ho fatto per caricare un'immagine sul server.

<html>
    <body>

    <form action="" method="post" enctype="multipart/form-data">
        Select image to upload:
        <input type="file" name="fileToUpload" id="fileToUpload">
        <input type="submit" value="Upload Image" name="submit">
    </form>

    </body>


    </html>

    <?php
    $target_dir = "./";
    $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
    $uploadOk = 1;
    $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
    // Check if image file is a actual image or fake image
    if(isset($_POST["submit"])) {
        $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
        if($check !== false) {
            echo "File is an image - " . $check["mime"] . ".";
            $uploadOk = 1;
        } else {
            echo "File is not an image.";
            $uploadOk = 0;
        }
    }
    if ($uploadOk == 0) {
        echo "Sorry, your file was not uploaded.";
    // if everything is ok, try to upload file
    } else {
        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
            echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
        } else {
            echo "Sorry, there was an error uploading your file.";
        }
    }
    ?>

Ora, la mia domanda è: Che succede se inietto questo script in una pagina vulnerabile a Xss?
P.S : Ho provato a farlo, ma mi stavo reindirizzando a una pagina e il suo URL era data:, Non riesco a capire il problema esatto. E, se non il modo, sto facendo, è il loro qualsiasi altro modo per farlo?

    
posta M.S.P 18.03.2016 - 04:55
fonte

3 risposte

2

What if, I inject this script in a Page which is vulnerable to Xss?

Non è così che funziona. XSS significa che si inserisce il codice JavaScript, non il codice PHP . Se dovessi iniettare codice PHP, e sarebbe eseguito, sarebbe l'esecuzione del codice, non l'XSS.

XSS è una vulnerabilità che si verifica sul lato client. Ti permette di rubare dati che sono noti al browser degli utenti, ad esempio i cookie, per eseguire CSRF e quindi fare tutto ciò che l'hacker può fare e così via. Tutto ciò che un sito Web può fare con JavaScript, puoi farlo con XSS.

Ma non puoi cambiare ciò che accade sul lato server tramite XSS.

Naturalmente, se il server fornisce una funzionalità di caricamento delle immagini ed è vulnerabile a XSS, è possibile caricare un file tramite XSS, in quanto è possibile inviare richieste al server tramite JavaScript. Ma in questo caso non cambi il modo in cui funziona il server. Potresti anche caricare un file usando un browser. Il vantaggio qui è che puoi ottenere qualcun altro con più privilegi per caricare un file per te tramite XSS, tramite la funzionalità di caricamento già esistente.

    
risposta data 18.03.2016 - 11:46
fonte
1

In realtà dipende da quali tipi di vulnerabilità XSS è presente, se si tratta di una vulnerabilità XSS riflessa , allora non funzionerà.

Potrebbe funzionare se si tratta di una vulnerabilità XSS memorizzata sul sito Web.

Potresti ottenere maggiori informazioni qui - Tipi di xss

Guardando il tuo script, si tratta di una vulnerabilità di XSS riflessa, quindi non funzionerà.

    
risposta data 18.03.2016 - 05:03
fonte
1

Penso che probabilmente non puoi avere successo con un'iniezione di codice PHP dell'esempio che hai preso, che consiste solo di un php echo 'string datatype' in index.php.

Qui il tuo codice PHP iniettato è già considerato come tipo di dati stringa nella variabile $ _GET. E non può essere eseguito come codice PHP in questo esempio.

Anche se il codice php iniettato è costituito da una funzione eval () come <?php eval(phpinfo()); ?> o eval(phpinfo()) , il totale di esso sarà considerato una stringa e non eseguirà alcun codice PHP sul server.

Detto questo, puoi avere successo con l'iniezione di codice se lo script index.php originale avesse già qualcosa come echo eval($_GET['name'];) .

    
risposta data 18.03.2016 - 05:57
fonte

Leggi altre domande sui tag