🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónInyección SQL clásica y su corrección
5 tareas · 35 min · Principiante
En la guía de pruebas web de OWASP, la inyección SQL es la prueba WSTG-INPV-05 (versión 4.2) y su debilidad se cataloga como CWE-89. Aquí no se lanza nada: lees la evidencia de una revisión ya hecha sobre el catálogo de Papelería Trapiche, una tienda en línea ficticia. Tienes las peticiones de prueba, el fragmento de código que arma la consulta, el log del servidor, los permisos de la cuenta de base de datos y la versión corregida. Tu trabajo es leer qué prueba cada pieza, señalar la causa y proponer la corrección que la elimina, no la que la esconde.
Objetivo de la sala
En la guía de pruebas web de OWASP, la inyección SQL es la prueba WSTG-INPV-05 (versión 4.2) y su debilidad se cataloga como CWE-89. Aquí no se lanza nada: lees la evidencia de una revisión ya hecha sobre el catálogo de Papelería Trapiche, una tienda en línea ficticia. Tienes las peticiones de prueba, el fragmento de código que arma la consulta, el log del servidor, los permisos de la cuenta de base de datos y la versión corregida. Tu trabajo es leer qué prueba cada pieza, señalar la causa y proponer la corrección que la elimina, no la que la esconde.Una consulta SQL tiene dos partes que no deberían mezclarse: la estructura (qué se pide y de dónde) y los valores (qué se busca). Cuando el código arma la consulta uniendo texto con lo que escribió la persona, ese valor puede dejar de ser un valor y pasar a ser parte de la estructura. La prueba más pequeña para saberlo es enviar un carácter que tiene significado en la sintaxis, como una comilla, y mirar si la respuesta cambia de manera que solo se explica porque la consulta se rompió.
Lee peticiones.txt y log-de-depuracion.txt. Una comilla provoca un error y dos comillas no. Esa asimetría es la pista: no prueba que se pueda extraer nada, pero sí dice cómo trata el código lo que recibe.
Responde para continuar
En P-02 una comilla sola produce un error SQL y en P-03 dos comillas seguidas no lo producen. ¿Qué indica?
Ver pista de ayuda
Si la comilla cambia lo que la consulta significa, el valor no se está tratando como un dato.
La página recibe tres parámetros y no todos son igual de peligrosos. Un buen informe dice cuál lo es y por qué los otros no. Un valor que se compara contra una lista cerrada o se convierte a número antes de usarse no puede arrastrar sintaxis; uno que se concatena tal cual, sí. Esa diferencia se lee en el código, no en la interfaz.
Abre catalogo-codigo.txt y compara cómo trata cada parámetro antes de entrar en la consulta, y cruza con la tabla de peticiones.txt para ver que las pruebas lo confirman.
Responde para continuar
Escribe el nombre del único parámetro que el código une a la consulta sin tratarlo antes.
Ver pista de ayuda
Dos de los tres parámetros pasan por un filtro (una lista o una conversión a entero) antes de la consulta.
La corrección que elimina la causa es la consulta parametrizada: el código envía al motor la estructura con marcadores de posición y, por separado, los valores. El motor ya compiló la estructura cuando llegan los valores, así que nada de lo que contenga un valor puede alterarla. Es lo que recoge CWE-89 como mitigación principal.
Lo que no corrige la causa: filtrar caracteres sospechosos (siempre falta una variante), esconder el mensaje de error (el fallo sigue ahí) o confiar en que nadie lo encuentre. Esas medidas son capas adicionales, no la solución. Un caso aparte son los nombres de columna o de orden, que no se pueden enviar como valor: se resuelven con una lista de valores permitidos, como hace catalogo-corregido.txt.
Responde para continuar
¿Qué corrección elimina la causa de una inyección SQL en el código de la tienda?
Ver pista de ayuda
La causa es que dato y estructura viajan mezclados en el mismo texto.
La inyección es peor o menos grave según lo que pueda hacer la cuenta con la que la aplicación abre la base de datos. El principio de mínimo privilegio dice que esa cuenta solo debe poder lo que el código necesita. Cuando un fallo de inyección se combina con permisos de más, el daño potencial crece, y por eso el informe lo anota como un hallazgo propio aunque nadie lo haya explotado.
En permisos-bd.txt tienes lo que la cuenta puede leer y, debajo, lo que el equipo de desarrollo dice que usa cada página. Compara las dos listas.
Responde para continuar
Escribe el nombre de la tabla que la cuenta de la tienda puede leer y que ninguna página de la tienda usa.
Ver pista de ayuda
Una de las cuatro tablas con permiso de lectura no aparece en el inventario de uso del equipo de desarrollo.
Un hallazgo de inyección se redacta con lo mínimo que lo prueba: la petición, la respuesta, la línea de código si la hay, el impacto razonado y la corrección. No hace falta leer datos para demostrar que el fallo existe, y hacerlo suele violar las reglas de manejo de datos del contrato. El impacto se razona con lo que sí está en la evidencia, como los permisos de la cuenta, y no con lo que se podría haber extraído.
Responde para continuar
¿Qué evidencia dejas en el hallazgo del catálogo de Trapiche?
Ver pista de ayuda
Pregúntate qué es lo mínimo que alguien que no estuvo en la prueba necesita para verla otra vez y para arreglarla.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.