Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Del cliente al servidor: la API es la superficie de verdad

5 tareas · 40 min · Principiante

Esta es la sala que gobierna la ruta. Todo lo anterior —el secreto embebido, el dato local, el tráfico, los controles que ceden al engancharlos— apuntaba aquí: el cliente es una sugerencia, y la frontera real es la API. El servidor tiene que asumir que el cliente miente, porque cualquiera puede modificarlo, y validar cada petición por su cuenta. Se trabaja contra la API de respaldo de Colibrí en la nube, con el proxy para repetir y modificar peticiones. Cada tarea toma un control que parecía estar en la aplicación y comprueba si el servidor lo sostiene; cuando no lo sostiene, el arreglo va en el servidor, no en la app. La conclusión que hay que llevarse de toda la ruta: arreglar el cliente sin arreglar la API no cierra nada.

0 de 5 · 0%

Objetivo de la sala

Esta es la sala que gobierna la ruta. Todo lo anterior —el secreto embebido, el dato local, el tráfico, los controles que ceden al engancharlos— apuntaba aquí: el cliente es una sugerencia, y la frontera real es la API. El servidor tiene que asumir que el cliente miente, porque cualquiera puede modificarlo, y validar cada petición por su cuenta. Se trabaja contra la API de respaldo de Colibrí en la nube, con el proxy para repetir y modificar peticiones. Cada tarea toma un control que parecía estar en la aplicación y comprueba si el servidor lo sostiene; cuando no lo sostiene, el arreglo va en el servidor, no en la app. La conclusión que hay que llevarse de toda la ruta: arreglar el cliente sin arreglar la API no cierra nada.

La aplicación de Colibrí muestra tus pedidos pidiéndolos a la API por su identificador. En el proxy cambias ese identificador por otro y el servidor te devuelve el pedido de otro cliente —con su nombre, su dirección y lo que compró—. La aplicación nunca te habría dejado pedir ese identificador, pero la aplicación no es la frontera: el servidor respondió sin comprobar que el pedido fuera tuyo. Es un control de acceso roto, y el impacto se mide por el alcance: si los identificadores son correlativos, se podrían recorrer todos.

El arreglo está en el servidor: en cada petición, comprobar que el recurso pedido pertenece a quien lo pide, con la identidad que sale de la sesión. Cambiar la aplicación para que «no deje» pedir otro identificador no cierra nada, porque el atacante no usa la aplicación.

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.

Preparando el escritorio…

Responde para continuar

Cambias el identificador de pedido en la API de Colibrí y el servidor te da el de otro cliente. ¿Dónde está el arreglo?

Ver pista de ayuda

La app no es la frontera. El atacante va directo a la API; la propiedad del recurso se comprueba en el servidor.

Al comprar en Colibrí, la aplicación manda a la API el artículo y también el precio que mostró en pantalla. En el proxy cambias ese precio a la mitad y el pedido se registra con el precio que tú enviaste. El servidor confió en un dato que el cliente controla. La pantalla puede mostrar el precio, pero el importe que se cobra tiene que decidirlo el servidor consultando su propio catálogo, ignorando lo que el cliente diga que vale.

El arreglo: el servidor calcula el precio a partir del identificador del artículo y su catálogo; el precio enviado por el cliente se descarta. Lo mismo vale para cantidades, descuentos y cualquier número con consecuencia económica.

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.

Preparando el escritorio…

Responde para continuar

Modificas en el proxy el precio que la app de Colibrí envía y el pedido se registra con tu precio. ¿Cómo se corrige?

Ver pista de ayuda

Todo número con consecuencia económica lo decide el servidor. El precio que envía el cliente no se confía.

En el módulo anterior abriste, enganchando la app, la pantalla de administración de Colibrí. Ahora lo compruebas contra la API: llamas directamente a la ruta de administración /interno/usuarios que encontraste en el análisis estático, con tu sesión de cliente normal. Si el servidor responde con la lista de usuarios, el control de acceso vivía únicamente en el cliente —en el botón que no se dibujaba— y no existía en el servidor. Si el servidor responde «no autorizado», el control estaba donde debía y la pantalla vacía era la prueba.

En Colibrí el servidor responde con los datos: confirmado, el «solo administradores» era interfaz. El arreglo es que cada ruta sensible verifique el rol en el servidor, derivado de la sesión, con la regla de denegar por defecto.

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.

Preparando el escritorio…

Responde para continuar

Llamas a la ruta de administración de Colibrí con tu sesión de cliente y el servidor devuelve los datos. ¿Qué confirma y cómo se cierra?

Ver pista de ayuda

Si el servidor sirve los datos a un cliente normal, no había control. Ocultar la ruta no es autorizar; el rol se verifica en el servidor.

Es tentador cerrar estos hallazgos endureciendo la aplicación: quitar la ruta del código, ofuscar, reforzar la detección de root. Ninguna de esas medidas cierra los fallos de esta sala, porque todas asumen que el atacante usa la aplicación tal como se distribuye. El atacante habla directamente con la API, con el proxy, sin pasar por la interfaz. Mientras el servidor confíe en identificadores ajenos, en precios del cliente o en un rol enviado, el fallo sigue abierto aunque la aplicación sea impecable. La corrección de toda la ruta se concentra en una idea: validar en el servidor todo lo que tenga consecuencia, tratando cada petición como potencialmente manipulada.

En el informe de Colibrí las remediaciones van al servidor —propiedad del recurso, precio desde catálogo, rol desde la sesión—; las mejoras del cliente se anotan aparte como lo que son: fricción útil, no cierre del fallo.

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.

Preparando el escritorio…

Responde para continuar

¿Por qué endurecer solo la aplicación de Colibrí no cierra los fallos de esta sala?

Ver pista de ayuda

El atacante no usa tu interfaz. Todo lo que tenga consecuencia se valida en el servidor; el cliente es fricción, no frontera.

Abre el laboratorio y repite contra la API de Colibrí la petición de un pedido con un identificador que no es el tuyo. El servidor te devuelve el pedido de otro cliente: en la revisión de esa respuesta hay un código de la sala. Escríbelo tal cual.

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.

Preparando el escritorio…

Responde para continuar

Pide a la API un pedido con un identificador ajeno; en la respuesta que devuelve el pedido de otro cliente, escribe el código de la sala anotado.

Formato esperado: MOV-____

Ver pista de ayuda

El código acompaña a la respuesta del control de acceso roto (el pedido ajeno), no a la del precio alterado ni a la de la ruta de administración.

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

Preparando el escritorio…

16:24
Terminal (user@whoami)
user@whoami:~$
Tab Autocompletar ↑/↓ Historial
bash 5.2.21
Whoami-Labs OS v3.0.1 LTS · build bcc89e

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