30代半ばの事務職員がITエンジニアになった話

おおよそタイトルのとおり、30代半ばにしてITエンジニアのタマゴになってしまった会社員の話

【Webサーバー(IIS)】httpヘッダーにServerのバージョンが表示されてしまう脆弱性と対策

httpヘッダーにServerバージョン情報が
表示されてしまうという脆弱性
指摘を受けた


今回はIISで動いているWebサーバーが
該当したためIISでの対策メモ
もちろんApacheやnginxでも
それぞれ対策方法があるはず

バージョンが表示されてしまう状況の再現と対策 その1


まずは普通にIEやらChromeやらEdgeで
該当のサイトにアクセスして
F12 開発用Windowを開く
ネットワークの応答ヘッダーあたりに
Serverのバージョンが表示されている

f:id:ykk333:20190724223721p:plain
ServerVersionの表示


バージョン情報を出さないようにするには
IISマネージャ
URL書き換え
規則の追加
送信規制の空の規則


f:id:ykk333:20190724224836p:plain
URL書き換え


一致するスコープ サーバー変数
変数名 RESPONSE_SERVER
変数値 パターンに一致する
使用 正規表現
パターン  .*

と設定


f:id:ykk333:20190724225056p:plain
URL書き換え


バージョンが表示されてしまう状況の再現と対策 その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
デフォルトで表示しないように
なってればいいんじゃないかと
思うのは自分だけではあるまい