No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

SQL Injection: Autenticación Bypass en Formularios

7/17
Recursos

¿Cómo ejecutar un SQL Injection para autenticarte en un formulario?

La técnica de SQL Injection continúa siendo una de las vulnerabilidades más críticas en el ámbito de la seguridad web. Este método permite a un atacante entrar a una plataforma sin un usuario ni contraseña real. Es fundamental aprender esta técnica no para causar daño, sino para entender sus mecanismos y cómo prevenirla. A continuación, veremos cómo puedes llevar a cabo este método utilizando una máquina virtual en TryHackMe, donde practicarás y comprenderás la técnica.

¿Cómo configurar una máquina virtual en TryHackMe?

Para empezar, iniciaremos en TryHackMe y buscaremos la máquina apropiada para practicar SQL Injection. Seleccionamos "SQL Injection Lab" y seguimos las instrucciones relacionadas con "Broken Authentication". Esta vulnerabilidad nos permite bypassar la seguridad a través de un SQL Injection, específicamente creando un entorno controlado y seguro para experimentar sin riesgos.

  1. Iniciar la máquina: Damos clic en "Start Machine".
  2. Configurar VPN: Conectarse a la dirección IP generada mediante una VPN, cuyos detalles de configuración se encuentran en los recursos mencionados.
  3. Acceder a la aplicación web: Una vez copiada la dirección IP, es fundamental ingresar a través del puerto especificado, en este caso, el puerto 5000, para tener acceso a la aplicación web.

¿Cómo realizar un SQL Injection en el login?

Al acceder a la aplicación web, el siguiente paso es realizar un SQL Injection para eludir la autenticación. Este método sencillo modifica las instrucciones SQL para acceder al sistema.

' OR 1=1 -- 
  1. Introducir la inyección: En el campo de usuario del formulario, introduce una comilla simple seguida de "OR 1=1" y comenta el resto de la línea.
  2. Contraseña aleatoria: En el campo de la contraseña, puedes ingresar cualquier cosa, como "xx", para pasar cualquier validación básica del campo.

Esto permite al atacante autenticar sin usuario ni contraseña real al explotar una consulta SQL mal formulada, logrando acceder como administrador al sistema.

¿Cómo funciona técnicamente el SQL Injection?

La vulnerabilidad se explota manipulando la consulta SQL para que siempre retorne verdadero y permita el acceso:

  • Consulta normal: Se espera un input que coincida con un usuario y contraseña en la base de datos.
  • Consulta manipulada: La combinación de OR 1=1 hace que la condición del WHERE siempre sea verdadera, omitiendo la validación real del usuario.
SELECT id, username 
FROM users 
WHERE username = '' OR 1=1 -- 

¿Cómo protegerse ante SQL Injection?

Prevenir un SQL Injection es esencial para garantizar la seguridad de las aplicaciones web. Aquí te presento algunas medidas importantes:

  • Uso de consultas preparadas (prepared statements): Evita que el input del usuario afecte directamente las sentencias SQL.
  • Validación y saneamiento de inputs: Verifica y limpia las entradas para eliminar caracteres maliciosos.
  • Implementación de un firewall de aplicaciones web (WAF): Puede detectar y bloquear patrones típicos de SQL Injection.

Recuerda, un buen programador puede limitar estas vulnerabilidades, pero ninguna aplicación está 100% a salvo sin una vigilancia continua y auditorías de seguridad frecuentes. Es fundamental llevar a cabo estas prácticas en un ambiente controlado y siempre con el permiso correspondiente de la organización involucrada.

Aportes 6

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Hola futuros hackers!

Cuando alguien intenta foguearse y pulsa el botón, está enviando esa información a una sentencia SQL que será ejecutada contra la base de datos de la aplicación, una instrucción que podría ser similar a esta de acá:

$sql = SELECT * FROM usuarios WHERE usuario = ‘$usuario’ and password = ‘$pass’;

Aquí “$usuario” y “$pass” serían las variables que contienen los valores introducidos por el visitante.

El código del profe es una SQL Injection. La instrucción que ejecuta se salta esta autenticación cumpliendo una condición que siempre será TRUE. La SQL Injection comprueba en la tabla usuarios si hay alguien registrado con un determinado username y si su contraseña es una en especifico o bien que 1 sea igual a 1. Como esto segundo siempre es cierto, logaríamos entrar al sistema con el usuario sin saber su verdadera contraseña.

SQL Injection:
Try Hack Me > SQL Injection Lab > Broken Authentication 2

En el login escribir lo siguiente: ’ or 1=1 – -
Pasword: cualquiervalor

Porfavor poner el recurso de como configurar la VPN. Gracias

¿Como se mitigaria esto? Todavia no se mucho de SQL

Wow, es como volver al pasado. Tiene como emmm 2 meses que estaba tomando la clase, no tenia ni idea, en serio ni idea de como conectarme y ahora no me salgo de ese sitio, en verdad es muy bueno 100% recomendado.
Para Prevenir Ataques de SQL INJECTION Debera tomar estas Meidas : 1. Sanitizar las queries por parte del Cliente con >JS. \[ No es Suficiente , ALguien se podria meter @Chrome DevTools del Navegador y ver las solicitudes por el metodo post y alterar la logica del FrontEnd para soberepasar la validacion del FrontEnd] . 2. Sanitizar pro parte del Servidor : esto si que es mas efectivo , si usas php en el Lado del BackEnd , puedes usar la function validated() o >FIlter\_Var() para limpiar tus inputs de cualquier cosa maligna de un usuario malo. 3. Parametrizar las Queries . eso tambien ayuda mucho para evitar que se metan codigo SQL por los input form . 4. Separar muy Fuerte la Logica del FrontEnd != BackEnd . 5. Usar Frameworks y Bibliotecas aSeguras y Actualizadas.
![](https://static.platzi.com/media/user_upload/image-000665c1-22e3-43db-a090-b3aa8a3737f4.jpg)Este server esta outline toca actualizar el video gracias