AWS - Elastic Beanstalk Privesc
Elastic Beanstalk
Más información sobre Elastic Beanstalk en:
AWS - Elastic Beanstalk EnumPara realizar acciones sensibles en Beanstalk, necesitarás tener muchos permisos sensibles en muchos servicios diferentes. Puedes verificar, por ejemplo, los permisos otorgados a arn:aws:iam::aws:policy/AdministratorAccess-AWSElasticBeanstalk
elasticbeanstalk:RebuildEnvironment
, permisos de escritura en S3 y muchos otros
elasticbeanstalk:RebuildEnvironment
, permisos de escritura en S3 y muchos otrosCon permisos de escritura sobre el bucket de S3 que contiene el código del entorno y permisos para reconstruir la aplicación (se necesita elasticbeanstalk:RebuildEnvironment
y algunos más relacionados con S3
, EC2
y Cloudformation
), puedes modificar el código, reconstruir la aplicación y la próxima vez que accedas a la aplicación, ejecutará tu nuevo código, lo que permite al atacante comprometer la aplicación y las credenciales del rol IAM de la misma.
elasticbeanstalk:CreateApplication
, elasticbeanstalk:CreateEnvironment
, elasticbeanstalk:CreateApplicationVersion
, elasticbeanstalk:UpdateEnvironment
, iam:PassRole
, y más...
elasticbeanstalk:CreateApplication
, elasticbeanstalk:CreateEnvironment
, elasticbeanstalk:CreateApplicationVersion
, elasticbeanstalk:UpdateEnvironment
, iam:PassRole
, y más...Los mencionados junto con varios permisos de S3
, EC2
, cloudformation
, autoscaling
y elasticloadbalancing
son necesarios para crear un escenario básico de Elastic Beanstalk desde cero.
Crear una aplicación de AWS Elastic Beanstalk:
Crear un entorno de AWS Elastic Beanstalk (plataformas compatibles):
Si un entorno ya está creado y no quieres crear uno nuevo, simplemente puedes actualizar el existente.
Empaqueta tu código de aplicación y dependencias en un archivo ZIP:
Subir el archivo ZIP a un bucket de S3:
Crear una versión de la aplicación de AWS Elastic Beanstalk:
Implementa la versión de la aplicación en tu entorno de AWS Elastic Beanstalk:
elasticbeanstalk:CrearVersiónDeAplicación
, elasticbeanstalk:ActualizarEntorno
, cloudformation:ObtenerPlantilla
, cloudformation:DescribirRecursosDePila
, cloudformation:DescribirRecursoDePila
, autoscaling:DescribirGruposDeEscalamientoAutomático
, autoscaling:SuspenderProcesos
, autoscaling:SuspenderProcesos
elasticbeanstalk:CrearVersiónDeAplicación
, elasticbeanstalk:ActualizarEntorno
, cloudformation:ObtenerPlantilla
, cloudformation:DescribirRecursosDePila
, cloudformation:DescribirRecursoDePila
, autoscaling:DescribirGruposDeEscalamientoAutomático
, autoscaling:SuspenderProcesos
, autoscaling:SuspenderProcesos
En primer lugar, necesitas crear un entorno legítimo de Beanstalk con el código que te gustaría ejecutar en la víctima siguiendo los pasos anteriores. Potencialmente un zip simple que contenga estos 2 archivos:
Una vez que tengas tu propio entorno de Beanstalk en funcionamiento con tu rev shell, es hora de migrarlo al entorno de la víctima. Para hacerlo, necesitas actualizar la Política del Bucket de tu bucket S3 de Beanstalk para que la víctima pueda acceder a él (Ten en cuenta que esto abrirá el Bucket a TODOS):
Last updated