Remote Code Execution en Lambda
Última actualización
Última actualización
¿Crees tener lo que se necesita para ser un experto en Pentesting contra AWS? Si nuestro libro te abrió los ojos a las posibilidades de la ciberseguridad ofensiva o si ya cuentas con habilidades en este campo, es momento de subir de nivel. Te retamos a certificarte en el CPNA - Curso Profesional de Pentesting Contra AWS. No será fácil: te enfrentarás a un examen riguroso de 12 horas donde deberás hackear una infraestructura completa alojada en AWS. ¿Listo para el desafío? Acepta el reto y demuestra tu verdadero potencial.
Este escenario presenta una lambda vulnerable a Remote Code Execution y nos muestra como nosotros debemos abordar esta vulnerabilidad en un entorno serverless totalmente cloud.
Primero, debemos el EndPoint encargado de ejecutar la lambda:
Teniendo en cuenta el código fuente de la lambda, podemos apreciar la existencia del parámetro cmd y este debe ser concatenado al endpoint previamente identificado:
En la evidencia previa, podemos apreciar el retorno del comando whoami y ls.
Si durante una auditoria de seguridad identificas un endpoint que se comunica con una lambda y este es vulnerable a ataques de inyección de comandos o RCE; es recomendable intentar ejecutar el siguiente comando:
Los tiempos de ejecución de Lambda establecen varias variables de entorno durante la inicialización. La mayoría de las variables de entorno proporcionan información sobre la función o el tiempo de ejecución. Las claves para estas variables de entorno están reservadas.
Por medio del RCE, hemos logrado obtener las variables de entorno de la lambda y estas contienen unas credenciales relacionadas al rol de ejecución de la función.
Vamos a autenticarnos con estas credenciales para validar los permisos obtenidos por medio de este rol comprometido.
En este punto, el atacante tendría que realizar una enumeración para identificar sus permisos y posteriormente si es necesario proceder realizar una Escalacion de privilegios en IAM