概要ファイルアップロードの脆弱性は、アップロード機能を持つアプリケーションで発生します。アプリケーションがユーザーのアップロードしたファイルを制御できなかったり、欠陥があったりすると、攻撃者はアプリケーションのアップロード機能の欠陥を悪用して、トロイの木馬やウイルスなどの有害なファイルをサーバーにアップロードし、サーバーを制御することができます。 脆弱性の原因と危険性ファイルアップロード脆弱性の主な原因は、アプリケーションにアップロード機能があるものの、アップロードされたファイルが厳密な正当性検証を受けていないか、検証機能に欠陥があり、トロイの木馬ファイルがサーバーにアップロードされてしまうことです。ファイルアップロードの脆弱性は、悪意のあるコードがサーバーに直接アップロードされる可能性があるため、非常に有害であり、サーバーの Web ページの改ざん、Web サイトのハッキング、サーバーのリモート制御、バックドアのインストールなどの深刻な結果を引き起こす可能性があります。 以下では、ファイルのアップロードに関するいくつかの検証およびバイパス方法について説明します。 1. ローカル検証(フロントエンド検証)フロントエンド JS フィルタリング バイパス アップロード脆弱性は、アプリケーションの検証がプログラムのバックエンドではなく、フロントエンドの JS コードを通じて行われるために発生します。このようにして、アップロード フィルタをバイパスし、フロントエンド JS コードを変更することでトロイの木馬をアップロードすることができます。 では、フロントエンド検証であるかどうかをどのように判断するのでしょうか?個人的には、アップロード時にデータ パケットをキャプチャできるかどうか、データ フローが存在するかどうか、または写真をアップロードするときにページにアップロードされた画像のアドレスが表示されるかどうかを確認できると思います。 バイパス: フィルター コードを削除するか、Javascript を変更または無効にします。 2. バックエンドの検証とバイパスファイルアップロードの一般的な検証: サフィックス (直接検証)、ファイル、ファイル ヘッダー (間接検証)。 2.1 接尾辞2.1.1 ブラックリスト(明示的にアップロードが許可されていないスクリプト形式のサフィックス) ファイル名フィルタリングバイパスの脆弱性は、主にファイルのアップロードの種類がブラックリスト方式によって決定され、完全なフィルタリングが行われないため、攻撃者がブラックリストの種類以外のファイルをアップロードできることに起因します。 ブラックリストの判定方法: ファイルをアップロードすると、xxx 形式のファイルのアップロードは許可されていないというメッセージが表示されます。 バイパス: 他の形式 (php5、Phtml、php3) またはファイルケースを使用し、バイパスするノイズ シンボルを追加することもできます。 2.1.2 .htaccess (疑似静的プロトコル) - 書き換え解析 (Apache には疑似静的モジュールのみがあり、これをオンにします) .htaccess ファイルのアップロードは、.htaccess ファイルを使用して、jpg や png などのサフィックスを持つファイルを PHP ファイルとして解析するように Web サーバーを構成するプロセスです。 .htaccess ファイル (分散構成ファイル) は、ディレクトリごとに構成を変更する方法を提供します。 1 つ以上の構成ディレクティブを含むファイルは特定のドキュメント ディレクトリに配置され、ファイル内のディレクティブはそのディレクトリとそのすべてのサブディレクトリに適用されます。 .htaccess は Web サーバーの設定ファイルです。.htaccess ファイルを使用して、Web サーバーの定義ファイルの解析方法、リダイレクトなどの設定を実装できます。 バイパス方法: まず 1.htaccess ファイルをアップロードします。 2. 写真を再度アップロードします。 2.1.3 スペースバイパス バイパス方法: バイパスするデータ パケット内のファイル サフィックスの後にスペースを追加します。 2.1.4 . バイパス バイパス方法: スペース バイパス方法と同様に、バイパスを実現するには、データ パケット内のファイル サフィックスの後に . を追加します。 2.1.5 ::$データバイパス これはWindows固有のプロトコルです。Windowsではファイル名+「::$DATA」を使用した場合、::$DATA以降のデータはファイルストリームとして扱われ、サフィックスは検出されず、::$DATA以前のファイル名が保持されます。サフィックスをチェックしないようにするのが目的です。 2.1.6 循環フィルタリング バイパス: コードは文字列内の php を何もないものに置き換えます。 たとえば、a.pphphp は ->a になります。 2.1.7 ホワイトリスト: アップロードできるフォーマットのサフィックスを指定する (より安全) %00 切り捨て、0x00 切り捨て (アドレスの原則に基づいて、ファイルの後ろのデータを切り捨てます) 00 切り捨てバイパスは、フロントエンド検証のみをバイパスできます。 切り捨てられる主な理由は、文字 %00 の存在です。PHP < 5.3.4 の場合、これが終了文字とみなされ、後続のデータが直接無視され、切り捨てられます。アップロード時にアップロードされたファイルのパスが制御可能であれば、00 で切り捨てられ、トロイの木馬がアップロードされる可能性があります。 バイパス方法 (パス%00 切り捨て):
3. ファイルタイプの検証3.1 ファイルヘッダー検出: ファイルヘッダーコンテンツ情報 (gif89a など)ファイルごとに固有のファイル ヘッダー形式があります。開発者は、アップロードされたファイルのファイル ヘッダーをチェックしてファイルの種類を検出します。ただし、この検出方法は、トロイの木馬ファイルのヘッダーに対応するファイル ヘッダーを追加することで回避することもできます。これにより、トロイの木馬ファイルの通常の動作に影響を与えることなく検出を回避できます。 一般的なファイル ヘッダーは次のとおりです。 JPEG 0xFFD8FF PNG0x89504E470D0A1A0A GIF 47 49 4638 39 61 (GIF89a) バイパス方法:
動画 <?php echo`$_REQUEST[cmd]`; ?>
画像に文章トロイを直接挿入してアップロードします。 ———ファイル包含原則を使用します。 cmd コマンドを使用して、通常の画像 1.jpg とトロイの木馬の文章を含むファイル a.txt を新しい test.php トロイの木馬ファイルに結合します。 cmd コマンド: 1.jpg/b+a.txt test.php をコピーします。 3.2 コンテンツタイプの検出Content-Type は、ネットワーク ファイルのタイプと Web ページのエンコードを定義するために使用されます。これは、ファイルの受信者に、ファイルをどのような形式とエンコードで読み取るかを指示するために使用されます。異なるファイルは異なるコンテンツ タイプに対応します。たとえば、jpg ファイルのコンテンツ タイプは image/jpeg ですが、php ファイルのコンテンツ タイプは application/octet-stream です。 Content-Type はデータ パケットのリクエスト ヘッダーにあります。開発者は Content-Type のタイプを使用して、ファイルのアップロードが許可されているかどうかを判断します。 バイパス: Content-Type のタイプはパケットをキャプチャすることで改ざんされる可能性があるため、パケットをキャプチャしてデータ パケットの Content-Type を変更し、Content-Type の判断をバイパスすることができます。 MIME: タイプを判断することでファイル拡張子を推測し、パケット キャプチャ ツールを使用して Content-Type を改ざんすることができます。たとえば、image/pjpeg、image/jpeg、image/gif、image/png のいずれかに変更すると、フィルタリングをバイパスできます。 4. コンテンツ等4.1 論理セキュリティ: 条件付き競争 (システム占有と同等)定義: 競合状態は、複数のスレッドがロックや同期操作を実行せずに同じ共有コード、変数、ファイルなどに同時にアクセスし、操作の結果が異なるスレッドがデータにアクセスする順序によって決まる場合に発生します。まずファイルをサーバーにアップロードし、サーバーはルールに従って画像を保存するか削除するかを選択します。脆弱性は、ファイルがサーバーに保存される前に正当性が確認されないことにあります。ファイルは保存後にチェックされますが、競合状態の脆弱性を悪用して、ファイル書き込み機能を持つトロイの木馬をアップロードし、アップロードされたトロイの木馬を削除する前にアクセスして、新しいトロイの木馬を書き込むことができます。 バイパス: ファイルをサーバーにアップロードした後、ファイル パスにアクセスし続けます。条件付き競合により、Webshell のアップロードの目的が達成されます。脆弱性の悪用は、コンテンツを継続的にアップロードするためのリクエストを送信することです。このようなアクセスにより、新しいトロイの木馬ファイルが生成され、その後、このファイルに継続的にアクセスするための別のリクエストが送信されます。競合条件の脆弱性が悪用されると、新しいトロイの木馬が生成されます。 4.2 ディレクトリの命名バイパス: アップロードの目的を達成するために、サーバーがファイルをフォルダーとして認識できるように、/. サフィックスを追加します (例: -x.php/)。 5. その他の脆弱性スクリプト関数の脆弱性 - CVE CVE-2017-12615 CVE-2015-5254 CVE-2019-2618 ...... これらの脆弱性を悪用する方法についてはオンラインでチュートリアルが公開されていますので、興味のある方は情報を確認してください。 6. ミドルウェア解析の脆弱性6.1 IIS 6.0+ 解析の脆弱性/.php をチェックして文字化けしたコードがあるかどうかを確認し、解析の脆弱性を素早く判断します。文字化けしたコードがある場合は存在しますが、ない場合は存在しません。 6.1.1 フォルダとして実行通常のファイル名: image/aa.jpg。 バイパス: image.asp/aa.jpg aa.jpg は asp として解析されます。 6.1.2 ファイルとして実行通常のファイル名: image.jpg。 バイパス: image.asp;.jpg または xxx.asp;xxx.jpg このファイルは asp として実行されます。 asp は php に置き換えることができます。php に変更すると、php として実行できます。 7. WAFバイパスWAF をバイパスするには、次のようなパラメータを変更できることを理解する必要があります。
一般的なバイパス方法: 7.1 データオーバーフロー(ゴミデータの埋め込み)WAF 検出上限を使用して、一致できないほど大量のジャンク データを追加します。これはオーバーフロー脆弱性に似ています。通常、干渉データはアップロード パラメータの後に追加できます。ジャンク データとパラメータの間に追加することを忘れないでください。そうしないと、データ パケットがエラーを報告します。 7.2 シンボルの変更 ('";)プログラム開発の脆弱性を悪用して、アップロードの目的を達成するために、データ パケット内のアップロード パラメータ内のシンボルが置換、追加、または削除されます。のように たとえば、x.jpg;.php の場合、セミコロンはデータの終わりを示します。 7.3 データの切り捨て (%00; 改行)ファイル拡張子の後に %00 (スペース) を追加して切り捨てます (x.php%00.jpg)。 改行(プログラム内の \n に類似)は、次のようなデータ ブロック転送に類似しています。
データ パケットは実際には x\np\nh\np を識別します。 7.4 重複データこれは関数内の再帰ループに相当します。データ パケットにパラメータを複数回書き込む原理は、ガベージ データの原理と非常によく似ています。 8. 防御
|
<<: 私の世界では、ステーションBのUPホストが世界初の純粋なレッドストーンニューラルネットワークを構築し、チューリング賞を受賞したヤン・ルカンがいいねを転送しました。
>>: 避けるべきビジネス インテリジェンス実装の悪い例トップ 10
最近、 MindSporeは、北京大学生物医学フロンティアイノベーションセンター( BIOPIC )...
最近、テクノロジー分野の多くの人々がコンピューティング能力について懸念しています。 OpenAI C...
これらの提案により、LLM 申請の精度が向上し、適切な LLM を選択する方法についての考慮事項も含...
今日のデジタル世界では、人工知能とモノのインターネットが私たちの生活のあらゆる側面に大きな変化をもた...
約1週間の不安が去った後、国内のiOSアプリ開発者はようやく落ち着くことができた。中国におけるApp...
モデルとデータは AI システムの基盤であり、これら 2 つのコンポーネントはモデルの開発において重...
6月25日、「AIによるソフトウェアとハードウェア製品のイノベーションの促進」をテーマにした西安...
バージニア大学のダン・クイン教授と博士研究員のゾン・チアン氏は、生体力学、流体力学、ロボット工学を組...
[[399928]]製造業ではCADが広く使われています。 CAD は、その正確性、柔軟性、高速性に...
機械学習の手法を使用して問題を解決する場合、適切なデータを持つことが重要です。残念ながら、生データは...
またタトゥー?興味深いのは、この取引の解約手数料の詳細がまだ発表されていないことです。現時点では、独...
Microsoft Research Asia の最新の調査は少々衝撃的だ。彼らは、実際にトークンを...