mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-16 23:01:43 -08:00
Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
## Lambda
|
||||
|
||||
Para más información consulta:
|
||||
Para más información, consulta:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-lambda-enum.md
|
||||
@@ -20,7 +20,7 @@ aws-warm-lambda-persistence.md
|
||||
|
||||
### Robar Solicitudes URL de Lambda de Otros y Solicitudes de Extensiones
|
||||
|
||||
Abusando de Lambda Layers también es posible abusar de extensiones y persistir en el lambda, pero también robar y modificar solicitudes.
|
||||
Abusando de Lambda Layers, también es posible abusar de extensiones y persistir en el lambda, pero también robar y modificar solicitudes.
|
||||
|
||||
{{#ref}}
|
||||
../../aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
1. **Slicer** es un proceso fuera del contenedor que **envía** **invocaciones** al proceso **init**.
|
||||
2. El proceso init escucha en el puerto **9001** exponiendo algunos puntos finales interesantes:
|
||||
- **`/2018-06-01/runtime/invocation/next`** – obtener el siguiente evento de invocación
|
||||
- **`/2018-06-01/runtime/invocation/{invoke-id}/response`** – devolver la respuesta del manejador para la invocación
|
||||
- **`/2018-06-01/runtime/invocation/{invoke-id}/response`** – devolver la respuesta del controlador para la invocación
|
||||
- **`/2018-06-01/runtime/invocation/{invoke-id}/error`** – devolver un error de ejecución
|
||||
3. **bootstrap.py** tiene un bucle que obtiene invocaciones del proceso init y llama al código del usuario para manejarlas (**`/next`**).
|
||||
4. Finalmente, **bootstrap.py** envía al init la **respuesta**
|
||||
@@ -18,16 +18,16 @@ Nota que bootstrap carga el código del usuario como un módulo, por lo que cual
|
||||
|
||||
## Robando Solicitudes de Lambda
|
||||
|
||||
El objetivo de este ataque es hacer que el código del usuario ejecute un proceso **`bootstrap.py`** malicioso dentro del proceso **`bootstrap.py`** que maneja la solicitud vulnerable. De esta manera, el proceso **bootstrap malicioso** comenzará a **comunicarse con el proceso init** para manejar las solicitudes mientras que el bootstrap **legítimo** está **atrapado** ejecutando el malicioso, por lo que no pedirá solicitudes al proceso init.
|
||||
El objetivo de este ataque es hacer que el código del usuario ejecute un proceso **`bootstrap.py`** malicioso dentro del proceso **`bootstrap.py`** que maneja la solicitud vulnerable. De esta manera, el proceso **bootstrap malicioso** comenzará a **comunicarse con el proceso init** para manejar las solicitudes mientras el bootstrap **legítimo** está **atrapado** ejecutando el malicioso, por lo que no pedirá solicitudes al proceso init.
|
||||
|
||||
Esta es una tarea simple de lograr ya que el código del usuario está siendo ejecutado por el legítimo proceso **`bootstrap.py`**. Así que el atacante podría:
|
||||
|
||||
- **Enviar un resultado falso de la invocación actual al proceso init**, para que init piense que el proceso bootstrap está esperando más invocaciones.
|
||||
- Se debe enviar una solicitud a **`/${invoke-id}/response`**
|
||||
- El invoke-id se puede obtener de la pila del legítimo proceso **`bootstrap.py`** utilizando el módulo python [**inspect**](https://docs.python.org/3/library/inspect.html) (como [se propone aquí](https://github.com/twistlock/lambda-persistency-poc/blob/master/poc/switch_runtime.py)) o simplemente solicitándolo nuevamente a **`/2018-06-01/runtime/invocation/next`** (como [se propone aquí](https://github.com/Djkusik/serverless_persistency_poc/blob/master/gcp/exploit_files/switcher.py)).
|
||||
- El invoke-id se puede obtener de la pila del legítimo proceso **`bootstrap.py`** usando el módulo python [**inspect**](https://docs.python.org/3/library/inspect.html) (como [se propuso aquí](https://github.com/twistlock/lambda-persistency-poc/blob/master/poc/switch_runtime.py)) o simplemente solicitándolo nuevamente a **`/2018-06-01/runtime/invocation/next`** (como [se propuso aquí](https://github.com/Djkusik/serverless_persistency_poc/blob/master/gcp/exploit_files/switcher.py)).
|
||||
- Ejecutar un **`boostrap.py`** malicioso que manejará las siguientes invocaciones.
|
||||
- Por razones de sigilo, es posible enviar los parámetros de las invocaciones de lambda a un C2 controlado por el atacante y luego manejar las solicitudes como de costumbre.
|
||||
- Para este ataque, es suficiente obtener el código original de **`bootstrap.py`** del sistema o de [**github**](https://github.com/aws/aws-lambda-python-runtime-interface-client/blob/main/awslambdaric/bootstrap.py), agregar el código malicioso y ejecutarlo desde la invocación lambda actual.
|
||||
- Por razones de sigilo, es posible enviar los parámetros de invocación de lambda a un C2 controlado por el atacante y luego manejar las solicitudes como de costumbre.
|
||||
- Para este ataque, es suficiente obtener el código original de **`bootstrap.py`** del sistema o [**github**](https://github.com/aws/aws-lambda-python-runtime-interface-client/blob/main/awslambdaric/bootstrap.py), agregar el código malicioso y ejecutarlo desde la invocación lambda actual.
|
||||
|
||||
### Pasos del Ataque
|
||||
|
||||
|
||||
Reference in New Issue
Block a user