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

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

概要

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

脆弱性の原因と危険性

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

ブログ    
ブログ    

推薦する

大型モデルを実行するカード、パフォーマンスは4090の80%に達し、価格は半分だけ:陳天奇TVMチームが制作

最近、テクノロジー分野の多くの人々がコンピューティング能力について懸念しています。 OpenAI C...

...

優れた LLM アプリケーションを構築するための 4 つの重要なポイントのうち、どれを見つけましたか?

これらの提案により、LLM 申請の精度が向上し、適切な LLM を選択する方法についての考慮事項も含...

...

エッジAIはIoTのメリットを高める

今日のデジタル世界では、人工知能とモノのインターネットが私たちの生活のあらゆる側面に大きな変化をもた...

App Store 中国、検索アルゴリズムを最適化:名前による検索を復活

約1週間の不安が去った後、国内のiOSアプリ開発者はようやく落ち着くことができた。中国におけるApp...

論文の90%はモデル中心です。AIの分野では、データとモデルのどちらが重要ですか?

モデルとデータは AI システムの基盤であり、これら 2 つのコンポーネントはモデルの開発において重...

AI はどのようにしてソフトウェアおよびハードウェア製品のイノベーションを実現するのでしょうか? Baidu Brain オープンデー 西安駅の暗号解読

6月25日、「AIによるソフトウェアとハ​​ードウェア製品のイノベーションの促進」をテーマにした西安...

マグロのように尾の弾力性を動的に調整する「ロボットマグロ」がサイエンス誌に掲載

バージニア大学のダン・クイン教授と博士研究員のゾン・チアン氏は、生体力学、流体力学、ロボット工学を組...

DeepMind の新しいモデルは CAD スケッチを自動的に生成します。ネットユーザー: 建築設計が飛躍しそうです

[[399928]]製造業ではCADが広く使われています。 CAD は、その正確性、柔軟性、高速性に...

自然言語処理の他に、Word2Vec で何ができるのでしょうか?

機械学習の手法を使用して問題を解決する場合、適切なデータを持つことが重要です。残念ながら、生データは...

Nvidia は Arm を買収して何をしたいのでしょうか?中国の承認後、クアルコムの影が再び現れる

またタトゥー?興味深いのは、この取引の解約手数料の詳細がまだ発表されていないことです。現時点では、独...

10000000000!マイクロソフトはTransformerを改良し、一度に多くのトークンを記憶できるようにした

Microsoft Research Asia の最新の調査は少々衝撃的だ。彼らは、実際にトークンを...