Web 脆弱性 - RCE コードとコマンド実行脆弱性を徹底解説 - Web 脆弱性の原理と条件 - モジェ射撃場の詳細解説

目次

1.地図

2. RCE脆弱性の紹介

3. コード実行脆弱性の例

4. コマンド実行脆弱性の例

5. 脆弱性の条件

<Webサイトのソースコードレベル>

<Webサイト申請レベル>

6. 脆弱性の検出

7. ブラックボックス - アプリケーションレベル - 脆弱性の例

8. ホワイトボックスコードレベルの脆弱性の例

9. Black Box - RCE Public Vulnerability - 脆弱性の例

10.脆弱性の場所

<コード実行脆弱性>

<コマンド実行脆弱性>

11. Javaweb-Struts2 フレームワーク クラス RCE 脆弱性 - 脆弱性レベル


1.地図

2. RCE脆弱性の紹介

        「リモートコマンド実行」英名:RCE(remotecode execution)、RCE脆弱性と呼ばれ、ユーザーがブラウザを通じて実行コマンドを送信することを意味します。サーバーは実行機能をフィルタリングしないため、コマンドは絶対パスを指定せずに実行されます攻撃者は、プログラムの実行環境の $PATH またはその他の側面を変更することにより、悪意を持って作成されたコードを実行する可能性があります。」

        Web アプリケーションでは、プログラマーは、柔軟性と単純さを考慮するために、コードまたはコード内のコマンド実行関数を呼び出すことがあります。たとえば、アプリケーションが文字列をコードに変換できる関数を呼び出す場合、ユーザーが文字列を制御できるかどうかを考慮しないため、コード実行の脆弱性が発生します。また、システム コマンド処理を呼び出すと、コマンド実行の脆弱性が発生します。

3. コード実行脆弱性の例

1. 下図のように php コードを記述します。

<?php
        $code=$_GET['x'];
        eval($code);
?>

       補足: eval() 関数は、php コードに従って文字列を実行できます。

2. 先ほど作成したphpファイルにアクセスすると、パラメータ以降の内容が「phpinfo()」と書かれており、Webページがphpinfo()文を実行し、エコーしていることが分かります。

3. 先ほど作成したphpファイルにアクセスし、内容をパラメータの後に「echo 123;」と書くと、Webページがecho 123文を実行し、エコーしていることが分かります。

4. まとめ:

        上記はコード実行の脆弱性の小さなデモンストレーションです. コード実行の脆弱性は、現在の Web サイト スクリプト タイプで次のパラメータを実行することです. たとえば、この例の Web サイト スクリプトは php であり、Web ページは入力コードを実行します。 phpコードに。

        この機能により、人それぞれの目的に応じて、ファイルの書き込みや読み込みなどの操作を実現できます。

4. コマンド実行脆弱性の例

1. 前の例の eval() 関数を system() 関数に置き換えて保存します。

<?php
        $code=$_GET['x'];
        echo system($code);
?>

       補足:system()関数は、phpのコード通りに文字列を実行できます。

2. 先ほど作成したphpファイルにアクセスし、パラメータの後に内容を「var」と書くと、Webページがシステムステートメントvarを実行し、エコーしていることが分かります。

3. 先ほど作成したphpファイルにアクセスすると、パラメータ以降の内容が「ipconfig」と書かれており、Webページがシステムステートメントipconfigを実行し、エコーしていることが分かります。

3. 先ほど作成したphpファイルにアクセスし、パラメータの後に内容を「dir」と書くと、Webページがシステムステートメントdirを実行し、エコーしていることが分かります。

5. まとめ:

        上記は、コマンド実行の脆弱性の小さなデモです. コマンド実行の脆弱性は、現在のシステム タイプで次のパラメータを実行することです. たとえば、この例のシステムは Windows であるため、Web ページは入力された Windows コマンドを実行できます.

        この機能により、人それぞれの目的に応じて、ファイルの書き込みや読み込みなどの操作を実現できます。

5. 脆弱性の条件

<Webサイトのソースコードレベル>

  • 可制御変数
  • 脆弱な機能

<Webサイト申請レベル>

        たとえば、ニュース記事タイプの Web サイトでは、クエリ インターフェイスやその他の拡張機能を持たない一部のページのみが表示されるため、コード実行やコマンド実行の脆弱性が発生する可能性は低くなります。

        もう 1 つの例は、ファイルのアップロードなどの抜け穴がある可能性が高い Web サイトのアップロードとダウンロードです。 

6. 脆弱性の検出

        脆弱性の検出は、ホワイト ボックス検出とブラック ボックス検出の 2 つの側面に分けられます。

        ホワイトボックス検出とは、ウェブサイトのコードやその他の情報を知り、検出を実行することであり、コード監査を実行することと同じです。

        ブラックボックス検出とは、何も知らずに検出することで、ツールを使用したり、インターネットで公開されている脆弱性を検索してテストしたりできます。URL の背後にあるパラメーター値を観察することで、脆弱なコードに関連しているかどうかを判断することもできます。

7. ブラックボックス - アプリケーションレベル - 脆弱性の例

        ここで使用するのは、モジェ射撃場の下の図に示す射撃場です。

1.撮影範囲に入ると、WebページにIPを入力するための入力ボックスがあることがわかります。

2. IP を入力すると、Web ページは入力された IP に対して ping コマンドを実行します。

3. 上記のテストにより、システム コマンドを実行できると判断できるため、ここにコマンド実行の脆弱性が存在する可能性があると推測できます。同時に、前述の脆弱性の 2 つの条件を満たしているかどうかを検討します。

  • 制御可能な変数: ip 入力ボックス。
  • 脆弱性機能: ここでは ping コマンドを使用するため、コマンド実行機能があります。

    上記の 2 つの条件を満たしているため、ここにコマンド実行の脆弱性が存在する可能性があると推測できます。

4.まず、このウェブサイトのオペレーティングシステムが何であるかを分析する必要があります。オペレーティングシステムが異なるため、実行したいコマンドが異なるためです。ここでの ping コマンドは、Linux システムと Windows システムの両方で使用できますが、他のコマンドは必ずしもそうではありません。

5. Web ページを確認した後、Web ページを更新すると、ネットワークの下のデータ パッケージで、そのシステムがLinuxの下の ubuntu システムであることがわかります。

 5. オペレーティング システムを理解したら、引き続きテストを行います。入力ボックスに「id」と入力して実行すると、入力内容がIPアドレスかどうかを相手が確認するという意味で、入力ミスのリマインダーがWebページから返ってくることがわかります。

6. このことから、1 つのコマンドで複数のコマンドを実行できる Linux システム コマンドのパイプ文字「|」を考えます。そのため、検索ボックスに「127.0.0.1|ls」と入力しようとしますが、下の図に示すように、この方法はまだ実行できません。

 7. しかし、ここで入力したコンテンツを送信すると、Web ページにポップアップ表示されるエラー ウィンドウに、「このページでダイアログ ボックスを作成できないようにする」という余分な行が表示されます。これは、検証がフロントエンドで実行されることを意味します。

8. Web ページのソース コードをチェックして、入力内容をチェックする機能を確認します。つまり、この Web サイトの検出は、サーバーの検出ではなく、フロントエンド ページの検出です。

 9. この関数は js コードで記述されているため、ローカルの js を無効にして検出機能を実行できないようにするか、パケット キャプチャ ツールを使用してパケットをキャプチャし、パケットをキャプチャした後にパケットの内容を変更して、同じことができます フロントエンド検出はバイパスされます。

10. ここで、「このページがこれ以上ダイアログ ボックスを作成できないようにする」にチェックを入れます。これにより、ローカル js が実際に無効になります。

11. 次に、2 番目の方法を使用します。最初に入力ボックスに合法的なコンテンツを入力し、次に burp suite を使用してパケットをキャプチャします。

12. キャプチャしたデータ パケットを「Repeater」に送信します。 

13. データ パッケージを変更した後、「|」以降のコマンドが正常に実行され、ディレクトリが正常に表示されていることがわかります。

14. ここで、この射撃場の答えとなるはずの「キー」ファイルがあることがわかりますので、それを読み取ることができます。

15. 図に示すようにデータ パッケージを変更し、「キー」ファイルの下のコンテンツを正常に読み取ります。

8. ホワイトボックスコードレベルの脆弱性の例

        ここで使用するのは、モジェ射撃場の下の図に示す射撃場です。

1. 射撃場を開くと、ウェブサイトの元のコードを示す次のページが表示されるので、ホワイト ボックス テストに相当します。

2. 分析コード:

  • base64_decode: base64 を使用して次のコンテンツを復号化します。
  • gzinflate: 暗号化されたプロパティです。
  • eval: 次の文字列をコードとして実行します。

3. 上記の分析により、コード実行の脆弱性が存在する可能性が高いと考えられます。

4. 指定された php ステートメントを実行する php オンライン Web サイトを見つけて、それがどのように見えるかを確認します。

5. 最後に、ソース コードと組み合わせると、その機能がパラメーター a を受け取り、受け取ったパラメーター a を実行することであることがわかります。

6. 先ほどの解析によると、url の後にパラメータ a を追加し、そこに閲覧コマンド「ls」を割り当てます.アクセス後、Web ページが「ls」コマンドを実行し、その下のコンテンツを返すことがわかります.道。

7. ここに、この射撃場の答えとなるはずの「キー」ファイルがあることがわかりますので、それを読み取ることができます。

 8. この時点で質問があるかもしれません. eval 関数はコードを実行しません. なぜここでシステム コマンドが実行されるのですか?

        答えは、元のコードを監査すると、eval 関数に「echo」があり、復号化されたコードに「`」記号があることがわかります。「echo」と「`」を削除すると、コード実行の脆弱性 この 2 つのコンテンツの存在により、ここにコマンド実行の脆弱性が存在します。

        補足: 「`」記号は、Windows ではなく、Linux にあります。

9. 例を挙げてください。

10. まず、下図に示すように php ファイルを作成します。

11.アクセス後、まずテストするコードを入力→有効→コード実行脆弱性。

12. システム コマンドを入力してテスト --> エラーを表示、影響なし --> コマンド実行の脆弱性ではありません。

9. Black Box - RCE Public Vulnerability - 脆弱性の例

        ここで使用するのは、モジェ射撃場の下の図に示す射撃場です。

1. 射撃場を開くと、以下のページが表示されます。

2. Web ページには明らかな「Webmin」が表示されますが、「Webmin」とは正確には何ですか? わからないところはチェック。

3. 検索した結果、「Webmin」が Unix システム用の管理ツールであることがわかりました。

4. では、この管理システムに抜け穴があるのではないでしょうか? それでもわからない場合は検索してください。

5. 検索した結果、「Webmin」システムには抜け穴があることがわかりました。

6. ここでユーザー名とパスワードを入力して、ポスト データ パケットを取得します。

 7. 以下のパスからデータ パッケージを見つけます。

8. [編集して再送信] をクリックし、オンラインで見つかったパケットの内容を貼り付けます。

 

9. 結果情報のプレビューを確認すると、次の内容が表示されます。  

10. パケットの内容を再度変更し、変更が完了したら [送信] をクリックします。 

11.現在のパスが正常に表示されました。

12. データ パケットの内容を再度変更し、変更が完了したら [送信] をクリックします。 

 13. 現在のディレクトリの内容が正常に表示されました。

14.検索した結果、このディレクトリの価格に必要なキー情報が見つかりませんでした.射撃場のヒントを確認し、キーがルートディレクトリにあることを確認してください.

15. ルート ディレクトリにアクセスします。

16. ここで、キー ファイルが正常に表示されます。

 17. キー ファイルを読み取ります。

18. キー値の取得に成功しました。

10.脆弱性の場所

<コード実行脆弱性>

<コマンド実行脆弱性>

         概要: コード実行の脆弱性であろうとコマンド実行の脆弱性であろうと、Web ソース コード、ミドルウェア プラットフォーム、およびその他の環境の 3 つのレベルで現れる可能性があります。

11. Javaweb-Struts2 フレームワーク クラス RCE 脆弱性 - 脆弱性レベル

        ここで使用するのは、モジェ射撃場の下の図に示す射撃場です。

 1. 射撃場を開くと、以下のページが表示されます。

 2.検索すると、以下の内容が得られ、アプリケーションフレームワークであることがわかります。

3. このフレームワークの脆弱性を検出するツールをインターネットで検索します。

4. URL をツールに入力して検出すると、そこに抜け穴があることがわかります。

5. 悪意のあるコードを使用して、キー ファイルの場所を確認します。

6. キー ファイルを確認し、キー値を正常に取得します。

おすすめ

転載: blog.csdn.net/weixin_62808713/article/details/129898297