miércoles, 16 de abril de 2014

Creando un entorno vulnerable. Parte 2

Compartir este artículo:
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 SQL Injections.

En primer lugar crearemos una BBDD en Mysql, a la que llamaré "cursoseguridad". Dentro de ella crearé una serie de tablas típicas que tendría el sitio web de una organización, como por ejemplo, una tabla con los empleados que trabajan en la misma.



En segundo lugar vamos a programar una sencilla aplicación en PHP que devuelva por pantalla el nombre y apellidos de todos los empleados que tengan como nombre el texto pasado en el parémetro "nombre" por GET.
<?php
    $dbhost="localhost";
    $dbusuario="root";
    $dbpassword="";
    $db="cursoseguridad";
    $conexion = mysql_connect($dbhost, $dbusuario, $dbpassword);
    mysql_select_db($db, $conexion);
?>
<html>
    <head>
    </head>
    <body>
        <?php
            $query="SELECT * FROM empleados WHERE nombre='".$_GET["nombre"]."'";
            $resultado = mysql_query($query);
            if($fila = mysql_fetch_array($resultado))
            {
                do{
                    echo $fila[0].' - '.$fila[1].'<br/>';
                }while($fila = mysql_fetch_array($resultado));
            }
        ?>
    </body>
</html>


Si ponemos por ejemplo el texto Laura, nos pintará el nombre y apellidos de la única Laura que por el momento existe en BBDD:

Y si intentamos realizar una inyección sencilla del tipo "http://localhost/sqlinjection1.php?nombre=Laura%27%20or%20%271%27=%271", veremos como nos devuelve todos los campos de la tabla "empleados":


Eso es todo por hoy, nos vemos en el próximo post de la cadena.
Saludos!

martes, 15 de abril de 2014

Creando un entorno vulnerable. Parte 1

Compartir este artículo:
Buenas a todos, ahora que estamos de vacaciones y tenemos algo más de tiempo, queremos dar comienzo a una cadena de posts en la que construiremos nuestra propia máquina virtual vulnerable, para ayudar a toda la gente que esté aprendiendo seguridad de la información y que tenga un sistema al que poder atacar "sin meterse en lios" :)

Para comenzar he decidido montar una máquina virtual con Windows 7, por ser el sistema operativo más extendido. A lo largo de la cadena iremos configurando la máquina para que tenga el mayor número posible de fallos de configuración/seguridad.

En este primer post voy a instalar un servidor WAMP, con Apache y Mysql, para crear también un sitio web vulnerable (al estilo de badstore). Omitiré el paso de la instalación, ya que no supondrá ningún reto para vosotros, e iré directamente a la creación de un primer sitio web vulnerable.

Por cada tipo de vulnerabilidad web existente, iré generando una página que lleve como nombre la vulnerabilidad que expondrá, y continuando con un número de 1 a 5, indicando el nivel de la vulnerabilidad. Estas páginas las dejaremos en la carpeta "www" del wamp, donde hoy crearemos el fichero "xss1.php" (nivel 1-básico):


Esta aplicación PHP es uno de los ejemplos más sencillos que encontrarés de XSS:
<?php
    echo $_GET["id"];
?>
Consiste simplemente en mostrar por pantalla mediante la instrucción "echo", cualquier cosa que el usuario escriba en el parámetro "id":

Si el usuario no introduce ningún parámetro, el servidor devolverá un error, exponiendo la existencia del parámetro "id", y del cual está esperando que le indiquemos un valor para mostrar:

Y si inyectamos por ejemplo un script sencillo veremos como el sistema se lo come con patatas:


En la misma línea, también podríamos inyectar código HTML:

http://localhost/xss.php?id=%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody%3E%3Cimg%20src=%22https://pbs.twimg.com/profile_images/435322489552789504/pkPwgvTF.jpeg%22/%3E%3C/body%3E%3C/html%3E


Eso es todo por hoy, en el próximo post seguiremos con nuestro entorno vulnerable.

Saludos!
Related Posts Plugin for WordPress, Blogger...