AWS - Steal Lambda Requests
Last updated
Last updated
Slicer je proces van kontejnera koji šalje pozive inicijalnom procesu.
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
bootstrap.py ima petlju koja dobija pozive od inicijalnog procesa i poziva korisnički kod da ih obradi (/next
).
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.
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.
Pronađite RCE ranjivost.
Generišite zlonamerni bootstrap (npr. https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)
Izvršite zlonamerni bootstrap.
Ove akcije možete lako izvršiti pokretanjem:
Za više informacija pogledajte https://github.com/carlospolop/lambda_bootstrap_switcher