Cerrar la descarga anónima

CiberseguridadBeginner
Practicar Ahora

Introducción

Un pequeño equipo de soporte guarda ayuda pública y extractos de clientes en un mismo bucket. El portal normalmente firma las solicitudes para leer extractos; los visitantes solo deberían leer la ayuda. Una política incorrecta permite ahora descargar documentos internos de forma anónima. Limitarás el acceso sin eliminar datos del negocio.

Usa la pestaña Storage Admin en este laboratorio. Document Portal muestra la aplicación preparada; Portal App es su cuenta local independiente. Todos los documentos y las credenciales son sintéticos. VersityGW 1.10.0 es una pasarela local compatible con S3 que usa sus nombres de usuario internos como principales. Este laboratorio no reproduce AWS IAM ni Public Access Block a nivel de cuenta. Basta con un uso básico de la terminal; no necesitas una cuenta de nube.

Descargar un documento público normal

Selecciona la pestaña Storage Admin en la interfaz del laboratorio para comenzar este paso.

En este paso, obtendrás el documento de ayuda destinado a los visitantes.

Un bucket es una colección de objetos con nombre. Una clave de objeto es su nombre almacenado: public/help.txt usa un prefijo, public/, en lugar de permisos de directorio ordinarios. Aquí el bucket es documents. El endpoint http://127.0.0.1:7070 es el servicio de almacenamiento de esta VM.

curl realiza una solicitud HTTP. Sin credenciales, representa a un visitante anónimo. Ejecuta en la pestaña Storage Admin:

Cambia a la pestaña Storage Admin antes de ejecutar el siguiente comando.

curl -sS http://127.0.0.1:7070/documents/public/help.txt

-sS oculta el medidor de progreso, pero muestra errores de conexión. Espera Synthetic help: contact support through the portal. Ahora guarda una copia local útil con -o, que indica el archivo de salida:

curl -sS -o help.txt http://127.0.0.1:7070/documents/public/help.txt

Lee el documento local con cat:

cat help.txt

Debería aparecer el mismo texto de ayuda. Este es un acceso público normal. Cambia a la pestaña Document Portal y pulsa Open assigned document: el extracto sintético también está disponible para la aplicación que firma las solicitudes. El siguiente paso distingue ese uso legítimo de la exposición anónima.

Document Portal abre el extracto asignado con la identidad de la aplicación

Limitar la política anónima

Selecciona la pestaña Storage Admin en la interfaz del laboratorio para comenzar este paso.

En este paso, eliminarás las lecturas internas anónimas conservando la ayuda pública.

Primero solicita un extracto de forma anónima. -w añade el código de respuesta HTTP; \n inserta un salto de línea. 200 indica éxito. Un rechazo real por permisos es 403 con AccessDenied; un 404 o un error de conexión no demuestra protección.

Cambia a la pestaña Storage Admin antes de ejecutar el siguiente comando.

curl -sS -w '\nHTTP %{http_code}\n' http://127.0.0.1:7070/documents/portal/statement.txt

Ver el extracto y HTTP 200 demuestra la filtración. No lo elimines: el portal aún lo necesita.

AWS CLI puede comunicarse con la API compatible con S3. source carga las credenciales administrativas preparadas en esta terminal. Solo se aplican a esta VM de formación; repite el comando si abres una nueva sesión de Storage Admin.

source admin.env

Lee la política efectiva del servicio en ejecución. s3api selecciona operaciones de almacenamiento de objetos; --endpoint-url apunta a esta pasarela local en vez de AWS. --query Policy --output text muestra la cadena JSON de la política.

aws --endpoint-url http://127.0.0.1:7070 s3api get-bucket-policy --bucket documents --query Policy --output text

Una política JSON contiene una lista Statement. Effect: Allow concede una operación, Principal indica quién la recibe, Action nombra la operación y Resource los objetos. s3:GetObject significa leer un objeto. Principal: "*" incluye a visitantes anónimos. El recurso arn:aws:s3:::documents/* abarca todas las claves; el * final coincide con cualquier sufijo. La otra declaración concede por separado a portal-reader acceso a portal/*.

Usa nano para editar la copia preparada:

nano policy.json

Cambia únicamente el Resource de la declaración anónima de arn:aws:s3:::documents/* a arn:aws:s3:::documents/public/*. Conserva la declaración del portal con nombre. JSON requiere comillas dobles alrededor de las cadenas y comas entre campos. Guarda con Ctrl+O, pulsa Enter y sal con Ctrl+X.

Editar un archivo local no modifica el acceso. Aplícalo; file:// indica a la CLI que lea la política desde ese archivo:

aws --endpoint-url http://127.0.0.1:7070 s3api put-bucket-policy --bucket documents --policy file://policy.json

Una aplicación correcta no produce salida. Si el JSON es inválido, vuelve al editor, corrige comillas o comas y aplícalo de nuevo. Repite la solicitud anónima del extracto: espera AccessDenied y HTTP 403. Las solicitudes sin un permiso aplicable se deniegan por defecto. Una denegación general para todos también bloquearía el portal legítimo.

Conservar el portal y la ayuda pública

Selecciona la pestaña Storage Admin en la interfaz del laboratorio para comenzar este paso.

En este paso, demostrarás que la corrección conserva las lecturas útiles y los documentos sin cambios.

Vuelve a probar la ayuda pública con el comando anónimo del paso 1: debe devolver el texto original. En la pestaña Document Portal, vuelve a abrir Open assigned document. Espera el extracto y Identity: portal-reader.

Para probar la identidad directamente, configura credenciales para este único comando. Las asignaciones al principio solo afectan a ese comando, por lo que el entorno administrativo de la terminal seguirá disponible después. get-object descarga una clave al nombre de archivo local que aparece al final:

Cambia a la pestaña Storage Admin antes de ejecutar el siguiente comando.

AWS_ACCESS_KEY_ID=portal-reader AWS_SECRET_ACCESS_KEY=portal-reader-secret aws --endpoint-url http://127.0.0.1:7070 s3api get-object --bucket documents --key portal/statement.txt statement.txt

La CLI imprime metadatos del objeto. Lee el documento realmente descargado:

cat statement.txt

Espera Synthetic statement: account 1042, balance 75 credits. El mismo extracto almacenado está ahora disponible mediante una solicitud con nombre y se rechaza anónimamente. Si falla el portal, revisa la política efectiva: debe conservar su permiso con nombre, mientras el permiso anónimo debe terminar en public/*. Restaura y reaplica la política; eliminar objetos o detener el almacenamiento no cumple ambos requisitos.

Resumen

Has distinguido solicitudes anónimas de solicitudes firmadas del portal, limitado una política real y conservado la ayuda pública y los extractos. Una corrección correcta necesita tanto bloquear la exposición como mantener una ruta de negocio funcional.