AWS - Elastic Beanstalk Privesc
Elastic Beanstalk
Más info sobre Elastic Beanstalk en:
Para 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 app y la próxima vez que accedas a la app se ejecutará tu nuevo código, permitiendo 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 más 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 soportadas):
Si ya se ha creado un entorno y no quieres crear uno nuevo, puedes simplemente actualizar el existente.
Empaqueta tu código de aplicación y dependencias en un archivo ZIP:
Subir el archivo ZIP a un bucket S3:
Crear una versión de aplicación de AWS Elastic Beanstalk:
Despliega la versión de la aplicación en tu entorno de AWS Elastic Beanstalk:
elasticbeanstalk:CreateApplicationVersion
, elasticbeanstalk:UpdateEnvironment
, cloudformation:GetTemplate
, cloudformation:DescribeStackResources
, cloudformation:DescribeStackResource
, autoscaling:DescribeAutoScalingGroups
, autoscaling:SuspendProcesses
, autoscaling:SuspendProcesses
elasticbeanstalk:CreateApplicationVersion
, elasticbeanstalk:UpdateEnvironment
, cloudformation:GetTemplate
, cloudformation:DescribeStackResources
, cloudformation:DescribeStackResource
, autoscaling:DescribeAutoScalingGroups
, autoscaling:SuspendProcesses
, autoscaling:SuspendProcesses
Primero que nada, necesitas crear un entorno Beanstalk legítimo con el código que te gustaría ejecutar en la víctima siguiendo los pasos anteriores. Potencialmente un simple zip 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 los víctimas. Para hacerlo, necesitas actualizar la política del bucket de tu bucket S3 de Beanstalk para que el víctima pueda acceder a él (Ten en cuenta que esto abrirá el bucket a TODOS):
Last updated