Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/

This commit is contained in:
Translator
2025-01-02 01:13:27 +00:00
parent 599a50fbec
commit c14d2efa43
215 changed files with 1670 additions and 1679 deletions

View File

@@ -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

View File

@@ -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