AWS - Elastic Beanstalk Privesc
Elastic Beanstalk
Ulteriori informazioni su Elastic Beanstalk in:
AWS - Elastic Beanstalk EnumPer eseguire azioni sensibili in Beanstalk sarà necessario avere molte autorizzazioni sensibili in molti servizi diversi. Puoi controllare ad esempio le autorizzazioni date a arn:aws:iam::aws:policy/AdministratorAccess-AWSElasticBeanstalk
elasticbeanstalk:RebuildEnvironment
, autorizzazioni di scrittura S3 e molte altre
elasticbeanstalk:RebuildEnvironment
, autorizzazioni di scrittura S3 e molte altreCon autorizzazioni di scrittura sul bucket S3 contenente il codice dell'ambiente e autorizzazioni per ricostruire l'applicazione (è necessario elasticbeanstalk:RebuildEnvironment
e alcune altre relative a S3
, EC2
e Cloudformation
), è possibile modificare il codice, ricostruire l'applicazione e la prossima volta che si accede all'applicazione verrà eseguito il nuovo codice, consentendo all'attaccante di compromettere l'applicazione e le credenziali del ruolo IAM ad essa associate.
elasticbeanstalk:CreateApplication
, elasticbeanstalk:CreateEnvironment
, elasticbeanstalk:CreateApplicationVersion
, elasticbeanstalk:UpdateEnvironment
, iam:PassRole
, e altro ancora...
elasticbeanstalk:CreateApplication
, elasticbeanstalk:CreateEnvironment
, elasticbeanstalk:CreateApplicationVersion
, elasticbeanstalk:UpdateEnvironment
, iam:PassRole
, e altro ancora...Quelli menzionati insieme a diverse autorizzazioni per S3
, EC2
, cloudformation
, autoscaling
e elasticloadbalancing
sono necessari per creare uno scenario di Elastic Beanstalk da zero.
Creare un'applicazione AWS Elastic Beanstalk:
Crea un ambiente AWS Elastic Beanstalk (piattaforme supportate):
Se un ambiente è già stato creato e non si desidera crearne uno nuovo, è possibile aggiornare quello esistente.
Comprimi il codice dell'applicazione e le dipendenze in un file ZIP:
Carica il file ZIP in un bucket S3:
Crea una versione dell'applicazione AWS Elastic Beanstalk:
Distribuisci la versione dell'applicazione nel tuo ambiente 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
Prima di tutto è necessario creare un ambiente Beanstalk legittimo con il codice che si desidera eseguire nella vittima seguendo i passaggi precedenti. Potenzialmente un semplice zip contenente questi 2 file:
Una volta che hai il tuo ambiente Beanstalk in esecuzione con il tuo rev shell, è il momento di migrarlo nell'ambiente della vittima. Per farlo, devi aggiornare la Policy del Bucket del tuo bucket S3 di Beanstalk in modo che la vittima possa accedervi (Nota che questo aprirà il Bucket a TUTTI):
Last updated