
Werkzeug, das einen Test durchführt, um zu prüfen, ob eine Ihrer Anwendungen von den aktuellen Sicherheitslücken in log4j betroffen ist: CVE-2021-44228 und CVE-2021-45046
log4shell.tools ist ein Werkzeug, mit dem Sie testen können, ob eine Ihrer Anwendungen von den kürzlich entdeckten Sicherheitslücken in log4j betroffen ist: CVE-2021-44228 und CVE-2021-45046.
Dies ist der Code, der https://log4shell.alexbakker.me antreibt. Wenn Sie den Code inspizieren oder eine Instanz in Ihrer eigenen Umgebung betreiben möchten, sind Sie hier genau richtig.
Das Tool generiert eine eindeutige ID, mit der Sie testen können. Nachdem Sie auf Start geklickt haben, wird ein Text für Sie generiert, der ähnlich aussieht: ${jndi:ldap://*.dns.log4shell.tools:12345/*}. Kopieren Sie ihn und fügen Sie ihn überall dort ein, wo Sie vermuten, dass er möglicherweise durch log4j verarbeitet wird. Zum Beispiel: Suchfelder, Formularfelder oder HTTP-Header.
Sobald eine veraltete Version von log4j diese Zeichenkette sieht, führt sie eine DNS-Abfrage durch, um die IP-Adresse von *.dns.log4shell.tools zu ermitteln. Wenn dies geschieht, gilt dies als erstes Anzeichen einer Verwundbarkeit für Datenlecks. Als nächstes versucht es eine LDAP-Suchanfrage an log4shell.tools:12345. Das Tool antwortet mit einer Java-Klassenbeschreibung und einer URL, wo diese bezogen werden kann. Log4j versucht möglicherweise sogar, die Klassendatei abzurufen. Das Tool wird einen 404 zurückgeben und den Test beenden.

Das Tool wurde mit Go 1.16 getestet. Stellen Sie sicher, dass Go (oder eine neuere Version) installiert ist, und führen Sie den folgenden Befehl aus:
go install github.com/alexbakker/log4shell-tools/cmd/log4shell-tools-server
Die Binärdatei ist dann unter $GOPATH/bin verfügbar.
Da dieses Tool zu einer einzigen Binärdatei kompiliert wird, müssen Sie diese nur ausführen, um eine Instanz von log4shell.tools selbst zu hosten. Damit es für andere Maschinen in Ihrem Netzwerk erreichbar ist, müssen Sie ein paar Flags übergeben, damit das Tool nicht nur auf der Loopback-Schnittstelle lauscht. Wenn Sie dies dem Internet aussetzen, sollten Sie wahrscheinlich auch einen Reverse Proxy vor den HTTP-Server stellen. Ignorieren Sie vorerst die DNS-Optionen – sie sind für einfache interne Bereitstellungen nicht erforderlich.
Die vollständige Liste der verfügbaren Flags erhalten Sie mit log4shell-tools-server -h:
Usage of ./log4shell-tools-server:
This tool only listens on 127.0.0.1 by default. Pass the flags below to customize for your environment.
-dns-a string
the IPv4 address to respond with to any A record queries for 'dns-zone' (default "127.0.0.1")
-dns-aaaa string
the IPv6 address to respond with to any AAAA record queries for 'dns-zone' (default "::1")
-dns-addr string
listening address for the DNS server (default "127.0.0.1:12346")
-dns-enable
enable the DNS server
-dns-zone string
DNS zone that is forwarded to the tool's DNS server (example: "dns.log4shell.tools")
-http-addr string
listening address for the HTTP server (default "127.0.0.1:8001")
-http-addr-external string
address where the HTTP server can be reached externally (default "127.0.0.1:8001")
-ldap-addr string
listening address for the LDAP server (default "127.0.0.1:12345")
-ldap-addr-external string
address where the LDAP server can be reached externally (default "127.0.0.1:12345")
-ldap-http-proto string
the HTTP protocol to use in the payload URL that the LDAP server responds with (default "http")
-storage string
storage connection URI (either memory:// or a postgres:// URI (default "memory://")
-test-timeout int
test timeout in minutes (default 30)
Das Tool verwendet standardmäßig sein speicherinternes Speicher-Backend. Wenn Testergebnisse über Neustarts hinweg erhalten bleiben sollen, können Sie stattdessen das Postgres-Backend verwenden.
Der DNS-Server ist standardmäßig deaktiviert, da seine Konfigurationsoptionen derzeit sehr spezifisch für die Einrichtung unter https://log4shell.alexbakker.me sind. Lassen Sie mich wissen, wenn Sie helfen möchten, diese allgemeiner zu gestalten.