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