¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Fundamentos de DVWA

Aquí está la lección completa para leer. Crea una cuenta gratuita para practicarla en un laboratorio en vivo.

Laboratorio de contenedores5 min de lectura1 comando

Qué vas a hacer

Una página web pide información a una base de datos con una pregunta escrita en un lenguaje llamado SQL. Si la página pega lo que escribes directamente dentro de esa pregunta, puedes cambiar la pregunta. Eso se llama inyección SQL y es uno de los fallos más comunes de la web. DVWA te deja hacerlo sin peligro y después te enseña la solución.

La única regla

Advertencia

Este laboratorio ejecuta una página web insegura a propósito. Ataca solo esa web y nada más. Es tu copia privada, sin salida a internet, así que no puede afectar a nadie. No pruebes nunca estas cosas en una web que no sea tuya: en el Reino Unido es un delito según la ley británica Computer Misuse Act 1990.

Antes de empezar

Nota

Pulsa Iniciar el laboratorio en la barra de la parte superior de esta lección y espera hasta que diga que está en marcha. La página web se abre desde el enlace DVWA de la barra. Cada botón Ejecutar de abajo escribe su comando en el terminal de tu laboratorio, uno detrás de otro y en la misma sesión. Para verlos, o para escribir los tuyos, pulsa Abrir el terminal (pestaña nueva) en la barra.

1. Comprueba que la página funciona

La barra del laboratorio dice que el laboratorio está en marcha. Ahora comprueba la página: este comando pide su página de inicio de sesión desde tu terminal, y 200 significa que ha respondido.

Comando
curl -s -o /dev/null -w "%{http_code}\n" http://dvwa/login.php

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

2. Inicia sesión

Pulsa el enlace DVWA de la barra del laboratorio e inicia sesión como admin con la contraseña password. En el menú de la izquierda elige DVWA Security y comprueba que pone low (bajo).

3. Haz una pregunta normal

En el menú elige SQL Injection. Escribe 1 en la casilla User ID y pulsa Submit (enviar). La página responde con un usuario: admin. Ha construido una pregunta como "dame el usuario cuyo ID es 1" con lo que escribiste.

4. Cambia la pregunta

Ahora escribe esto en la misma casilla y pulsa Submit:

1' OR '1'='1

La ' cortó antes de tiempo la pregunta de la página, y OR '1'='1 añadió una condición que siempre se cumple. Ahora responde con todos los usuarios: admin, Gordon, Hack, Pablo y Bob. Pediste uno y salieron todos, porque la página se fió de lo que escribiste.

5. Lee el código

Pulsa View Source (ver código) al final de la página. En el nivel low, el código mete tu texto directamente en la pregunta. Ese es el error.

6. Mira la solución

Elige DVWA Security, pon el nivel en impossible (imposible) y pulsa Submit. Vuelve a SQL Injection y escribe 1: sigue respondiendo con admin. Ahora escribe la línea del paso 4: no responde con nada. Pulsa View Source otra vez. El código comprueba que el ID sea un número. Envía la pregunta y tu texto por separado, así que tu texto solo puede ser un valor y nunca una parte de la pregunta. Esto se llama consulta parametrizada (parameterised query), y así es como una página web se protege de este ataque.

Para el profesorado

Consejo

Esta lección es un ejemplo pequeño de una lección practicada en un laboratorio: los pasos y los botones Ejecutar son la lección, y el laboratorio es la copia de cada alumno. DVWA tiene diez ejercicios más con los mismos cuatro niveles, así que el mismo laboratorio sirve para toda una unidad. Nada se califica automáticamente: pida una captura de cada ejercicio en low y en impossible, y una frase sobre qué cambió. Cópiela en su propio módulo y cámbiela, o cree una desde cero con el menú Laboratorio del editor de lecciones.

Sobre este laboratorio y su código: Laboratorio de DVWA: practica inyección SQL y XSS en la Damn Vulnerable Web Application

¿Enseñas a una clase? Asigna estas lecciones a tus estudiantes con calificación y un laboratorio para cada uno.