CaupoShop のクロスサイト・スクリプティング・バグ | ScanNetSecurity
2024.04.27(土)

CaupoShop のクロスサイト・スクリプティング・バグ

[翻訳:関谷 麻美]
2002年3月16日

国際 海外情報
[翻訳:関谷 麻美]
2002年3月16日

◆概要:
 CaupoShop は、web 用のショッピング・システムに基づいた php/mysql だ。CaupoShop Pro は、いくつかの強化機能を持つ製品だ。同ソフトウェアは、広く使用されているが、クロスサイト・スクリプティング・バグの影響を受けている。その脆弱性は、他のユーザの発送情報(クレジットカード情報も含む)を開示してしまうものだ。店の商品を追加、変更、削除することも可能になる(例えば、価格の変更など)。

◆詳細:
脆弱なシステム:
CaupoShop 1.30a とそれ以前のバージョン

この影響を受けないシステム:
CaupoShop v1.30 rc4

 新規顧客を登録する場合、その入力に対し悪意あるコードのチェックは行われない。従って、攻撃者がそこに JavaScript のコードを埋め込むことも可能で、web 管理者が http 認証により保護されている管理者領域で顧客リストを見るたびに実行される。そして、document.location.href 要素を併用することにより攻撃者は、管理者にその管理者領域にあるどのページにも移動させることができる。その管理者は既に認証されているので、攻撃者は管理者のパスワードを持つ必要がない。管理者をどんなページにも移動させることができるということは、ユーザ・パスワードや価格の変更など管理者が行えること全てが実行可能になる。

概念の実証:
 我々は二つの概念の実証を提示する。
一つは、既存のユーザ記録を新しい電子メールアドレス(ログイン名として使用される)と新しいパスワードに変更する。それにより攻撃者は、そのユーザとしてログインし、以前そのユーザが利用した際の発送情報(有効なクレジットカード番号も含む)を見ることができる。

 新規ユーザとして登録する際、メッセージ・フィールド(どのフィールドでも使用できるが)に以下のコードを一行で入力する。

<script>document.location.href="http://example.com/caupo/admin/admin_workspace.php?id=X&svTable=csc_customer&bEdit=1&bNew=1&saField[password]=newpass&saField[email]=blackhat@example.com&btnEdit=1"</script>

 そして、X をユーザの有効な id に置き換える必要がある。これを推測するのはとても簡単だ。何故なら、この id は、1 から 1 つづつ増分する整数だからだ。よって、1 と推測したその店の顧客数との間の数を選ぶ。

 二つ目の概念の実証は、既存の商品を削除する。それは、一つ目と全く同じやり方で機能する。店の html コードから商品の id を簡単に入手できる。例では、商品 id 1 を使用する。

 再度、新規ユーザを登録する。今回は、メッセージフィールドに以下のコードを(一行で)入力する。

<script>document.location.href="http://example.com/caupo/admin/admin_workspace.php?id=1&svTable=csc_article&svDel=YES&btnEdit=1
</script>

 これで、次に管理者が顧客リストを見た時に、id 1 の商品を削除できる。
 もちろん、前述の二つの例は、管理者が顧客リスト見ると、無限ループになっているか(概念 1 の実証)、顧客ではなくに商品リストになっているので、管理者は容易に気づく。結果、管理者は異常なことが発生したと認識する。しかし、さらに特定のスクリプトを併用すれば、長時間にわたり管理者から隠すこともできる。

◆回避方法:
 管理者は、JavaScript を無効にする。しかし、悪意あるコードが埋め込まれる危険性は依然として残っているので、この方法は前述の概念の実証の手口を阻止するのみだ。

◆修正:
 CaupoShop v1.30 rc4 (2002-03-09)にアップグレードする。

◆影響:
 潜在的攻撃者は、店のほぼ全てを制御することができ、そして店の顧客のクレジットカード番号や住所を開示することが可能なので、 ppp-design のセキュリティ危険度は高いから非常に高いに分類された。

◆ベンダーの対応:
 ベンダーは新バージョンをリリースした。それは strip_tags() を用いて htmltags を除く。

◆追加情報:
 ppp-design がこの情報を提供した。

[情報提供:SecuriTeam]
http://www.securiteam.com/

《ScanNetSecurity》

Scan PREMIUM 会員限定記事

もっと見る

Scan PREMIUM 会員限定記事特集をもっと見る

カテゴリ別新着記事

「経理」「営業」「企画」「プログラミング」「デザイン」と並ぶ、事業で成功するためのビジネスセンスが「セキュリティ」
「経理」「営業」「企画」「プログラミング」「デザイン」と並ぶ、事業で成功するためのビジネスセンスが「セキュリティ」

ページ右上「ユーザー登録」から会員登録すれば会員限定記事を閲覧できます。毎週月曜の朝、先週一週間のセキュリティ動向を総括しふりかえるメルマガをお届け。(写真:ScanNetSecurity 名誉編集長 りく)

×