
Démarre un environnement de test isolé pour expérimenter avec la vulnérabilité Apache Struts CVE-2018-11776.
Met en place un environnement de test isolé pour expérimenter avec la vulnérabilité Apache Struts CVE-2018-11776.
Pour lancer l'environnement de test, exécutez la commande suivante :
aws cloudformation create-stack \
--template-body file://cfn.yml \
--stack-name <STACK_NAME> \
--parameters \
ParameterKey=Ec2KeyName,ParameterValue=<KEY_NAME> \
ParameterKey=Linux2Ami,ParameterValue=<AMAZON_LINUX2_AMI_ID>
Récupérez les IP de la victime et de l'attaquant. Lancez des sessions SSH sur les deux :
# Victim public IP
aws cloudformation describe-stacks --stack-name=<STACK_NAME> \
--query 'Stacks[0].Outputs[?OutputKey==`VictimPublicIp`].OutputValue' --output text
# Attacker public IP
aws cloudformation describe-stacks --stack-name=<STACK_NAME> \
--query 'Stacks[0].Outputs[?OutputKey==`AttackerPublicIp`].OutputValue' --output text
Récupérez la commande utilisée pour pour vérifier si la victime est vulnérable. Exécutez-la dans la session de l'attaquant :
aws cloudformation describe-stacks --stack-name=<STACK_NAME> \
--query 'Stacks[0].Outputs[?OutputKey==`CheckVuln`].OutputValue' --output text
(Optionnel) Récupérez la commande utilisée pour voir si l'exploit fonctionne. Exécutez-la dans la session de l'attaquant :
aws cloudformation describe-stacks --stack-name=<STACK_NAME> \
--query 'Stacks[0].Outputs[?OutputKey==`RunExploit`].OutputValue' --output text
Configurez la machine de l'attaquant pour écouter les tunnels inversés :
nc -lvp 31337
Récupérez la commande utilisée pour forcer la victime à initier un tunnel inversé vers l'attaquant :
aws cloudformation describe-stacks --stack-name=<STACK_NAME> \
--query 'Stacks[0].Outputs[?OutputKey==`RunReverseShell`].OutputValue' --output text
Ouvrez une session SSH supplémentaire sur la machine de l'attaquant. Ensuite, exécutez la commande récupérée à l'étape précédente.
Revenez à la session de tunnel inversé. Vous avez maintenant un accès en ligne de commande à la machine victime.
Pour détruire l'environnement de test, exécutez la commande suivante :
aws cloudformation delete-stack --stack-name <STACK_NAME>
Cette démo est basée sur le code PoC de hook-s3c's CVE-2018-11776-Python-PoC.