特定のWebサイトが使用しているWebサーバーを検出しようとしています。たとえば、それがnginX、Apache、Tomcatなどであるかどうか。
通常、Live HTTP Headers
Firefoxアドオンを使用します。問題は、サイトがバックエンドを隠すことがあるということです。 HEADERに存在しないWebサーバーを検出する方法はありませんか?
編集1:@Question Overflow
の回答のいずれにも一致しないWebサイトからのサンプル出力:
HTTP/1.1 200 OK
Date: Mon, 29 Sep 2014 10:43:29 GMT
Content-Type: text/html
Transfer-Encoding: chunked
X-Powered-By: VideoHosting Framework/1.0.1
Cache-Control: no-cache, must-revalidate, no-cache="Set-Cookie", private
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Videohost/1.0.1
私も Linuxでhttprint
を使用しようとしましたが、テストしたすべてのWebサイトでICMP request timeout
が得られます。
編集2:
上記のHEADERは、nginXを使用していると確信しているWebサイトに非常に似ています。上記のHEADERで存在しない部分(Connection
、Pragma
など)を削除すると、nginXに非常に似たものになります。 Server
はresponse
の末尾にあると思います。そして、そのnginXがResponse
パケットの最後に追加したためです。
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 29 Sep 2014 12:51:37 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip
OWASPは、リストをnginXのこのリストで更新する必要があります。 ;-)
Webサイトがカスタムビルドのサーバーを使用してHTTPヘッダーを変更しない場合は、HTTP応答フィールドの配置の順序を調べることで試すことができます。から [〜#〜] owasp [〜#〜] :
Apache 1.3.23サーバー:
HTTP/1.1 200 OK
Date: ...
Server: ...
Last-Modified: ...
ETag: ...
Accept-Ranges: bytes
Content-Length: ...
Connection: ...
Content-Type: text/HTML
Microsoft IIS 5.0サーバー:
HTTP/1.1 200 OK
Server: ...
Expires: ...
Date: ...
Content-Type: text/HTML
Accept-Ranges: bytes
Last-Modified: ...
ETag: ...
Content-Length: ...
Netscape Enterprise 4.1サーバー:
HTTP/1.1 200 OK
Server: ...
Date: ...
Content-type: text/HTML
Last-modified: ...
Content-length: ...
Accept-ranges: bytes
Connection: ...
SunONE 6.1サーバー:
HTTP/1.1 200 OK
Server: ...
Date: ...
Content-length: ...
Content-type: text/html
Date: ...
Last-Modified: ...
Accept-Ranges: bytes
Connection: ...
さらに確認するには、GET / HTTP/3.0
などの不正なリクエストを送信して、非標準の応答を引き出すことができます。例:
Apache 1.3.23およびSunONE 6.1サーバー:
HTTP/1.1 400 Bad Request
Microsoft IIS 5.0サーバー:
HTTP/1.1 200 OK
Netscape Enterprise 4.1サーバー:
HTTP/1.1 505 HTTP Version Not Supported
上記の情報はかなり古いので、 httprint forautomated web server fingeringのようなペンテスティングツールをインストールすることができます。
Webサーバーは、署名を難読化したり、別のサーバーになりすますことができます。必要に応じて、少々の塩で情報を取ってください。
サーバーにネイティブエラーページを表示できるかどうかを確認してみてください。エラーページはWeb開発者がカスタマイズできますが、カスタマイズできない場合は、Webサーバーに関する多くの情報が表示されることがよくあります。
たとえば、これはUnixで実行されているApache 2.2.4の404 Not Foundエラーページです。
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /server-status was not found on this server.</p>
<hr>
<address>Apache/2.2.4 (Unix) mod_antiloris/0.4 Server at example.com Port 3128</address>
</body></html>
そして、これは同じサーバーから送信された400 Bad Requestエラーページ(GET / HTTP/1.1
のみで構成されるHTTP要求をtelnetを使用して送信することで取得)です。
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.2.4 (Unix) mod_antiloris/0.4 Server at 203.0.113.113 Port 3128</address>
</body></html>