AWS - Lambda Post Exploitation

Reading time: 4 minutes

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기

Lambda

For more information check:

AWS - Lambda Enum

Lambda 자격 증명 탈취

Lambda는 런타임에 자격 증명을 주입하기 위해 environment variables를 사용합니다. 만약 /proc/self/environ을 읽거나 취약한 함수를 직접 사용하여 이들에 접근할 수 있다면, 해당 자격 증명을 직접 사용할 수 있습니다. 이 값들은 기본 변수 이름인 AWS_SESSION_TOKEN, AWS_SECRET_ACCESS_KEY, 그리고 AWS_ACCESS_KEY_ID에 저장됩니다.

기본적으로 이 자격 증명들은 cloudwatch 로그 그룹(이름은 AWS_LAMBDA_LOG_GROUP_NAME에 저장됨)에 쓰기 권한과 임의의 로그 그룹을 생성할 수 있는 권한을 가집니다. 그러나 lambda functions는 의도된 사용 목적에 따라 더 많은 권한이 할당되는 경우가 흔합니다.

lambda:Delete*

lambda:Delete* 권한이 부여된 공격자는 Lambda functions, versions/aliases, layers, event source mappings 및 기타 관련 구성을 삭제할 수 있습니다.

bash
aws lambda delete-function \
--function-name <LAMBDA_NAME>

Steal Others Lambda URL Requests

공격자가 어떤 식으로든 Lambda 내부에서 RCE를 얻으면 다른 사용자의 Lambda에 대한 HTTP 요청을 탈취할 수 있습니다. 요청에 민감한 정보(쿠키, 자격 증명 등)가 포함되어 있으면 이를 탈취할 수 있습니다.

AWS - Lambda Steal Requests

Steal Others Lambda URL Requests & Extensions Requests

Lambda Layers를 악용하면 extensions를 악용해 Lambda에 지속성을 확보하고 요청을 탈취·변조할 수도 있습니다.

AWS - Abusing Lambda Extensions

AWS Lambda – VPC Egress Bypass

빈 VpcConfig(SubnetIds=[], SecurityGroupIds=[])로 설정을 업데이트하여 Lambda 함수를 제한된 VPC 밖으로 강제 이동시킬 수 있습니다. 그러면 함수는 Lambda-managed networking plane에서 실행되어 아웃바운드 인터넷 접근을 회복하고 NAT 없는 private VPC 서브넷에서 적용되는 egress 제어를 우회합니다.

AWS - Lambda VPC Egress Bypass

AWS Lambda – Runtime Pinning/Rollback Abuse

lambda:PutRuntimeManagementConfig를 악용해 함수를 특정 runtime 버전(Manual)에 고정하거나 업데이트를 동결(FunctionUpdate)할 수 있습니다. 이렇게 하면 악성 layers/wrappers와의 호환성이 유지되며, 함수가 구식이거나 취약한 runtime에 머물러 exploitation과 장기 지속성에 도움이 될 수 있습니다.

AWS - Lambda Runtime Pinning Abuse

AWS Lambda – Log Siphon via LoggingConfig.LogGroup Redirection

lambda:UpdateFunctionConfiguration의 고급 로깅 제어를 악용해 함수의 로그를 공격자가 선택한 CloudWatch Logs의 log group으로 리디렉션할 수 있습니다. 이는 코드나 실행 역할을 변경하지 않아도 동작합니다(대부분의 Lambda 역할은 이미 AWSLambdaBasicExecutionRole을 통해 logs:CreateLogGroup/CreateLogStream/PutLogEvents를 포함합니다). 함수가 비밀/요청 본문을 출력하거나 스택 트레이스로 충돌하면 새 log group에서 이를 수집할 수 있습니다.

AWS - Lambda LoggingConfig Redirection

AWS - Lambda Function URL Public Exposure

Function URL AuthType을 NONE으로 전환하고 모든 사용자에게 lambda:InvokeFunctionUrl 권한을 부여하는 리소스 기반 정책을 연결하면 private Lambda Function URL을 공개 무인증 엔드포인트로 전환할 수 있습니다. 이는 내부 함수의 익명 호출을 가능하게 하여 민감한 백엔드 작업을 노출시킬 수 있습니다.

AWS - Lambda Function URL Public Exposure

AWS Lambda – Event Source Mapping Target Hijack

기존 Event Source Mapping(ESM)의 대상 Lambda 함수를 변경하도록 UpdateEventSourceMapping을 악용하면 DynamoDB Streams, Kinesis 또는 SQS의 레코드가 공격자 제어 함수로 전달됩니다. 이는 프로듀서나 원래 함수 코드를 건드리지 않고 실시간 데이터를 은밀히 우회시킵니다.

AWS - Lambda Event Source Mapping Hijack

AWS Lambda – EFS Mount Injection data exfiltration

lambda:UpdateFunctionConfiguration을 악용해 기존 EFS Access Point를 Lambda에 연결한 후, 마운트된 경로에서 파일을 나열/읽는 단순한 코드를 배포하여 함수가 이전에는 접근할 수 없었던 공유된 비밀/설정(shared secrets/config)을 탈취할 수 있습니다.

AWS - Lambda EFS Mount Injection

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기