1

バックグラウンド

IIS でホストされている脆弱なサービスに対してパス トラバーサル攻撃を実行しようとしています。

サービスは次のようなものです。

GET /api/download/{file-name}

基になるコードは次のようなものです。

return File.Read("some/directory/" + fileName);

書かれているように、このサービスは明らかに脆弱です。

ケストレルアタック

dotnet runKestrel Web サーバーを使用して収集した をローカルで実行すると、パス トラバーサル攻撃を実行できます。私の攻撃ペイロードは..\..\secret.txt、エンコードされてログに表示されます:

Request starting HTTP/1.1 GET http://localhost/api/download/..%5C..%5Csecret.txt

IIS 攻撃

IIS でホストされている場合、同じアプリでこの攻撃を再現できません。IIS は何らかの形で を解釈して URI を正規化しているよう..\です。つまり、API にヒットすることはありません。つまり、次のエンドポイントにヒットしようとします。

GET http://localhost/secret.txt

..\文字シーケンスにさまざまなエンコーディングを試しましたが、うまくいきませんでした。

質問

この IIS の動作を回避して、IIS でホストされているこの脆弱なアプリに対してパス トラバーサル攻撃を実行するにはどうすればよいですか?

4

2 に答える 2