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

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

概要

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

脆弱性の原因と危険性

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

ブログ    
ブログ    
ブログ    

推薦する

OpenAI: 著作権のあるコンテンツを使用しないと、ChatGPTのようなAIモデルを開発することはできない

IT Homeは1月10日、ChatGPTの開発元であるOpenAIが最近、ChatGPTのようなA...

AI開発と倫理におけるリアリズムの役割

人工知能(AI)は、最初のコンピュータが発明されて以来、長い道のりを歩んできました。今日、人工知能は...

AIによる顔の改造の一般的な手法の詳細な説明

最近また「AI変顔」が流行っていますね。 Leiphone.com(公式アカウント:Leiphone...

ChatGPTを開発に組み込む10の実証済みの方法

絶えず変化するテクノロジー環境において、ChatGPT とその AI チャットボットは先頭に立って、...

顔認識だけでなく、「心を読む」こともできます。このような AI は好きですか?

世界はとてもカラフルです。この美しい地球に住むすべての人は、理解されることを望み、注目されることを待...

AIエージェントは動物の進化の法則を学ぶ: Fei-Fei Liらが深層進化RLを提案

インテリジェントエージェントは人工知能分野の主要な研究テーマであり、非身体型知能と身体型知能に分けら...

...

データコレクターにおける TensorFlow を使用したリアルタイム機械学習

DataOps プラットフォームの真の価値は、ビジネス ユーザーとアプリケーションがさまざまなデータ...

Google は、ロボットにゴミを捨てることを教えることができる視覚言語アクション モデル RT-2 をリリースしました。

グーグルは7月28日、ゴミ捨てなどのタスクを理解できるようロボットを訓練するのに役立つ新しい人工知能...

Web攻撃検出のための機械学習の深層実践

1. 概要1. 従来のWAFの問題点従来の WAF は、ルールとブラックリストおよびホワイトリストに...

自動運転の運用設計領域(ODD)に関する記事

2021年4月30日、SAEはJ3016「運転自動化分類」の第4版をリリースしました。これは、201...

2022年にJAXを使うべきでしょうか? GitHubには16,000個のスターがあるが、この若いツールは完璧ではない

2018 年後半の発売以来、JAX の人気は着実に高まっています。 2020年、DeepMindは研...

人工知能は大量失業を引き起こすでしょうか?中国人民政治協商会議全国委員会によるこの調査は、その答えを提供している。

2019年の注目産業よく知られている5G、ブロックチェーン、インターネットに加えてもう一つは人工知...

人工知能がサイバーセキュリティに及ぼす3つの影響

人工知能 (AI) と機械学習 (ML) は、人々の働き方、話し方、ビジネスのやり方を根本的に変えて...

Iconfinder が著作権侵害を排除する方法、ハッシュ アルゴリズムが画像の複製を検出

Iconfinder は、デザイナー、開発者、その他のクリエイティブ ワーカー向けに優れたアイコンを...