AWS - Steal Lambda Requests
Last updated
Last updated
Impara e pratica Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
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 invocazioni dal processo init e chiama il codice dell'utente per gestirle (/next
).
Infine, bootstrap.py invia a init la risposta
Nota che bootstrap carica il codice dell'utente come un modulo, quindi qualsiasi esecuzione di codice eseguita dal codice dell'utente avviene effettivamente in questo processo.
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, così init pensa 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.
Trova una vulnerabilità RCE.
Genera un bootstrap malevolo (ad es. https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)
Esegui il bootstrap malevolo.
Puoi facilmente eseguire queste azioni eseguendo:
Per ulteriori informazioni controlla https://github.com/carlospolop/lambda_bootstrap_switcher
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)