Hatena::ブログ(Diary)

思い立ったら書く日記

 | 

2011-01-23

攻撃経路としてのWebDAVの悪用を調べてみる

| 21:50 | 攻撃経路としてのWebDAVの悪用を調べてみるを含むブックマーク

Windowsに脆弱性が発見されると、脆弱性によっては WebDAV が攻撃経路として挙がります。最近だと、Microsoft Graphics Rendering Engineの脆弱性CVE-2010-3970)があります。自分が WebDAV を使わないためか、攻撃経路として WebDAV が有効なのか疑問がありました。少し WebDAV について調べる機会があったため、調べたことをメモとしてまとめてみます。

WebDAV による共有フォルダにアクセスする方法

WebDAV を使ったサービスの使い方(ここここ)を読んでみると、WebDAV による共有フォルダ(以降、Web フォルダ)を使用する方法には、WebDAV 専用クライアントを使う方法や、Windows 標準の機能を使う方法があります。それ以外にも Windows Explorer から UNC(例:\\www.example.com\foo\)を指定する方法がありました。

例えば、Sysinternals Tools をダウンロードできる Web フォルダの UNC「\\live.sysinternals.com\tools」を [ファイル名を指定して実行]で実行すると、ファイル共有のように Web フォルダが開きます(下図を参照)。*1

f:id:kaito834:20110119223749p:image:w452:h273


UNC で Web フォルダを開く

UNC から Web フォルダを開く挙動を調べてみると、英語版 Wikipedia に該当する記述がありました(Microsoft の Web サイトではそれらしい情報を見つけられませんでした)。

In Windows XP, Microsoft added the "WebDAV mini-redirector" which is preferred by default over the old Web folders client. This newer client works as a system service at the network-redirector level (immediately above the file-system), allowing WebDAV shares to be assigned to a drive letter and used by any software. The redirector also allows WebDAV shares to be addressed via UNC paths (e.g. http://host/path/ is converted to \\host\path\) for compatibility with Windows filesystem APIs.

Wikipedia: WebDAV(2011年1月23日閲覧)

Windows XP 以降では、UNC にアクセスすると、SMB 接続だけではなく、WebDAV 接続も試行するようです。以下に MSDN の情報を引用します。

When the Universal Naming Conventions (UNC) file name is used, the redirector will use SMB, WebDAV, or a combination of the two depending on what is available on the server.

Connecting to WebDAV (Windows CE 5.0) | Microsoft Docs

実際に \\live.sysinternals.com\tools を開こうとすると、live.sysinternals.com(207.46.140.150) の 80/tcp(WebDAV) と 445/tcp(SMB) に TCP 接続を確立しようと、SYN パケットを送っていました。

UNC を使って、攻撃対象者を Web フォルダに誘導する方法を考えてみます。

攻撃対象者を Web フォルダへ誘導する

この日記では、以下の検証環境を構築し、メールや URL リンクから攻撃対象者を Web フォルダに誘導できる方法を検討してみます。なお、この日記の検証では、Attacker が Victim に対して DLL Hijacking を仕掛けることを想定しています。

f:id:kaito834:20110116002819p:image:w493:h159

メールからの Web フォルダへの誘導

攻撃対象者を Web フォルダに誘導する方法として、誘導する UNC を記載したメールを考えてみます。

「\\www.example.com\webdav\」と書いたメールを送ってみます。Gmail でこのメールを見ると、下図のようになります。メールアドレスや URL と違って、自動的にリンクとならないため、このメールを見た人が Web フォルダを開くまでには、「Windows Explorer に UNC を入力する」という手順が必要です。

f:id:kaito834:20110119232247p:image:w316:h189


しかし、他のメーラ*2で同メールを見てみると、Outlook Express 6 と Microsoft Outlook 2010 については、URL と同様に UNC もリンクとして表示することが分かりました(Outlook Express 6 の様子については、下図を参照)。これらのメーラの場合、リンクをダブルクリックするだけで、攻撃対象者を Web フォルダに誘導できてしまいます。

f:id:kaito834:20110119233523p:image:w310:h188


URL リンクからの Web フォルダへの誘導

攻撃対象者を Web フォルダに誘導する方法として、URL リンクにアクセスさせる方法を考えてみます。この方法では、誘導経路としてメールもありますが、ここでは Web サイトにおける a 要素を想定しています。

まず、Victim の Internet Explorer 8(IE8) で、http://www.example.com/webdav/ にアクセスしてみました(下図を参照)。IE8 でアクセスすると、Index が表示されるだけです*3。この結果については、Firefox 3.6.13, Opera 11.00, Safari 5.0.3, Google Chrome*4 も同じ結果です。これでは、URL をクリックさせても Web フォルダが開きません。

f:id:kaito834:20110116010154p:image:w358:h234


次に Attacker の http://www.example.com/webdav/ に以下のファイルを「index.html」として作成し、改めて Victim の IE8 で http://www.example.com/webdav/ にアクセスします。このmeta 要素を使った UNC パスへのリダイレクトを、僕は Metasploit Framework の DLL Hijacking モジュール「webdav_dll_hijacker」で知りました。

<html><head><meta http-equiv="refresh" content="0;URL=\\www.example.com\webdav\"></head><body></body></html>

すると、IE8 とは別に Web フォルダが開きました(下図を参照)。ただし、この meta 要素を使った UNC へのリダイレクトで、Web フォルダが開くのは、IE8 の場合だけでした。Firefox 3.6.13, Opera 11.00, Safari 5.0.3, Google Chrome では、結果はまちまちですが、Web フォルダが開くことはありませんでした*5。少なくとも、meta 要素を使った UNC へのリダイレクトを悪用すれば、URL で攻撃対象者を Web フォルダに誘導できそうです(ブラウザは限定されますが)

f:id:kaito834:20110116011358p:image:w400:h300


先の index.html では、meta 要素で UNC にリダイレクトさせていますが、a 要素の href 属性に UNC を書いても、IE8 ならば Web フォルダを開きます。http://www.example.com/webdav/ に以下のファイルを「test.html」として作成し、改めて Victim の IE8 で http://www.example.com/webdav/ にアクセスします。[WebDAV link] をクリックすると、IE8 が Web フォルダを開きます(下図を参照)。

<html><body><a href="\\www.example.com\webdav\">WebDAV link</a></body></html>

f:id:kaito834:20110123184231p:image:w408:h285


Web フォルダへ誘導されることを防ぐ

Web フォルダに誘導されたとしても、そのフォルダを閉じれば脆弱性を悪用されるといったことはないと思います。それだと人に依存した対策となります。「システムでできることはシステムにやらせる」という観点から、Web フォルダへの誘導を防ぐ対策を確認してみます。

サービス「Web Client」を停止する

UNC から Web フォルダに誘導されることを防ぐには、サービス「Web Client」を無効にすることがよいと思います。この対策は、DLL Hijacking に対するセキュリティアドバイザリ2269637や、Windows シェルの LNK ファイルに関する修正プログラム MS10-046で、Microsoft 社が 回避策として挙げているものです。

サービス「Web Client」を無効にして、先ほどの index.html にアクセスしてみると、Web フォルダが開くことはありませんでした(下図を参照)。「Web Client」を無効にすることで、Windows 標準の機能による Web フォルダの接続は使用できなくなるようですが、WebDAV 専用クライアント*6による Web フォルダ接続は可能です

f:id:kaito834:20110123184232p:image:w342:h213


おまけ(1):UNC から Web フォルダを開く実装について

UNC 自体が Windows で使われるパス記法であり、URI に関する RFC3986 の日本語訳をざっと目を通してみましたが、UNC に関する記述はありませんでした。このことから、Web フォルダを開かない実装が一般的と言えるかと思います。

おまけ(2):Ubuntu 8.04 LTS における WebDAV サーバの構築

この日記の検証環境の WebDAV サーバは、参考情報の Ubuntu コミュニティマニュアルを参考にして構築しました。以下が大まかな作業手順です。

root@ubuntu804Server:~# id
uid=0(root) gid=0(root) groups=0(root)
root@ubuntu804Server:~# a2enmod dav_fs
Enabling dav as a dependency
This module is already enabled!
Module dav_fs installed; run /etc/init.d/apache2 force-reload to enable.
root@ubuntu804Server:~# vi /etc/apache2/sites-enabled/000-default
<VirtualHost *> ディレクティブの中に、以下を追記。
   <Location /webdav/>
     Dav On
   </Location>
root@ubuntu804Server:~# mkdir /var/www/webdav
root@ubuntu804Server:~# chown www-data:www-data /var/www/webdav
root@ubuntu804Server:~# apache2ctl configtest
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
Syntax OK
root@ubuntu804Server:~# /etc/init.d/apache2 restart

参考情報

*1:live.sysinternals.com が WebDAV を使用している点については、ここを参照してください。

*2Outlook Express, Microsoft Outlook の他には、Becky! 2.56.04, Sylpheed 3.0.3, Thunderbird 3.1.7 を確認しましたが、これらのメーラではリンクになりませんでした。なお、Gmail に IMAP4 で接続したかったため、IMAP 非対応のメーラについては確認していません。

*3Apacheにて、Option ディレクティブで +Indexs を設定しています。

*4:この日記を書いている時点の最新版です。

*5:【2011年1月29日追記】Safari 5.0.3 については、meta 要素を使った UNC へのリダイレクトページを閲覧すると、CPU 使用率が急激に高まりました。デバッガ等を用いてきちんと確認していませんが、「CPU 使用率が急激に高まる」事象のみ起こることから Safari のバグと考えました。2011年1月29日、アップルのフィードバックページにてバグとして報告しました。

*6:「TeamFileクライアント」、「CarotDAV」による WebDAV 接続を確認しました。

れいれい 2011/01/24 03:20 > このことから、Web フォルダを開かない実装が一般的と言えるかと思います。
UNCはMS独自の記法ですからRFCにないのは当然で、なので「開かない実装が一般的」と結論するのはおかしいように思います。

ちなみに、UNCの唯一の仕様らしきものは[MS-DTYP](http://msdn.microsoft.com/en-us/library/cc230273(v=PROT.10).aspx)にあります。
また、概念などはWDKのIFSあたりに書いてあります。

URIと違い、UNCはプロトコルを意識しなくていいように作られています。
FileSystem層でNetBiosやCIFS、DAVの違いを吸収するように。
ですので、UNCの発想からすれば、UNC指定でDAVが開かれるのは当然の振る舞いであろうと思います。

それがセキュリティ上正しいかどうかは別ですが。

kaito834kaito834 2011/01/24 07:24 れいさん

コメントありがとうございます。

> URIと違い、UNCはプロトコルを意識しなくていいように作られています。
> FileSystem層でNetBiosやCIFS、DAVの違いを吸収するように。
> ですので、UNCの発想からすれば、UNC指定でDAVが開かれるのは当然の振る舞いであろうと思います。

これはれいさんのおっしゃる通りだと思います。良し悪しで書いたつもりはなかったんですが、「一般的」という表現が誤解を招くものだったかもしれません。

いただいた情報も見てみようと思います:)

 |