
Herramienta que ejecuta una prueba para comprobar si una de tus aplicaciones está afectada por las vulnerabilidades recientes en log4j: CVE-2021-44228 y CVE-2021-45046
log4shell.tools es una herramienta que te permite ejecutar una prueba para comprobar si alguna de tus aplicaciones está afectada por las vulnerabilidades recientes en log4j: CVE-2021-44228 y CVE-2021-45046.
Este es el código que ejecuta https://log4shell.alexbakker.me. Si quieres inspeccionar el código o ejecutar una instancia en tu propio entorno, has venido al lugar correcto.
La herramienta genera un ID único para que lo uses en la prueba. Después de hacer clic en iniciar, generaremos un fragmento de texto similar a este: ${jndi:ldap://*.dns.log4shell.tools:12345/*}. Cópialo y pégalo en cualquier lugar donde sospeches que podría terminar pasando por log4j. Por ejemplo: campos de búsqueda, campos de formulario o cabeceras HTTP.
Cuando una versión desactualizada de log4j ve esta cadena, realizará una consulta DNS para obtener la dirección IP de *.dns.log4shell.tools. Si esto ocurre, se considera la primera señal de vulnerabilidad a la fuga de información. A continuación, intentará una solicitud de búsqueda LDAP a log4shell.tools:12345. La herramienta responde con una descripción de clase Java, junto con una URL desde la que obtenerla. Log4j puede incluso intentar descargar el archivo de clase. La herramienta devolverá un 404 y dará por concluida la prueba.
La herramienta fue probada con Go 1.16. Asegúrate de tenerlo instalado (o una versión más reciente de Go) y ejecuta el siguiente comando:
go install github.com/alexbakker/log4shell-tools/cmd/log4shell-tools-server
El binario estará disponible en $GOPATH/bin
Dado que esta herramienta se compila en un único binario, todo lo que tienes que hacer es ejecutarla para empezar a autoalojar una instancia de log4shell.tools. Para hacerla accesible desde otras máquinas de tu red, querrás pasar un par de banderas para evitar que la herramienta escuche únicamente en la interfaz de bucle local. Si la expones a Internet, probablemente también quieras poner un proxy inverso delante del servidor HTTP. Ignora las opciones de DNS por ahora, no son necesarias para despliegues internos simples.
Para ver la lista completa de banderas disponibles, ejecuta 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)
La herramienta usa su backend de almacenamiento en memoria por defecto. Si necesitas que los resultados de las pruebas persistan entre reinicios, quizás quieras usar el backend de Postgres en su lugar.
El servidor DNS está deshabilitado por defecto, porque sus opciones de configuración son actualmente muy específicas para la configuración de https://log4shell.alexbakker.me. Avísame si te gustaría ayudar a hacerlas más genéricas.