
Strumento che esegue un test per verificare se una delle tue applicazioni è interessata dalle recenti vulnerabilità in log4j: CVE-2021-44228 e CVE-2021-45046
log4shell.tools è uno strumento che ti consente di eseguire un test per verificare se una delle tue applicazioni è interessata dalle recenti vulnerabilità di log4j: CVE-2021-44228 e CVE-2021-45046.
Questo è il codice che fa funzionare https://log4shell.alexbakker.me. Se desideri ispezionare il codice o eseguire un'istanza nel tuo ambiente, sei nel posto giusto.
Lo strumento genera un ID univoco con cui testare. Dopo aver cliccato su start, genereremo un testo per te simile a questo: ${jndi:ldap://*.dns.log4shell.tools:12345/*}. Copialo e incollalo ovunque sospetti che possa finire per essere passato attraverso log4j. Per esempio: campi di ricerca, campi di modulo o header HTTP.
Quando una versione obsoleta di log4j vede questa stringa, eseguirà una ricerca DNS per ottenere l'indirizzo IP di *.dns.log4shell.tools. Se ciò accade, è considerato il primo segno di vulnerabilità alla fuga di informazioni. Successivamente, tenterà una richiesta di ricerca LDAP verso log4shell.tools:12345. Lo strumento risponde con una descrizione di una classe Java, insieme a un URL da cui ottenerla. Log4j potrebbe persino tentare di recuperare il file della classe. Lo strumento restituirà un 404 e concluderà il test.

Lo strumento è stato testato con Go 1.16. Assicurati che sia installato (o una versione più recente di Go) ed esegui il seguente comando:
go install github.com/alexbakker/log4shell-tools/cmd/log4shell-tools-server
Il binario sarà disponibile in $GOPATH/bin
Poiché questo strumento compila in un unico binario, tutto ciò che devi fare è eseguirlo per iniziare a ospitare un'istanza di log4shell.tools. Per renderlo accessibile ad altre macchine nella tua rete, vorrai passare un paio di flag per evitare che lo strumento ascolti solo sull'interfaccia di loopback. Se lo esponi a internet, probabilmente vorrai anche mettere un reverse proxy davanti al server HTTP. Ignora per ora le opzioni DNS, non servono per semplici distribuzioni interne.
Per l'elenco completo dei flag disponibili, esegui 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)
Lo strumento utilizza il suo backend di archiviazione in memoria per impostazione predefinita. Se hai bisogno che i risultati dei test persistano tra i riavvii, potresti invece voler usare il backend Postgres.
Il server DNS è disabilitato per impostazione predefinita, perché le sue opzioni di configurazione sono attualmente molto specifiche per la configurazione su https://log4shell.alexbakker.me. Fammi sapere se vorresti aiutare a renderle più generiche.