# Remote Code Execution en Lambda

{% 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 %}

Este escenario presenta una lambda vulnerable a Remote Code Execution y nos muestra como nosotros debemos abordar esta vulnerabilidad en un entorno serverless totalmente cloud.

Primero, debemos el EndPoint encargado de ejecutar la lambda:

<figure><img src="https://1420718843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjUr7ifmUiydm8bW32KgO%2Fuploads%2Fb9e6b2z5hrVAyr1bslbB%2Fimage.png?alt=media&#x26;token=4ee4b929-de5d-4bf5-8e6b-80d924c410cf" alt=""><figcaption></figcaption></figure>

Teniendo en cuenta el código fuente de la lambda, podemos apreciar la existencia del parámetro cmd y este debe ser concatenado al endpoint previamente identificado:

```bash
curl https://padxwhb4f5.execute-api.us-east-1.amazonaws.com/test/?cmd=whoami
```

<figure><img src="https://1420718843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjUr7ifmUiydm8bW32KgO%2Fuploads%2Fxn8CYVjuQ4C7Oafqxcsf%2Fimage.png?alt=media&#x26;token=5e5f7ddc-0844-43fd-8504-edaea35d209a" alt=""><figcaption></figcaption></figure>

En la evidencia previa, podemos apreciar el retorno del comando whoami y ls.

Si durante una auditoria de seguridad identificas un endpoint que se comunica con una lambda y este es vulnerable a ataques de inyección de comandos o RCE; es recomendable intentar ejecutar el siguiente comando:

```bash
curl https://padxwhb4f5.execute-api.us-east-1.amazonaws.com/test/?cmd=env
```

<figure><img src="https://1420718843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjUr7ifmUiydm8bW32KgO%2Fuploads%2Fjo12n2PDTVze4JP7FkaW%2Fimage.png?alt=media&#x26;token=65e99005-e59d-4c84-817f-c92b2e2ddc8d" alt=""><figcaption></figcaption></figure>

Los tiempos de ejecución de Lambda establecen varias variables de entorno durante la inicialización. La mayoría de las variables de entorno proporcionan información sobre la función o el tiempo de ejecución. Las claves para estas variables de entorno están reservadas.

Por medio del RCE, hemos logrado obtener las variables de entorno de la lambda y estas contienen unas credenciales relacionadas al rol de ejecución de la función.

Vamos a autenticarnos con estas credenciales para validar los permisos obtenidos por medio de este rol comprometido.

<figure><img src="https://1420718843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjUr7ifmUiydm8bW32KgO%2Fuploads%2F3rhIfHQahPvpgwCBMDU8%2Fimage.png?alt=media&#x26;token=37fb17b7-e1d8-4877-9750-9fd641e9c0df" alt=""><figcaption></figcaption></figure>

En este punto, el atacante tendría que realizar una enumeración para identificar sus permisos y posteriormente si es necesario proceder realizar una [escalacion-de-privilegios-en-iam](https://books.spartan-cybersec.com/cpna/escalacion-de-privilegios-en-iam "mention")
