1

例外をスローする無効なクエリ文字列を使用して、誰かがサーバー ページにアクセスしようとしています。

クエリ文字列 =./../../../../../../../../../windows/system32md.exe

例外:

ファイル 'C:\windows\system32md.ex' が見つかりませんでした。この種の攻撃を防ぐ方法。

4

2 に答える 2

2

これは CSRF 攻撃ではありません。あなたもそれらのいずれかを持っているかもしれないし、持っていないかもしれません - 言うことはできません.

ディレクトリ トラバーサル攻撃です。

次のような GUID を持つパスを作成しています: Server.MapPath("~\folder\" + GUID)

次に、GUID 変数に~\folder「go-up-a-directory」文字列 ( ) を含めることで、そのパスをルートの外側で終了させることができます。..したがって、サーバーのファイルシステム上の任意のファイルにアクセスできる可能性がありますが、これは良いことではありません。

ファイル名にユーザー入力を使用する前に、期待する制限された形式であることを確認する必要があります。ディレクトリ トラバーサル攻撃と同様に、Windows ファイル名で実行できる奇妙なことが他にもいくつかあります (予約された名前、無効な名前、偶発的な UNC パス、サポートされていない Unicode 文字など)。あなたが期待します。

実際の G​​UID の場合、正規表現に対して検証を行う必要があります。

[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}

または、.NET 4.5 を使用している場合は、Guid.TryParseを使用できます。

また、誰かがこれを積極的に悪用しようとしていて、承認されたセキュリティテストを行っている会社の誰かではない場合、問題が発生しており、攻撃がどこから来ているのかを調査する必要があります.

于 2013-04-09T09:31:40.493 に答える
0

最善の解決策は、ホワイトリストのフォルダー名をデータベースまたは XML ファイルに含めることです。クエリ文字列を取得したら、リストに対して実行して TRUE と FALSE を返します。フォルダ名でない場合は、GUID パターンのロジックを実行します。CSRFではなくXSSだと思います。

于 2013-04-09T06:55:27.397 に答える