
Escanea tu red IP y determina hosts con posible vulnerabilidad CVE-2021-44228 en la librería log4j.
Escanea tu red IP y determina hosts con posible vulnerabilidad CVE-2021-44228 en la librería log4j.
Existen herramientas mucho mejores y más avanzadas para auditoría de seguridad, pero muchas requieren software comercial de penetración o servicios o software externos de terceros.
Este script está escrito para ser una pequeña herramienta rápida e independiente. No confirmará que tus servidores y dispositivos estén 100% seguros. Considéralo como una de las muchas herramientas que deberías usar para auditar tu entorno de TI. Se puede usar en direcciones IP privadas y públicas.
El script no es una demostración de exploit log4shell. No hará daño ni intentará ejecutar código remoto.
El script crea una solicitud HTTPS (puertos que terminan en 443) o HTTP (todos los demás puertos), con una cadena especial en los campos: User-Agent, X-Api-Version y X-Forwarded-For. Esa cadena especial tiene el formato ${jndi:ldap://some_listen_host:port} .
Si se utiliza una librería log4j vulnerable para registrar la actividad del usuario (nuestra solicitud http) en algún punto de la ruta «usuario -> servicio | balanceadores de carga -> seguridad -> servidores -> registro», analizará la cadena JNDI e intentará establecer una sesión LDAP hacia nuestro some_listen_host:port.
Si monitoreamos el tráfico en some_listen_host:port y detectamos tales paquetes, se debe examinar más a fondo su origen.
Los puertos predeterminados a los que se envían las solicitudes http(s) son 80, 8080, 443 y 8443.
Estos dos hosts pueden ser la misma máquina.
En el host de escucha, inicia tcpdump para capturar los paquetes recibidos en algún puerto TCP libre. Ejemplo:
tcpdump -nn -i ens160 tcp port 12345
En el host Linux, ejecuta el script con los parámetros requeridos. Ejemplo:
./log4j-quick-scan.py -e 192.168.0.3:12345 192.168.0.0/24"
Esto probará la red 192.168.0.0/24 intentando provocar una conexión TCP al host de escucha 192.158.0.3 en el puerto 12345.
Monitorea la salida de tcpdump en el host de escucha. Los objetivos que sean sospechosos de la vulnerabilidad log4j analizarán la cadena JNDI e intentarán establecer una conexión LDAP.
Es ineficaz y extremadamente lento escanear todos los puertos. Dado que la librería log4j se usa en muchos productos, determina primero qué puertos web se utilizan en tu entorno. Ejecuta el script con tu lista de puertos personalizada.
Hay demasiados elementos que pueden impedir que el script y otras herramientas descubran externamente la vulnerabilidad log4j. Algunos de ellos son: firewalls de red y de servidor, firewalls de aplicaciones web, puertos TCP personalizados, software/servicios que no registran eventos de baja severidad (como nuestra solicitud http ordinaria), script que accede a la dirección IP en lugar del hostname requerido, etc…
Revisa siempre el proyecto de código abierto o los avisos del proveedor del software para obtener detalles sobre el problema de log4j.
usage: log4j-quick-scan.py [-h] [-V] -e LISTENHOST [-p PORTS] [-l LOG] target
Scan hosts with log4j+jndi doing external connections.
required arguments:
-e LISTENHOST, --listenhost LISTENHOST
Host[:port] where to monitor tcp connections. It could be the same machine where script is to be run.
optional arguments:
-h, --help show this help message and exit
-V, --version Display version and exit.
-p PORTS, --ports PORTS
Optional, comma separated list of ports on tested hosts. Default: 80,8080,443,8443
-l LOG, --log LOG Optional, append output to custom log file. Default: ./log4j-quick-scan.log
positional arguments:
target Scan target: IP network in CIDR format.