ファイル アップロードの脆弱性は、アップロード機能を備えたアプリケーションで発生します。アプリケーションがユーザーのアップロード ファイルを制御できない場合、または欠陥がある場合、攻撃者はアプリケーションのアップロード機能の欠陥を悪用して、トロイの木馬をアップロードする可能性があります。ウイルスやその他の有害なファイルをサーバーに送信し、サーバーを制御します。
ファイル アップロードの脆弱性の主な理由は、アプリケーションにアップロード機能があるにもかかわらず、アップロードされたファイルが厳格な合法性テストやテストを受けていないことです。機能に欠陥があるため、トロイの木馬ファイルがサーバーにアップロードされます。ファイル アップロードの脆弱性は、悪意のあるコードがサーバーに直接アップロードされる可能性があるため、非常に有害であり、サーバーの Web ページの改ざん、Web サイトのハング、サーバーのリモート制御、バックドアのインストールなどの重大な結果を引き起こす可能性があります。
以下では、ファイル アップロードのいくつかの検証およびバイパス方法について説明します:
フロントエンド JS フィルタリングはアップロードの脆弱性を回避します。アプリケーションのため、プログラムはプログラムのバックエンドではなく、フロントエンドの JS コードを通じて検証されるため、フロントエンドの JS コードを変更することで、アップロード フィルタリングをバイパスし、トロイの木馬をアップロードできます。
では、フロントエンド検証であるかどうかを判断するにはどうすればよいでしょうか?個人的には、アップロードしてパケットをキャプチャするときにデータパケットを取得できるかどうか、データが流れているかどうか、アップロードした画像ページにアップロードした画像アドレスが表示されるかどうかなどを確認できるのではないかと考えています。
バイパス: フィルタリング コードを削除し、JavaScript を変更または無効にします。
ファイル アップロードの一般的な検証: サフィックス名 (直接検証)、ファイル、ファイル ヘッダー (間接検証)。
2.1.1 ブラックリスト (アップロードが明示的に許可されていないスクリプト形式のサフィックス)
ファイル名フィルタリング バイパスの脆弱性ファイルのアップロードのタイプはブラックリストによって決定され、完全なフィルタリングがないため、攻撃者はブラックリストのタイプ以外にファイルをアップロードする可能性があります。
ブラックリストの判定方法: ファイルをアップロードすると、xxx 形式のファイルのアップロードが許可されていないことを示すメッセージが表示されます。
バイパス: 他の形式 (php5、Phtml、php3) またはファイルケースを使用し、いくつかの干渉シンボルを追加してバイパスを実現することもできます。
2.1.2 .htaccess (擬似静的プロトコル) - 書き換え分析 (Apache でのみ利用可能で、擬似静的モジュールを有効にします)
.htaccess ファイルのアップロードは次のとおりです。 .htaccess を使用して実行 このファイルは、jpg や png などの拡張子が付いているファイルを PHP ファイルとして解析する処理を実現する Web サーバーの機能を設定できます。
.htaccess ファイル (分散構成ファイル) は、ディレクトリごとに構成を変更する方法を提供します。1 つ以上の構成ディレクティブを含むファイルは特定のドキュメント ディレクトリに配置され、ディレクティブは次のディレクトリに適用されます。このディレクトリとそのすべてのサブディレクトリ。 .htaccessはWebサーバーの設定ファイルで、Webサーバーにおける定義ファイルの解析方法やリダイレクトなどの設定を行うことができます。
バイパス方法: まず、1.htaccess ファイルをアップロードします。 2. 写真を再度アップロードします。
2.1.3 スペースのバイパス
バイパス方法: バイパスを実現するには、データ パケット内のファイル サフィックス名の後にスペースを追加します。
2.1.4. バイパス
バイパス方法: スペース バイパス方法と同様に、データ パケット内のファイル サフィックス名の後に . を追加してバイパスを実現します。
2.1.5 ::$data bypass
Windows 独自のプロトコルで、Windows ではファイル名「::$DATA」を指定すると::$DATA の後のデータをファイル ストリームとして、サフィックス名をチェックせずに、::$DATA より前のファイル名を保持します。その目的はサフィックス名をチェックすることではありません。
2.1.6 ループ フィルタリング
バイパス: コードは文字列内の php を何も置き換えません。
例: a.pphphp は ->a.
になります。2.1.7 ホワイトリスト: アップロードできる形式のサフィックスをクリアします (より安全です)
さまざまなファイルには特定のファイル ヘッダー形式があり、開発者はファイルをチェックしてファイルをアップロードします。ヘッダーはファイル タイプを検出しますが、この検出方法はバイパスすることもできます。対応するファイル ヘッダーがトロイの木馬ファイルのヘッダーに追加されている限り、トロイの木馬ファイルの通常の動作に影響を与えることなく検出をバイパスできます。
一般的なファイル ヘッダーは次のとおりです。
JPEG 0xFFD8FF
PNG0 x89504E470D0A1A0A
GIF 47 49 4638 39 61 (GIF89a)
ラップ方法:
#
?>
絵馬を作成cmd コマンドを使用して、通常の画像 1.jpg と、一文のトロイの木馬を含む a.txt ファイルを新しい test.php トロイの木馬ファイルに結合します。
cmd コマンド: 1.jpg/b a.txt test.php をコピーします。
3.2 Content-Type の検出
バイパス: Content-Type のタイプはパケット キャプチャを通じて改ざんできるため、パケットをキャプチャしてデータ パケットの Content-Type を変更し、Content-Type の判定をバイパスできます。
MIME: タイプを判断してファイルのサフィックス名を推測し、パケット キャプチャ ツールを使用して Content-Type を改ざん (image/pjpeg、image/jpeg、image/gif に変更するなど) できます。 、image/png. フィルタリングをバイパスすることもできます。
4. 内容とその他
バイパス: ファイルをサーバーにアップロードした後、ファイル パスへのアクセスを継続します。条件が競合するため、Web シェルをアップロードする目的は達成されます。この脆弱性は、リクエストを送信し、継続的にアップロードすることによって悪用されます。このようなアクセスは、新しいトロイの木馬ファイルを生成し、このファイルに継続的にアクセスするための別のリクエストを送信します。競合状態のエクスプロイトが成功すると、新しいトロイの木馬が生成されます。
4.2 ディレクトリの命名
5. その他の脆弱性
CVE-2017-12615
CVE-2015-5254
CVE-2019- 2618
....
これらの脆弱性を悪用する方法については、オンラインでチュートリアルが公開されているので、興味のあるマスターは情報を確認してください。
6. ミドルウェア解析の脆弱性
6.1.1 フォルダとして実行します
バイパス: image.asp/aa.jpg aa.jpg は asp として解析されます。
6.1.2 ファイルとして実行
バイパス: image.asp;.jpg または xxx.asp;xxx.jpg このファイルは asp として実行されます。
aspをphpに変更すればphpとして実行できるようになります。
7.WAF バイパス
7.1 データ オーバーフロー (ジャンク データの埋め込み)
7.2 シンボルの突然変異 ('";)
例: x.jpg;.php セミコロンはデータの終わりを表します。
以上が権限を取得するためのファイルのアップロード方法に関する簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。