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

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

【Webサーバー(Apache・IISなど)】ローカルIPアドレスが漏えいしてしまうという脆弱性と対策について

ローカルIPがばれてしまう脆弱性


インターネットに公開している
Webサーバーについて
脆弱性の診断を受けたところ、
特定の条件下でローカルIPが露呈
されてしまう脆弱性が発見される


HTTPリクエストを送信する際、
・http1.0 で
・Hostヘッダを空白にして
・アドレスの末尾に/をつけない
という条件で発行

具体的には

 curl  -0  -i  -H  "Host:"  http://test.com/sample

のような感じでhttpリクエストを送信する

curlLinuxのコマンドのひとつ
Windowsでもパッケージがあるので
インストールすればコマンドプロンプト
から使える


ちなみにオプションは

  -0   : http 1.0 を指定
  -i   :リクエストヘッダを表示
  -H  :リクエストヘッダを編集


すると

オブジェクトは移動しました
このドキュメントは
http://192.168.0.10/sample/
ここで見つかる可能性があります

などとローカルIPが表示されるというもの


まず httpリクエストの規格の理解


httpリクエストにもバージョンがあって
だいたいデフォルトでhttp1.1が適用される


httpリクエストのヘッダのなかには
Host というステータスがあり
http1.1以降は必須項目となっている


この Host を元にアクセス先のURLを
決めてたりするので当然といえば当然


ところが旧規格である http1.0 では
Host が必須ではないので空白で
リクエストを送ることもできる


Host が空白のリクエストを送信されると
Webサーバーは困ってしまい
とりあえず自身の IP をホストとして返す
これがローカルIPのため漏えいにつながる
というもの


思うに、http1.0 でリクエストが
送信されることが想定されていないために
その辺の設定がおろそかになっているのだと思う


そんな旧規格は使えないようにすれば
いいんじゃないかと言いたいところだけど
まだまだ使用しているサービスがあって
そうもいかないらしい


リダイレクトの仕組み


http://test.com/sample/
と末尾に / をつけるとそのフォルダを
指定したことになるのだけど


http://test.com/sample
と / をつけないとsampleという
ファイルを探しに行く
が、見つからない状態となる


sample という名のフォルダが実在した
場合、Webサーバーは親切?にも
sample はフォルダのことかもしれない
と判断してくれて、ファイルは
sample フォルダで見つかるかもよ!
とメッセージをだしてくれる


というリダイレクトの処理が
裏側では走っているらしい




しかし、、
とんだマニアックな指摘で
そんなとこまで対策せんでも…
と思うのも人情だけど


とあるサイトで
Webサーバーを公開することは
家のドアを開けてチンピラを呼び寄せる
ようなもの、と説明されていて
妙に納得感があった


公開する以上は常に危険に晒されている
わけであって、万全の対策が必要で
あることもまた真理


実際、同じ手口?でアクセスがあって
アラートメールがとんできていたりして
IPの身元を調べるとドイツからのアクセス
だったりした
もちろん踏み台の可能性も多分にあるが


せっかく調べてもらって
当人達には気づかないような指摘を
いただいたのだから、
ありがたく対策を講じるのが
肝要だと思うのであった