
Script en Python3 para escanear máquinas vulnerables a CVE-2021-44228 (Log4shell).

Este script en Python3 intenta buscar servidores vulnerables a CVE-2021-44228, también conocido como Log4Shell, una vulnerabilidad muy crítica encontrada en la librería de registro de Java Log4j2.
No depende de servidores DNS de registro externos para verificar y validar los objetivos vulnerables: al iniciarse, se crea un nuevo hilo escuchando en todas las interfaces y en el puerto 55555 (se puede cambiar usando el archivo .env o variables de entorno); esperará conexiones de callback de las máquinas vulnerables y notificará al hilo principal mediante una cola de Python. Ten en cuenta que es posible que necesites añadir reglas de firewall (y/o reglas de reenvío de puertos) para permitir conexiones entrantes al par IP:puerto de escucha.
Para aumentar las posibilidades de desencadenar la vulnerabilidad, la herramienta toma una URL como argumento (o una lista de URLs) y busca cualquier formulario incluido en la(s) URL(s) proporcionada(s). Luego intenta explotar la vulnerabilidad usando cada parámetro de cada formulario encontrado (peticiones GET y POST). Este es el comportamiento predeterminado, pero se puede deshabilitar usando la opción --skip-forms (en este caso solo se realizará 1 petición y el payload se colocará dentro de pocos campos de cabecera).
Además, se utilizan las siguientes cabeceras predefinidas para comprobar si los objetivos son vulnerables:
Se pueden añadir cabeceras personalizadas mediante la opción de línea de comandos.
Para una descripción completa del uso, consulta la sección siguiente.
python3 log4j_checker.py -h
usage: log4j_checker.py [-h] [--url URL] [--headers HEADERS [HEADERS ...]] [--urls URLS] [--skip-forms]
optional arguments:
-h, --help show this help message and exit
--url URL Single url you want to test (valid url is http(s)://host:[port]/[path])
--headers HEADERS [HEADERS ...]
Custom headers you want to try (space separated)
--urls URLS A file containing 1 url per line
--skip-forms Skip forms check (only perform 1 request)
Esta herramienta está pensada para usarse para probar tus propios sistemas.
NOTA IMPORTANTE: Esta herramienta no garantiza que tu servidor NO sea vulnerable incluso si el resultado es negativo. Esto se debe a que tu aplicación podría registrar el payload malicioso en otro lugar y no es posible cubrir todos los casos. Por lo tanto, la mejor manera de comprobar si eres vulnerable es buscar los paquetes vulnerables (es decir, log4j-core*.jar y log4j-api*.jar) en todo el sistema de archivos.