Tutorial "Abierto al público" CTF

Tutorial "Abierto al público" CTF - Codelivly

Recientemente me lo pasé muy bien jugando CTF pentesting.cloud y en esta publicación de blog quiero comenzar una nueva serie de tutoriales sobre los desafíos más interesantes en mi humilde opinión. Comenzaré con el difícil desafío llamado "Abierto al público".

Este desafío no requiere ninguna configuración y a primera vista su descripción no aporta mucha información:

No se requieren archivos para este desafío. El indicador es una clave de acceso de AWS.

La clave de acceso NO está en este dominio, no intente listar/hackear este sitio o será baneado permanentemente.

Hay varios tipos de recursos de AWS que se pueden hacer públicos. gaitero scott creó la lista de estos tipos de recursos que se pueden encontrar aquí. Pero para poder encontrar todo lo relacionado con el desafío, necesitamos al menos el ID de la cuenta de AWS. Si ya completó otro desafío de pentesting.cloud (por ejemplo, el desafío de introducción), puede notar que todos los archivos relacionados con el desafío se almacenan en el depósito S3 llamado pentesting-desafíos-público. Hay una investigación interesante sobre cómo determinar el ID de la cuenta de AWS a partir del nombre del depósito público 🤯 Los autores de la investigación también han lanzado la herramienta de código abierto que hace la magia por usted. Entonces intentemos:

Ahora, verifiquemos si la misma cuenta se usó para compartir algo más que objetos simples en el depósito S3. Empecemos por encontrar la instantánea pública de EBS. Puede utilizar la Consola de administración de AWS para buscar instantáneas públicas de EBS. Además, puede utilizar el filtro Owner = 943126763185 :

¡¡¡Bingo!!! Como puede ver arriba, hay una instantánea de EBS compartida públicamente. Copie el ID de la instantánea y exploremos su contenido.

Primero, debe tener una instancia EC2 en ejecución (una instancia t2.micro de nivel gratuito con la configuración predeterminada funcionará bien aquí). Sin embargo, no puede adjuntar directamente la instantánea a la instancia EC2. Primero debe crear un volumen de EBS a partir de la instantánea (tenga en cuenta que el volumen debe crearse en la misma zona de disponibilidad que su instancia EC2 en ejecución; de lo contrario no podrá alcanzarlo). Para hacer esto, vaya a la Consola de administración de AWS y luego: Sservicio -> EC2 -> Volúmenes -> Crear volumen -> Especificar snapshotid personalizado... y proporcione la ID de la instantánea compartida:

Una vez que se ha creado el volumen, ahora es el momento de adjuntarlo a la instancia EC2 en ejecución (en la Consola de administración de AWS: Sservicios -> EC2 -> Acciones -> Adjuntar volumen y elija su ID de instancia EC2 aquí):

Luego, conéctese a su instancia EC2 (en mi ejemplo, utilicé AWS Session Manager), busque el volumen adjunto (comando: lsblk) y montarlo en su sistema de archivos (comando: sudo mount [device] [mount point]):

Intuitivamente fui a /residencia directorio telefónico. En el .bash_history archivo, puede ver que el usuario SMS sistema operativo usado raíz usuario:

Así que vamos a comprobar el las raices .bash_history carpetas:

Hmmm... todavía no veo una bandera, pero al menos puedo ver una fecha en la que se tomaron todas estas acciones (tenga en cuenta que, según el resultado de ls -al comando, es posible que descubra que el .bash_history el expediente fue modificado el 24 de agosto). Entonces, en lugar de inspeccionar todos los archivos en el volumen montado, filtraremos solo aquellos que se modificaron después del 23 de agosto (puede hacerlo ejecutando el siguiente comando: find /mnt/ -type f -mtime -xx donde -xx es el número de días que se modificaron los archivos). Esto encontró 165 archivos.

Por la descripción del desafío, sabemos que:

"(...) la bandera es una clave de acceso de AWS"

En la documentación oficial, puede encontrar información que indica que las claves de acceso de AWS utilizan los prefijos AKIA o ASIA. Si tu corres grep ^AKIA contra todos los archivos modificados después del 23 de agosto, finalmente encontrará la bandera en el /mnt/var/lib/amazon/ssm/i-022903e02a0fed192/session/orchestration/sso-admin-087e79117eb921608/Standard_Stream/ipcTempFile.log carpetas:

Como puedes ver todos los comandos de sesión de SSM y sus resultados se almacenan localmente en el archivo en

/var/lib/amazon/ssm/[instance ID]/session/orchestration/[SSM session ID]/Standard_Stream/ipcTempFile.log

Los registros pueden ser revelados fácilmente por cualquier persona con permisos para la instantánea de EBS compartida. En otras palabras, cualquier secreto recuperado o pasado como parámetro puede exponerse involuntariamente a través de los registros locales de SSM.

La bandera también se puede recoger de otra forma. Echemos un vistazo una vez más a la/mnt/root/.bash_history archivo, en particular las últimas acciones realizadas por el usuario root:

# cat /mnt/root/.bash_history
...
python3 flag.pyc
rm -f flag1.zip
rm -f flag1.bz2
rm -f flag.pyc
rm -f flag.py
ls
rm -f flag*
ls
cd ec2-user/
ls
rm -f *
ls ../ssm-user/
exit

Como podéis ver bandera* los archivos han sido eliminados. ¿Pero eso significa que se han eliminado de forma permanente? Si lee el documento técnico oficial "Descripción general de los procesos de seguridad", puede leer que:

Una instantánea de EBS es una vista a nivel de bloque de un volumen de EBS completo. Tenga en cuenta que los datos que no son visibles a través del sistema de archivos en el volumen, como los archivos que se han eliminado, pueden estar presentes en la instantánea de EBS.

Esto significa que debería poder restaurar los archivos eliminados. Para probarlo, usaré la herramienta PhotoRec, que es una herramienta gratuita de recuperación de archivos. Se puede instalar fácilmente en una instancia de Amazon Linux usando los siguientes comandos:

# amazon-linux-extras install epel -y
# yum update -y
# yum install testdisk -y

Ejecutemos PhotoRec y elijamos el volumen montado para restaurar los archivos eliminados:

Dado que el volumen está montado como un sistema de archivos XFS, no verá los nombres de archivo restaurados (EXT4 funcionaría mejor aquí). Sin embargo, dado que sabemos que la bandera es una clave de acceso de AWS, podemos buscar en todos los archivos restaurados. Como puede ver a continuación, la bandera ha sido "inyectada" en el texto de Lorem Ipsum:

El desafío "Abierto al público" no solo es muy divertido, sino que también se enfoca en importantes riesgos de seguridad. Podemos aprender de esto:

  • todos los comandos de sesión de SSM y sus resultados se almacenan localmente,
  • los archivos eliminados de los volúmenes de EBS se pueden restaurar (los volúmenes de EBS se borran después de la terminación).

Estén atentos y pronto publicaré más tutoriales de desafíos de pentesting.cloud 😉

Si quieres conocer otros artículos parecidos a Tutorial "Abierto al público" CTF puedes visitar la categoría Tutoriales.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas