水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > GET /../

GET /../

2008年11月15日(土曜日)

GET /../

公開: 2024年5月9日2時0分頃

yamagataさんのところから、「セルフチェック かんたん5 (プロアクティブ・ディフェンス) (yamagata.int21h.jp)」。

ふつうのブラウザから「../」入りのリクエストはできないはず、というお話ですね。

ブラウザを使わずに無理矢理送ることは可能ですが、IIS + ASP.NET の場合にはサーバ側で「../」を消化するような処理をされてしまうので、アプリケーションが「../」を含むURLを受け取ることはないようです。たとえば、

GET /foo/bar/../

を無理矢理送ったとき、アプリケーション側で Request.Url を見ても

/foo/

がリクエストされたようにしか見えません。bar/../ は最初から無かったことになります。では、

GET /../

のようにして外に出ようとするとどうなるかというと、IIS6はこんな感じのレスポンスを返します。

HTTP/1.1 403 Forbidden
Content-Type: text/html
Date: Sat, 15 Nov 2008 05:07:36 GMT
Connection: close
Content-Length: 32

<h1>Forbidden (Invalid URL)</h1>

うっ、やる気がまったく感じられない……。charsetパラメータも無いのが気になりますが、固定の値しか吐いていないのでたぶん大丈夫でしょう。IIS7だとこんな感じになりますね。

HTTP/1.1 403 Forbidden
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Sat, 15 Nov 2008 05:06:36 GMT
Connection: close
Content-Length: 312

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Forbidden</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Forbidden URL</h2>
<hr><p>HTTP Error 403. The request URL is forbidden.</p>
</BODY></HTML>

charsetパラメータが気になりますが、固定の値しか吐いていないのでたぶん大丈夫でしょう。

いずれにしても、アプリケーションが受け取る前にはたき落とされてしまいます。

関連する話題: Web / セキュリティ / IIS

最近の日記

関わった本など