mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['', 'src/pentesting-cloud/aws-security/aws-post-exploitation
This commit is contained in:
+42
-10
@@ -4,22 +4,22 @@
|
||||
|
||||
## Secrets Manager
|
||||
|
||||
For more information check:
|
||||
자세한 정보는 다음을 확인하세요:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-secrets-manager-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### Read Secrets
|
||||
### Secrets 읽기
|
||||
|
||||
The **secrets 자체는 민감한 정보**이며, 읽는 방법은 [check the privesc page](../aws-privilege-escalation/aws-secrets-manager-privesc.md)를 확인하세요.
|
||||
**secrets 자체는 민감한 정보**입니다. 읽는 방법은 [check the privesc page](../aws-privilege-escalation/aws-secrets-manager-privesc.md)에서 확인하세요.
|
||||
|
||||
### DoS Change Secret Value
|
||||
### DoS Secret 값 변경
|
||||
|
||||
secret의 값을 변경하면 **해당 값에 의존하는 모든 시스템을 DoS할 수 있습니다.**
|
||||
secret의 값을 변경하면 **해당 값을 사용하는 모든 시스템을 DoS할 수 있습니다.**
|
||||
|
||||
> [!WARNING]
|
||||
> 이전 값들도 저장되어 있으므로, 이전 값으로 되돌리는 것은 쉽습니다.
|
||||
> 이전 값들도 저장되어 있으므로 이전 값으로 쉽게 되돌릴 수 있습니다.
|
||||
```bash
|
||||
# Requires permission secretsmanager:PutSecretValue
|
||||
aws secretsmanager put-secret-value \
|
||||
@@ -28,11 +28,11 @@ aws secretsmanager put-secret-value \
|
||||
```
|
||||
### DoS Change KMS key
|
||||
|
||||
공격자가 secretsmanager:UpdateSecret 권한을 가지고 있으면, secret을 공격자가 소유한 KMS key를 사용하도록 구성할 수 있습니다. 그 키는 처음에는 누구나 접근하고 사용할 수 있도록 설정되어 있으므로, secret을 새 키로 업데이트하는 것이 가능합니다. 만약 그 키에 접근할 수 없었다면, secret을 업데이트할 수 없었을 것입니다.
|
||||
공격자가 secretsmanager:UpdateSecret 권한을 가지고 있으면, 해당 secret을 공격자가 소유한 KMS key를 사용하도록 구성할 수 있습니다. 그 KMS key는 초기에는 누구나 접근하고 사용할 수 있도록 설정되어 있어 새 KMS key로 secret을 업데이트하는 것이 가능합니다. 만약 그 key에 접근할 수 없다면 secret을 업데이트할 수 없습니다.
|
||||
|
||||
secret의 키를 변경한 후, 공격자는 자신의 키 구성을 수정하여 오직 자신만 접근할 수 있도록 만듭니다. 이렇게 하면 이후 버전의 secret은 새 키로 암호화되고, 해당 키에 접근할 수 없기 때문에 secret을 검색할 수 있는 능력은 상실됩니다.
|
||||
secret의 key를 변경한 뒤 공격자는 자신의 key 구성을 수정해 본인만 접근할 수 있게 만듭니다. 이렇게 하면 이후 버전의 secret은 새 key로 암호화되고, 해당 key에 접근할 수 없으므로 secret을 가져올 수 있는 능력이 사라집니다.
|
||||
|
||||
중요한 점은 이 접근 불가능 상태는 secret의 내용이 변경된 이후의 이후 버전에서만 발생한다는 것입니다. 현재 버전은 여전히 원래 KMS key로 암호화되어 있기 때문입니다.
|
||||
이 접근 불능 상태는 secret 내용이 변경된 이후의 이후 버전에서만 발생한다는 점이 중요합니다. 현재 버전은 여전히 원래 KMS key로 암호화되어 있기 때문입니다.
|
||||
```bash
|
||||
aws secretsmanager update-secret \
|
||||
--secret-id MyTestSecret \
|
||||
@@ -40,10 +40,42 @@ aws secretsmanager update-secret \
|
||||
```
|
||||
### DoS Secret 삭제
|
||||
|
||||
secret을 삭제하기 위한 최소 대기 일수는 7일입니다.
|
||||
해당 Secret을 삭제하기 위한 최소 일수는 7일입니다
|
||||
```bash
|
||||
aws secretsmanager delete-secret \
|
||||
--secret-id MyTestSecret \
|
||||
--recovery-window-in-days 7
|
||||
```
|
||||
## secretsmanager:RestoreSecret
|
||||
|
||||
비밀을 복원할 수 있습니다. 이는 삭제 예정으로 예약된 비밀도 복원할 수 있음을 의미하며, 비밀의 최소 삭제 기간은 7일이고 최대는 30일이기 때문입니다. 또한 secretsmanager:GetSecretValue 권한과 함께 사용하면 해당 비밀의 내용을 가져올 수 있습니다.
|
||||
|
||||
삭제 중인 비밀을 복구하려면 다음 명령을 사용할 수 있습니다:
|
||||
```bash
|
||||
aws secretsmanager restore-secret \
|
||||
--secret-id <Secret_Name>
|
||||
```
|
||||
## secretsmanager:DeleteResourcePolicy
|
||||
|
||||
이 작업은 secret에 접근할 수 있는 주체를 제어하는 리소스 정책(resource policy)을 삭제할 수 있게 합니다. 리소스 정책이 특정 사용자 집합에 대한 접근을 허용하도록 구성되어 있었다면 이는 DoS로 이어질 수 있습니다.
|
||||
|
||||
리소스 정책을 삭제하려면:
|
||||
```bash
|
||||
aws secretsmanager delete-resource-policy \
|
||||
--secret-id <Secret_Name>
|
||||
```
|
||||
## secretsmanager:UpdateSecretVersionStage
|
||||
|
||||
시크릿의 상태는 시크릿 버전을 관리하는 데 사용됩니다. AWSCURRENT은 애플리케이션이 사용하는 활성 버전을 표시하고, AWSPREVIOUS는 필요한 경우 롤백할 수 있도록 이전 버전을 보관하며, AWSPENDING은 새로운 버전을 현재 버전으로 만들기 전에 준비하고 검증하는 회전 과정에 사용됩니다.
|
||||
|
||||
애플리케이션은 항상 AWSCURRENT 레이블이 붙은 버전을 읽습니다. 누군가 그 레이블을 잘못된 버전으로 옮기면 앱은 유효하지 않은 자격증명을 사용하게 되어 실패할 수 있습니다.
|
||||
|
||||
AWSPREVIOUS는 자동으로 사용되지 않습니다. 그러나 AWSCURRENT가 제거되거나 잘못 재할당되면 모든 것이 여전히 이전 버전으로 실행되는 것처럼 보일 수 있습니다.
|
||||
```bash
|
||||
aws secretsmanager update-secret-version-stage \
|
||||
--secret-id <your-secret-name-or-arn> \
|
||||
--version-stage AWSCURRENT \
|
||||
--move-to-version-id <target-version-id> \
|
||||
--remove-from-version-id <previous-version-id>
|
||||
```
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
+6
-3
@@ -12,15 +12,18 @@ Secrets Manager에 대한 자세한 정보는 다음을 확인하세요:
|
||||
|
||||
### `secretsmanager:GetSecretValue`
|
||||
|
||||
이 권한을 가진 공격자는 AWS **Secretsmanager**의 **비밀에 저장된 값**을 가져올 수 있습니다.
|
||||
이 권한을 가진 공격자는 AWS **Secretsmanager**에 있는 **비밀 내부의 저장된 값**을 가져올 수 있습니다.
|
||||
```bash
|
||||
aws secretsmanager get-secret-value --secret-id <secret_name> # Get value
|
||||
```
|
||||
**잠재적 영향:** AWS Secrets Manager 서비스 내의 고감도 데이터에 접근할 수 있습니다.
|
||||
**Potential Impact:** AWS secrets manager service 내부의 고도로 민감한 데이터에 접근할 수 있음.
|
||||
|
||||
> [!WARNING]
|
||||
> 주의: `secretsmanager:BatchGetSecretValue` 권한만으로는 민감한 secrets를 가져오기 위해 공격자는 `secretsmanager:GetSecretValue` 권한도 필요합니다.
|
||||
|
||||
### `secretsmanager:GetResourcePolicy`, `secretsmanager:PutResourcePolicy`, (`secretsmanager:ListSecrets`)
|
||||
|
||||
이전 권한을 통해 **다른 주체/계정(외부 포함)** 에게 **비밀**에 접근할 수 있는 권한을 **부여**할 수 있습니다. KMS 키로 암호화된 **비밀**을 **읽기** 위해서는 사용자가 **KMS 키에 대한 접근 권한**도 필요하다는 점에 유의하십시오 (자세한 내용은 [KMS Enum 페이지](../aws-services/aws-kms-enum.md)에서 확인할 수 있습니다).
|
||||
앞서 언급한 권한만으로는 다른 principal/계정(심지어 외부 계정)에 **접근 권한을 부여**하여 **secret**에 접근할 수 있게 할 수 있습니다. 단, KMS key로 암호화된 **secrets를 읽기 위해서는**, 사용자에게 해당 **KMS key에 대한 액세스 권한**도 필요합니다 (자세한 내용은 [KMS Enum page](../aws-services/aws-kms-enum.md) 참조).
|
||||
```bash
|
||||
aws secretsmanager list-secrets
|
||||
aws secretsmanager get-resource-policy --secret-id <secret_name>
|
||||
|
||||
Reference in New Issue
Block a user