権限の取得方法についての簡単な説明: ファイルのアップロード

権限の取得方法についての簡単な説明: ファイルのアップロード

概要

ファイルアップロードの脆弱性は、アップロード機能を持つアプリケーションで発生します。アプリケーションがユーザーのアップロードしたファイルを制御できなかったり、欠陥があったりすると、攻撃者はアプリケーションのアップロード機能の欠陥を悪用して、トロイの木馬やウイルスなどの有害なファイルをサーバーにアップロードし、サーバーを制御することができます。

脆弱性の原因と危険性

ファイルアップロード脆弱性の主な原因は、アプリケーションにアップロード機能があるものの、アップロードされたファイルが厳密な正当性検証を受けていないか、検証機能に欠陥があり、トロイの木馬ファイルがサーバーにアップロードされてしまうことです。ファイルアップロードの脆弱性は、悪意のあるコードがサーバーに直接アップロードされる可能性があるため、非常に有害であり、サーバーの 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 切り捨て):

  • 検証関数が通過できるように、test を test.php%00aaa に、1.php を 1.jpg に変更します。

  • test.php%00aaa で、%00 の URL エンコードを行います。%00 を選択して [選択範囲の変換] コマンドを選択し、[URL] コマンドを選択して、[URL デコード] コマンドを選択してエンコードを行います。

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 論理セキュリティ: 条件付き競争 (システム占有と同等)

定義: 競合状態は、複数のスレッドがロックや同期操作を実行せずに同じ共有コード、変数、ファイルなどに同時にアクセスし、操作の結果が異なるスレッドがデータにアクセスする順序によって決まる場合に発生します。まずファイルをサーバーにアップロードし、サーバーはルールに従って画像を保存するか削除するかを選択します。脆弱性は、ファイルがサーバーに保存される前に正当性が確認されないことにあります。ファイルは保存後にチェックされますが、競合状態の脆弱性を悪用して、ファイル書き込み機能を持つトロイの木馬をアップロードし、アップロードされたトロイの木馬を削除する前にアクセスして、新しいトロイの木馬を書き込むことができます。

バイパス: ファイルをサーバーにアップロードした後、ファイル パスにアクセスし続けます。条件付き競合により、Webshel​​l のアップロードの目的が達成されます。脆弱性の悪用は、コンテンツを継続的にアップロードするためのリクエストを送信することです。このようなアクセスにより、新しいトロイの木馬ファイルが生成され、その後、このファイルに継続的にアクセスするための別のリクエストが送信されます。競合条件の脆弱性が悪用されると、新しいトロイの木馬が生成されます。

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 をバイパスするには、次のようなパラメータを変更できることを理解する必要があります。

  • コンテンツ配置: 通常は変更可能です。
  • name: フォームパラメータ値。変更できません。
  • filename: ファイル名。変更可能です。
  • Content-Type (ファイル固有のタイプ): ファイルの MIME タイプ。必要に応じて変更します。
  • WAF バイパスの核心は、変更可能なパラメータ名の後にテストを継続的に変更し、バイパスを試行することです。

一般的なバイパス方法:

7.1 データオーバーフロー(ゴミデータの埋め込み)

WAF 検出上限を使用して、一致できないほど大量のジャンク データを追加します。これはオーバーフロー脆弱性に似ています。通常、干渉データはアップロード パラメータの後に追加できます。ジャンク データとパラメータの間に追加することを忘れないでください。そうしないと、データ パケットがエラーを報告します。

7.2 シンボルの変更 ('";)

プログラム開発の脆弱性を悪用して、アップロードの目的を達成するために、データ パケット内のアップロード パラメータ内のシンボルが置換、追加、または削除されます。のように

たとえば、x.jpg;.php の場合、セミコロンはデータの終わりを示します。

7.3 データの切り捨て (%00; 改行)

ファイル拡張子の後に %00 (スペース) を追加して切り捨てます (x.php%00.jpg)。

改行(プログラム内の \n に類似)は、次のようなデータ ブロック転送に類似しています。

  • x
  • p
  • h
  • p

データ パケットは実際には x\np\nh\np を識別します。

7.4 重複データ

これは関数内の再帰ループに相当します。データ パケットにパラメータを複数回書き込む原理は、ガベージ データの原理と非常によく似ています。

8. 防御

  • Baota や WAF などのセキュリティ製品を導入します。
  • アップロードされたコンテンツを複数回厳密にチェックします。
  • ファイルの内容の整合性チェックを実行します。

<<:  私の世界では、ステーションBのUPホストが世界初の純粋なレッドストーンニューラルネットワークを構築し、チューリング賞を受賞したヤン・ルカンがいいねを転送しました。

>>:  避けるべきビジネス インテリジェンス実装の悪い例トップ 10

推薦する

1 行のコードで AI モデルの推論速度が 10 倍に向上します。 Reddit の技術共有は「恥知らずな自己宣伝」として揶揄される

Reddit フォーラムでは、さまざまな AI テクノロジーについて頻繁に議論されています。最近、あ...

機械学習を簡単に理解!クラスタリング、回帰、分類アルゴリズムを説明する 3 つのケース

機械はどのように学習し、何を学ぶのでしょうか?人間はどうやって機械に学習を教えるのでしょうか?この記...

8つの一般的なアルゴリズムのアイデアを説明する1つの記事

アルゴリズムとデータ構造は、常にプログラマーの基本的なスキルでした。データ構造の基本インフラストラク...

データサイエンスの分野で働くにはどのようなスキルが必要ですか?

本記事では、海外KDnuggetsフォーラムにおけるSimplilearnの統計結果と、国内有名求人...

AIがトランプ氏をダンサーに変身させ、蔡旭坤とともに「チキン、ユー・アー・ソー・ビューティフル」を踊った

[[357996]]この記事はLeiphone.comから転載したものです。転載する場合は、Leip...

効率的で正確な通関手続きのニーズを満たすために、生体認証技術がセキュリティ検査シナリオに導入されています。

空港のセキュリティは、航空機と乗客の生命と財産の安全を確保するために、爆発性、可燃性、腐食性の物品、...

普及モデルはどのようにして新しい世代の意思決定エージェントを構築するのでしょうか?自己回帰を超えて長いシーケンス計画軌道を生成する

部屋の中に立っていて、ドアに向かって歩こうとしていると想像してください。自己回帰を使用して、一歩ずつ...

教師なし学習アルゴリズム: 異常検出

外れ値とは何でしょうか? Hawkins (1980) は外れ値の基本的な定義を与えました: 外れ値...

iPhoneXの顔認識はどのようなデータセキュリティの考え方を誘発するのでしょうか?

[[204618]]今年のAppleカンファレンスでは、iPhone Xの「フロントバン」が観客の...

...

NTTとシスコがAR技術を活用して生産性を向上

[[400946]]距離がチームワークを制限するべきではないメンテナンスの問題をより早く解決世界中の...

...

「幻想」を消し去れ! Google の新しい ASPIRE メソッドにより、LLM は自己採点が可能になり、その効果はボリューム モデルよりも 10 倍優れています。

大規模モデルの「幻覚」問題は解決されつつあるのでしょうか?ウィスコンシン大学マディソン校とグーグルの...