22 abr 2014

Creando un entorno vulnerable. Parte 3

Buenas a todos, continuando con la cadena de artículos sobre la creación de un entorno vulnerable, hoy vamos a construir una página web sencilla vulnerable a XPath Injections.

En primer lugar vamos a crearnos un archivo PHP en la raíz de nuestro servidor WAMP, y de igual manera que en las anteriores ocasiones, llamaremos a nuestro archivo "xpath1.php", matizando con el nº 1 el nivel técnico requerido para bypasear la vulnerabilidad.

Dentro del archivo introduciremos el siguiente código PHP, en el que incluiremos una variable con un XML, que a modo de BBDD guardará un usuario y una contraseña, y al que intentaremos acceder más adelante mediante Xpath:
<?php
$user = $_GET["user"];
$pass = $_GET["pass"];
$string = <<<XML
<users>
    <user>
        <username>admin</username>
        <password>fluprojectmola</password>
    </user>
</users>
XML;
$xml = new SimpleXMLElement($string);
$resultado = $xml->xpath("//users/user[username/text()='" . $user . "' and password/text()='" . $pass . "']");
if($resultado)
    echo 'Correcto';
else
    echo 'Incorrecto';
?>

Si intentamos acceder a la URL sin indicar ningún parámetro deberíamos ver un error como el siguiente:

Ya sabemos que la aplicación espera dos parámetros, "user" y "pass".

Si introducimos los parámetros correctamente, veremos por pantalla el mensaje "correcto":

Y de la misma manera, si los introducimos mal, nos saldrá el mensaje "incorrecto":

Si intentamos hacer una inyección sencilla, aunque no consigamos robar el usuario y contraseña, nos cantará la función utilizada para acceder a la BBDD XML:

Con estas pistas ya lo tenemos un poco más facil para acertar con una inyección válida:

Como veis en este caso ni es necesario introducir valor alguno en la variable "pass", y simplemente con una inyección de tipo "or 1=1" , y añadiendo otra expresión después para cerrar la comilla abierta, es más que suficiente para bypasear esta sencilla autenticación.

Bien, ya tenemos en nuestro entorno vulnerable tres páginas web, con fallos de seguridad de tipo XSS, SQL Injection y Xpath Injection de nivel 1. En el próximo post seguiremos ampliando nuestra máquina.

Saludos!

No hay comentarios:

Publicar un comentario