EditExistingLambdaFunctionWithRole
Lab: IAM vulnerable
Última actualización
Lab: IAM vulnerable
Última actualización
En este apartado se observará el ejemplo utilizando el laboratorio IAM vulnerable con el escenario privesc17. Para la correcta elevación de privilegios, depende de la interacción de otro usuario o de que la función actualizada sea ejecutada.
Un atacante con el permiso lambda:UpdateFunctionCode podría actualizar el código en una función Lambda existente con un rol de IAM adjunto para que importara la biblioteca de AWS relevante en ese lenguaje de programación y la usara para realizar acciones en nombre de ese rol.
Usuario del laboratorio: privesc17- EditExistingLambdaFunctionWithRole-user con los permisos:
La cuenta de AWS debe contener una función Lambda existente, con un rol adjunto que tenga el permiso iam:AttachUserPolicy.
Tambien es necesario tener en la infraestructura de pruebas un lambda ya configurado con cualquier funcionalidad con el rol a cual se va a asociar:
Posterior mente generar llaves e acceso desde cuenta administrador para interactuar con el usuario en AWS CLI y configurar un perfil para el usuario del laboratorio
En este escenario, se va a utilizar el privilegio del usuario lambda:UpdateFunctionCode para actualizar una función de lambda existente y añadirle código malicioso encargado de adjuntar una política de altos privilegios a nuestro usuario inicial.
La función lambda maliciosa es la siguiente.
Para subir el archivo de la nueva función lambda se usará el permiso lambda:UpdateFunctionCode es necesario llamar el archivo lambda_function.py y luego comprimir el archivo en formato zip con el nombre function.zip. Después ejecutar el código:
Cuando se ejecuta la función, se elevan los privilegios del atacante. Si el atacante tiene el permiso lambda:InvokeFunction, entonces es posible simplemente invocar la función directamente. De lo contrario, ocurrirá cuando otro usuario o servicio ejecute la función. En el siguiente ejemplo, otro usuario ejecuta la función.
El siguiente comando muestra a otro usuario de AWS invocando la lambda.
Finalmente ejecutando iam list attached user policies, podemos observar como el usuario inicial a ganado permisos de administrador: