【Webサーバー(IIS)】httpヘッダーにServerのバージョンが表示されてしまう脆弱性と対策
httpヘッダーにServerバージョン情報が
表示されてしまうという脆弱性の
指摘を受けた
今回はIISで動いているWebサーバーが
該当したためIISでの対策メモ
もちろんApacheやnginxでも
それぞれ対策方法があるはず
バージョンが表示されてしまう状況の再現と対策 その1
まずは普通にIEやらChromeやらEdgeで
該当のサイトにアクセスして
F12 開発用Windowを開く
ネットワークの応答ヘッダーあたりに
Serverのバージョンが表示されている
バージョン情報を出さないようにするには
IISマネージャ
URL書き換え
規則の追加
送信規制の空の規則
一致するスコープ サーバー変数
変数名 RESPONSE_SERVER
変数値 パターンに一致する
使用 正規表現
パターン .*
と設定
バージョンが表示されてしまう状況の再現と対策 その2
通常のアクセスだけなら上記で
対応できるのだが、
意図的に400 Bad Requestを起こすと
ヘッダーにServer情報が表示されてしまう
(一例) curl -I -H "Host:" http://exsample.com HTTP/1.1 400 Bad Request Contetnt-Length: Content-Type: text /html; Server: Microsoft-HTTPAPI/X.XX Date: Mon, XX XX 2019
これは通常のアクセスであれば
IIS自身が返すServerヘッダーなので
上記の設定で対応可能だが
イレギュラーなものは
Http通信を管理するドライバーである
http.sysが返すSeverヘッダー
となるため
これを表示させないようにするには
レジストリの変更が必要
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP
に
DisableServerHeader
という値を設置し
値のデータを 1 に設定
httpサービスの再起動
net stop http /y net start w3svc
Serverヘッダーに限らず
httpヘッダーにバージョン情報を
細かにのせてしまうと
脆弱性のあるバージョンだった場合
攻撃されやすくなるということらしい
そもそもバージョンを表示させている
こと自体、なんにも対策がされていない
ことが見て取れるため攻撃対象に
なりやすい、と
なるほど、確かに言われればその通り
にしても、
だったらそんなもんIISやらApacheが
デフォルトで表示しないように
なってればいいんじゃないかと
思うのは自分だけではあるまい