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

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

概要

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

脆弱性の原因と危険性

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

ブログ    
ブログ    

推薦する

公正な AI システムを構築するにはどうすればよいでしょうか?

人工知能はあらゆる業界の企業で急速に導入されており、企業は今後 3 年間で AI システムへの支出を...

...

3分レビュー! 2021年12月の自動運転業界の開発動向を簡単に概観

チップ不足と疫病の影響により、今年初めから自動運転産業の発展は減速を余儀なくされたが、数ヶ月の回復期...

ヒット曲予測の成功率は97%?このリストは「偽造品と戦う」ためにあります

トレンドや動向を予測することは、あらゆる業界が熱心に取り組んでいることです。これにより、実務者は業界...

...

今後10年間で、AIは「スモールデータ」時代の到来を告げるでしょうか?

AI 研究に携わる人なら誰でも、データが AI の開発において重要な役割を果たすことをよく知ってい...

AIが物流とサプライチェーン管理をどう変えるか

今日の急速に変化し、ますますグローバル化が進む世界では、物流およびサプライ チェーン業界は、世界中で...

中国移動のチーフサイエンティスト、馮俊蘭氏との独占インタビュー:AIビジネスアプリケーションは何度も融合する必要がある

「インテリジェンス」が本格的に到来!人工知能(AI)は、科学技術革命と産業変革の新たなラウンドにおけ...

...

人工知能は医療従事者の燃え尽き症候群を軽減すると期待されている

[[266831]]臨床医は世界で最も困難な仕事の一つです。彼らは、高齢の患者層に対応するために24...

...

ゲームの背後にあるAIストーリー:小規模サンプル学習と転移学習

2019年、人間と機械のゲームバトルにおいて、Open AI Fiveが圧倒的なパフォーマンスでD...

転移学習とクロスドメイン推奨、およびクロスドメイン推奨のソリューション

この記事では、主にクロスドメインの推奨事項について詳しく紹介します。内容は以下のとおりですが、これら...