Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

De la fuente al sumidero

5 tareas · 40 min · Principiante

La mayoría de los fallos de una aplicación tienen la misma forma: un dato que alguien de fuera controla llega, sin pasar por un control, a un lugar donde se interpreta. Revisar con método es seguir ese camino línea por línea en lugar de buscar palabras peligrosas. Curubital te entrega su módulo de reportes, la función de acceso a la base y una traza de ejemplo con el formato de su equipo.

0 de 5 · 0%

Objetivo de la sala

La mayoría de los fallos de una aplicación tienen la misma forma: un dato que alguien de fuera controla llega, sin pasar por un control, a un lugar donde se interpreta. Revisar con método es seguir ese camino línea por línea en lugar de buscar palabras peligrosas. Curubital te entrega su módulo de reportes, la función de acceso a la base y una traza de ejemplo con el formato de su equipo.

Una fuente es cualquier punto por donde entra un dato que el atacante puede elegir: un parámetro de la petición, una cabecera, un archivo subido, un mensaje de una cola que otro sistema llena. Un sumidero es el punto donde ese dato se usa en algo que lo interpreta: una consulta a la base, una ruta del sistema de archivos, un comando, una plantilla HTML. Entre los dos puede haber, o no, un control: una validación contra una lista cerrada, un parámetro separado del texto de la consulta, una codificación de salida.

El método consiste en elegir una fuente y seguirla por cada función que la recibe hasta el sumidero, anotando los pasos. Si el dato llega al sumidero sin un control que sirva para ese sumidero, hay hallazgo. Si hay un control, se comprueba que de verdad protege ese sumidero y no otro: validar que algo sea texto no sirve de nada frente a una ruta de archivos.

Responde para continuar

¿Cuándo hay un hallazgo en una traza de fuente a sumidero?

Ver pista de ayuda

El nombre de una función no dice nada; lo que importa es qué llega y qué lo detiene.

Abre el laboratorio y lee primero ejemplo-de-traza.txt: es el formato del equipo, hecho con el dato que viene de la sesión. Después haz lo mismo con los parámetros que lee costo_nomina() en app/reportes/rutas.py. Síguelos por servicio.py y consultas.py, y mira en app/bd.py qué viaja separado del texto de la consulta y qué no.

Responde para continuar

¿Qué parámetro de la petición llega pegado al texto de la consulta SQL sin ningún control en el camino? Escríbelo tal como se llama en la petición.

Ver pista de ayuda

Uno de los dos parámetros de esa ruta pasa por un diccionario antes de llegar; el otro no pasa por nada.

La segunda ruta del módulo devuelve un archivo. Sigue sus dos parámetros desde descargar() hasta send_file. Ojo con los nombres: dentro del código un valor puede cambiar de nombre al pasar de una función a otra, y lo que hay que reportar es el nombre con el que entra por la petición, que es el que el desarrollador buscará.

Responde para continuar

¿Qué parámetro de la petición termina dentro de la ruta del archivo que se envía, sin ningún control? Escríbelo tal como se llama en la petición.

Ver pista de ayuda

Dentro de servicio.py se llama de otra forma; vuelve a rutas.py para ver cómo se lee.

En consultas.py hay dos valores pegados al texto de la consulta, no uno. Un buscador de patrones marcaría los dos. La traza dice otra cosa: uno de ellos nunca lleva a la consulta lo que escribió el usuario, porque en el camino se cambia por un valor que eligió el programador. Ese control es el que tienes que nombrar, porque si alguien lo quita, el hallazgo aparece.

Responde para continuar

¿Qué constante del código hace que el valor de orden que llega pegado a la consulta no sea un hallazgo? Escribe su nombre.

Ver pista de ayuda

Busca el diccionario del que sale el valor que se pega al final de la consulta.

El control tiene que servir para el sumidero. Para la consulta, la respuesta conocida es mandar el valor como parámetro. Para la ruta del archivo, la entrada puede traer separadores de carpeta que la sacan de la carpeta prevista, y eso no lo resuelve escaparla ni limitar su longitud. Lo que sirve es construir la ruta final y comprobar que sigue dentro de la carpeta base, o no aceptar un nombre del usuario y buscar el archivo por un identificador propio.

Responde para continuar

¿Qué cambio cierra el hallazgo de la descarga de reportes?

Ver pista de ayuda

El problema no es el tamaño ni las comillas; es a qué carpeta termina apuntando la ruta.

Inicia sesión para registrar tus puntos y progreso en el ranking.

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