No se puede cargar un archivo en una página vulnerable xss

2

Me preguntaba, si tengo un script php, que podría cargar un archivo, Qué pasa si lo inyecto en una página que es vulnerable a Xss. Entonces, creé uno y aquí está el código de 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>

Y, aquí tengo un script de PHP, que hice para cargar una imagen en el servidor.

<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.";
        }
    }
    ?>

Ahora, mi pregunta es: ¿Qué pasa si inyecto este script en una página que es vulnerable a Xss?
P.S : intenté hacerlo, pero me redirigieron a una página y su URL era data:, No puedo encontrar el problema exacto. Y, si no es así, lo estoy haciendo. ¿Hay alguna otra forma de hacerlo?

    
pregunta M.S.P 18.03.2016 - 04:55
fuente

3 respuestas

2
  

¿Qué pasa si inyecto este script en una página que es vulnerable a Xss?

No es así como funciona. XSS significa que inyectas código JavaScript, no código PHP . Si inyectara código PHP y se ejecutara, sería ejecución de código, no XSS.

XSS es una vulnerabilidad que ocurre en el lado del cliente. Le permite robar datos conocidos por el navegador de los usuarios, por ejemplo, las cookies, para realizar CSRF y, por lo tanto, hacer todo lo que pueda hacer el atacante, etc. Todo lo que un sitio web puede hacer con JavaScript, puede hacerlo con XSS.

Pero no puede cambiar lo que sucede en el servidor a través de XSS.

Por supuesto, si el servidor proporciona una funcionalidad de carga de imágenes, y es vulnerable a XSS, puede cargar un archivo a través de XSS, ya que puede enviar solicitudes al servidor a través de JavaScript. Pero en ese caso no cambias el funcionamiento del servidor. Podrías subir un archivo usando un navegador. La ventaja aquí es que puede conseguir que otra persona con más privilegios cargue un archivo a través de XSS, a través de la funcionalidad de carga ya existente.

    
respondido por el tim 18.03.2016 - 11:46
fuente
1

En realidad, depende de los tipos de Vulnerabilidad de XSS, si es una Vulnerabilidad Reflejada XSS , entonces no funcionará.

Podría funcionar si es una vulnerabilidad XSS almacenada en el sitio web.

Puede obtener más información aquí: Tipos de xss

Mirando tu script, es una vulnerabilidad reflejada de XSS, por lo que no funciona.

    
respondido por el Darsh Patel 18.03.2016 - 05:03
fuente
1

Creo que probablemente no puedas tener éxito con una inyección de código PHP del ejemplo que has tomado, que consiste en solo un php echo 'string datatype' en index.php.

Aquí su código PHP inyectado ya se considera como un tipo de datos cadena en la variable $ _GET. Y no se puede ejecutar como código PHP en este ejemplo.

Incluso si el código php inyectado consiste en una función eval () como <?php eval(phpinfo()); ?> o eval(phpinfo()) , el total se considerará una cadena y no ejecutará ningún código PHP en el servidor.

Habiendo dicho eso, puedes tener éxito con la inyección de código si el script original index.php ya tenía algo como echo eval($_GET['name'];) .

    
respondido por el Sravan 18.03.2016 - 05:57
fuente

Lea otras preguntas en las etiquetas