Saltar al contenido
Lectura5 minPreview

Bienvenida al curso

Bienvenido a OWASP A03: inyección. Esta línea es del registro de acceso del buscador de trámites de una municipalidad ficticia:

203.0.113.77 - - [14/Oct/2026:22:41:09 -0600] "GET /tramites/buscar?q=%27+OR+%271%27%3D%271 HTTP/1.1" 200 48211

Decodificada, la búsqueda dice ' OR '1'='1. Lo grave no es el intento, que tarde o temprano le llega a cualquier buscador público, sino el final de la línea: código 200 y 48 211 bytes, cuando una búsqueda normal devuelve unos pocos miles. La consulta devolvió la tabla entera. Eso delata el código: alguien pegó el texto del usuario dentro de la sentencia SQL, y la base de datos no tuvo forma de distinguir el dato de la instrucción.

Ese mismo error, mezclar datos con instrucciones, explica también la inyección de comandos y el XSS. Aquí lo escribe, lo revisa, lo corrige y lo detecta en registros como el de arriba.

Qué va a lograr

  • Explicar por qué la inyección SQL, la de comandos y el XSS nacen del mismo error: mezclar datos con instrucciones.
  • Reconocer en código Python y Flask los patrones vulnerables y sus versiones seguras.
  • Revisar código con el método de los sumideros, grep, Bandit y Semgrep.
  • Corregir con consultas parametrizadas, llamadas sin shell, codificación de salida y CSP, y demostrarlo con pruebas en pytest.
  • Detectar intentos en registros de acceso y WAF, y redactar un reporte de hallazgo con CWE y OWASP ASVS.

Para quién es y qué necesita

Para quien desarrolla, revisa código o trabaja en un SOC y quiere entender la inyección desde la raíz. Conviene haber hecho Seguridad web con OWASP Top 10 y leer algo de Python; si nunca ha programado, empiece por Python para ciberseguridad.

Necesita Python 3.10 o superior, una terminal (Bash o PowerShell) y un editor como VS Code. Semgrep se instala con pip en el módulo 2; en algunos equipos con Windows da problemas, y en ese caso el laboratorio se completa con Bandit y grep.

Cómo está organizado

MóduloQué aprendeLaboratorio
1. Qué es la inyección y por qué pasaDatos e instrucciones, historia, CWE, contextos, y las herramientas Python, sqlite3, Flask y curlEscribir su tienda vulnerable en localhost
2. Cómo se ve en el código y cómo se revisaSQL y execute, subprocess, Jinja2, grep, Bandit y SemgrepRevisar código con Bandit y Semgrep
3. Cómo se previene y se corrigeParametrizar, mínimo privilegio, evitar la shell, CSP, validación, ASVS y pytestCorregir la tienda y probarlo con pytest
4. Detectar, monitorear y reportarRegistros, WAF, eventos de seguridad, reglas Sigma y la conclusiónDetectar intentos y redactar el reporte
Evaluación6 preguntas sobre todo el cursoAprueba con 70 %

Cómo aprovecharlo

Todo gira alrededor de Café Tarrazú Lab, una tienda de tres funciones que usted escribe en el primer laboratorio con una inyección distinta en cada una: SQL, comandos y XSS. Escriba la consulta concatenada a mano, sin copiarla: así la reconoce después en un pull request ajeno.

El laboratorio del módulo 3 es el que más tiempo pide: corregir las tres funciones y escribir pruebas en pytest que fallen contra la versión vulnerable. Si una prueba pasa antes y después de corregir, no prueba nada.

La evaluación final tiene 6 preguntas; con 70 % recibe el certificado y la insignia del curso.

Tiempo estimado

Unas 5 horas en total. Reserve unos 45 minutos sin interrupciones para cada laboratorio.