この Web サイトはアップロード機能を提供します。これは、ショッピング モール、フォーラム、一部の一般的なネットワーク ディスク サイトなど、多くのサイトがよく備えている機能です。インターネット上では、「あるサイトにオンラインの脆弱性がある」「あるオープンソースプロジェクトにオンラインの脆弱性がある」という話をよく聞きます。 インターネット上には動的プログラムが出現し始め、さまざまなシステムに脆弱性が幽霊のように頻繁に出現します。ストレージの脆弱性がこれほど頻繁に現れるのはなぜですか?さらに、一部のシステムには繰り返しパッチが適用されていますが、何度もパッチが正常に適用されていません。実際、主な問題は依然としてストレージの原則から生じています。まずはアップロードの手順を見てみましょう。
ウェブサイト上の入金プロセスの分析
';<br> var_dump($_FILES);<br> echo '
上記は簡単なテスト例です。見てみましょう
分析してみましょう:
名前はアップロード時に選択したファイル名から取得されます
type はファイルの種類です。このタイプはどこから来たのでしょうか?ハハ、これは非常に重要です。 多くのファンは、これがサーバーによって自動的に生成されると考えるでしょう。 そう考えれば、それは可能だと思います。 PHPはアップロードをカプセル化しており、独自のクラスライブラリが付属しているようです。 しかし、逆に考えてみましょう。どの形式のファイルを選択しても、形式の種類が存在します。このように考えると、この値はユーザー入力からもたらされる可能性があると推測されます。 パケットをキャプチャしてタイプを確認してみましょう。
type 値もユーザー入力値から取得されます。
サイズは、プログラムによるファイル サイズの計算から得られ、自動的に計算されます。 私たちが知っているものと比較してください。
そんなに言うのはどういう意味ですか?
上で分析したファイル形式と開発中の脆弱性との間にはどのような関係があるのかと尋ね始めた友人もいると思います。 実際に、上で述べたファイル名 name 属性とファイル タイプ type 属性について考えてみましょう。 ファイルをサーバーに保存し、バックエンドで処理するときによく使用されます。 開発者として、これら 2 つの変数を使用する場合は、「すべてのコード入力は有害である」という原則を実装し続ける必要があります。使用する場合は、他の get 変数および post 変数と同様に扱います。 検出するには、すべての入力変数をフィルターします。
私たちがよく行うのは、ユーザー入力を特定の形式のファイルに制限し、その形式で保存することです。分析はここまでです。さらに分析する必要がある領域がたくさんあります。今日はまず概要を説明します。
次に、これら 3 つの一般的なタイプの脆弱性を分析します。
1. ファイルの生成にユーザーファイル名を使用すると、特殊文字のフィルタリングが厳密ではないため、ファイル生成に抜け穴が発生します
2. ファイルディレクトリを移動すると、ユーザーが渡したファイル名の連結により間違ったディレクトリが生成されます
3. ユーザーがタイプを入力したと信じて、ユーザーのファイル名をファイルとして直接保存します