web-dev-qa-db-ja.com

HEADERに存在しないWebサーバーを検出する方法はありますか?

特定の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で存在しない部分(ConnectionPragmaなど)を削除すると、nginXに非常に似たものになります。 Serverresponseの末尾にあると思います。そして、その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のこのリストで更新する必要があります。 ;-)

30
ALH

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サーバーは、署名を難読化したり、別のサーバーになりすますことができます。必要に応じて、少々の塩で情報を取ってください。

28

サーバーにネイティブエラーページを表示できるかどうかを確認してみてください。エラーページは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>
7
user2428118