
Inicia un entorno de pruebas aislado para experimentar con la vulnerabilidad Apache Struts CVE-2018-11776.
Crea un entorno de prueba aislado para experimentar con la vulnerabilidad CVE-2018-11776 de Apache Struts.
Para iniciar el entorno de prueba, ejecute el siguiente comando:
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>
Obtenga las IPs de la víctima y del atacante. Inicie sesiones SSH en ambas:
# 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
Obtenga el comando utilizado para verificar si la víctima es vulnerable. Ejecútelo en la sesión del atacante:
aws cloudformation describe-stacks --stack-name=<STACK_NAME> \
--query 'Stacks[0].Outputs[?OutputKey==`CheckVuln`].OutputValue' --output text
(Opcional) Obtenga el comando utilizado para ver si el exploit funciona. Ejecútelo en la sesión del atacante:
aws cloudformation describe-stacks --stack-name=<STACK_NAME> \
--query 'Stacks[0].Outputs[?OutputKey==`RunExploit`].OutputValue' --output text
Configure la máquina del atacante para escuchar túneles inversos:
nc -lvp 31337
Obtenga el comando utilizado para forzar a la víctima a iniciar un túnel inverso hacia el atacante:
aws cloudformation describe-stacks --stack-name=<STACK_NAME> \
--query 'Stacks[0].Outputs[?OutputKey==`RunReverseShell`].OutputValue' --output text
Abra una sesión SSH adicional en la máquina del atacante. Luego, ejecute el comando obtenido en el paso anterior.
Vuelva a la sesión del túnel inverso. Ahora tiene acceso CLI a la máquina de la víctima.
Para destruir el entorno de prueba, ejecute el siguiente comando:
aws cloudformation delete-stack --stack-name <STACK_NAME>
Esta demostración se basa en el código PoC de hook-s3c's CVE-2018-11776-Python-PoC.