🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónInyeccion de comandos en el sistema
4 tareas · 20 min · Principiante
La misma clase de fallo de la sala anterior —una entrada del usuario que se mezcla con instrucciones sin separar— cambia de destino y de consecuencia cuando el sink no es una base de datos sino el interprete de comandos del sistema operativo. En Rividata el archivo de herramientas pasa un parametro directo a una llamada del sistema. Se localiza, se clasifica como inyeccion de comandos y se arregla; no se ejecuta ningun comando.
Objetivo de la sala
La misma clase de fallo de la sala anterior —una entrada del usuario que se mezcla con instrucciones sin separar— cambia de destino y de consecuencia cuando el sink no es una base de datos sino el interprete de comandos del sistema operativo. En Rividata el archivo de herramientas pasa un parametro directo a una llamada del sistema. Se localiza, se clasifica como inyeccion de comandos y se arregla; no se ejecuta ningun comando.En herramientas.php de Rividata el valor $_GET['host'] se concatena dentro de una llamada a shell_exec, que ejecuta lo que reciba en el interprete de comandos de la maquina. Como el dato del usuario y el comando viven en la misma cadena, el sistema no distingue uno de otro: cualquier cosa que el usuario anada a host se interpreta como mas comando. El auditor lo reconoce por el destino —el interprete del sistema— y por la concatenacion, igual que con el SQL pero con consecuencias sobre el servidor entero.
Abre el archivo y mira donde termina $host: dentro de la cadena que se le entrega a shell_exec.
Esta tarea se hace en el laboratorio
Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.
Responde para continuar
En herramientas.php, por que la llamada a shell_exec es peligrosa?
Ver pista de ayuda
El destino de la entrada no es una base de datos, es el interprete de comandos del sistema.
La tentacion es filtrar los caracteres que encadenan comandos —el punto y coma, la barra vertical, el acento grave— y seguir concatenando. No basta: hay muchas formas de escribir lo mismo y de encadenar ordenes, y siempre se escapa una. El arreglo que cierra la clase entera es no construir una linea de comando con la entrada: usar una funcion que reciba el programa y sus argumentos por separado, de modo que el usuario nunca pueda anadir otra orden. El auditor recomienda eso, no una lista negra.
Como con el SQL, el patron del arreglo bueno es separar el dato de la instruccion, no intentar adivinar todo lo peligroso que podria escribir alguien.
Esta tarea se hace en el laboratorio
Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.
Responde para continuar
Que arreglo recomiendas para la inyeccion de comandos de herramientas.php?
Ver pista de ayuda
Filtrar caracteres siempre deja un hueco; el arreglo bueno no deja que la entrada sea comando.
Que dos fallos compartan patron no significa que compartan clasificacion ni arreglo. La consulta de catalogo.php es inyeccion SQL (CWE-89) y se cierra con una consulta parametrizada; la llamada de herramientas.php es inyeccion de comandos (CWE-78) y se cierra separando los argumentos del comando. El auditor los reporta por separado porque desarrollo los arregla en sitios distintos y con tecnicas distintas. Mezclarlos en un solo hallazgo esconde uno de los dos.
Reconocer que el patron es el mismo y la clasificacion distinta es lo que convierte la lectura de codigo en una auditoria util.
Esta tarea se hace en el laboratorio
Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.
Responde para continuar
Como clasificas el fallo de herramientas.php frente al de catalogo.php?
Ver pista de ayuda
El patron es el mismo, pero el destino manda: uno va a la base de datos y otro al sistema.
El hallazgo de la inyeccion de comandos tiene su propia nota de triaje en Rividata, con el archivo, el parametro, la clasificacion CWE-78 y el arreglo. Abrela en el laboratorio, confirma que describe la llamada a shell_exec de herramientas.php y lee el codigo del hallazgo con el que cierra.
Esta tarea se hace en el laboratorio
Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.
Responde para continuar
Abre la nota de triaje de la inyeccion de comandos de Rividata (carpeta auditoria) y escribe el codigo del hallazgo que la cierra.
Ver pista de ayuda
Es la nota del parametro host en herramientas.php, no la de la inyeccion SQL del catalogo.
Preparando el escritorio…
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.