2013年6月26日水曜日

ショッピングサイトに脆弱性

当店のECサイトで使用していますEC-CUBEに
脆弱性が見つかったとかで修正をしました。
テストもかなりしましたので問題ないとは思いますが、
もし何か不具合等ございましたらご連絡ください。

このEC-CUBEというのはEC構築オープンソース。
平たく言えば公開してあるショッピングサイトのシステムを
ユーザーが自由にいじりまくって使えるもの…
そんな感じでしょうか。
(もちろん実際にはもっと複雑な定義がありますが。(汗

自分で1から構築することを考えれば全然楽なのですが、
それでもやはり高度なプログラムが使われていて大変です。
私はテスト用にひとまずサーバにインストールして
色々とカスタマイズしてみたのですが、
いざ公開しようと思ったときにフォルダを変える元気がなく
結局テスト用のフォルダのままで動かしています。
↓がURLですが、予定では/ec-cube2/の部分が/catsclaw/となるはずでした。(汗

http://www.c-box.org/ec-cube2/


広島ブログ

以下私のメモ用に今回の更新を。。。

==================================================================
▼EC-CUBE における管理画面でのクロスサイト・スクリプティング
------------------------------------------------------------------
/data/Smarty/templates/admin/contents/recommend_search.tpl
41行目付近
-------------------------------------------------------------------
 変更前
-------------------------------------------------------------------
function func_submit( id ){
    var fm = window.opener.document.form<!--{$smarty.get.rank}-->;
    fm.product_id.value = id;
    fm.mode.value = 'set_item';
    fm.rank.value = '<!--{$smarty.get.rank}-->';
    fm.submit();
    window.close();
    return false;
}
-------------------------------------------------------------------

-------------------------------------------------------------------
 変更後
-------------------------------------------------------------------
function func_submit( id ){
    var fm = window.opener.document.form<!--{$rank|escape}-->;
    fm.product_id.value = id;
    fm.mode.value = 'set_item';
    fm.rank.value = '<!--{$rank|escape}-->';
    fm.submit();
    window.close();
    return false;
}
-------------------------------------------------------------------

/data/class/pages/admin/contents/LC_Page_Admin_Contents_RecommendSearch.php
67行目付近
-------------------------------------------------------------------
 変更前
-------------------------------------------------------------------
// 認証可否の判定
SC_Utils_Ex::sfIsSuccess($objSess);

if (!isset($_POST['mode'])) $_POST['mode'] = "";
if ($_POST['mode'] == "search") {
-------------------------------------------------------------------

-------------------------------------------------------------------
 変更後
-------------------------------------------------------------------
// 認証可否の判定
SC_Utils_Ex::sfIsSuccess($objSess);

// 数値を代入
$this->rank = intval($_GET['rank']);

if (!isset($_POST['mode'])) $_POST['mode'] = "";
if ($_POST['mode'] == "search") {

==================================================================


==================================================================
▼resize_image.phpによるディレクトリトラバーサル
------------------------------------------------------------------
/data/class/pages/LC_Page_ResizeImage.php
108行目付近
-------------------------------------------------------------------
 変更前
-------------------------------------------------------------------
$file    = trim($_GET['image']);
if (preg_match_all($pattern, $file, $matches)) {
   return false;
-------------------------------------------------------------------

-------------------------------------------------------------------
 変更後
-------------------------------------------------------------------
$file    = trim($_GET['image']);
if (!preg_match("/^[[:alnum:]_\.-]+$/i", $file)) {
    return false;
=================================================================== 

0 件のコメント:

コメントを投稿