Joomler!.net - Decided on Joomla!

デル株式会社

Wiki or Wordpress? No it is JContentPlus.

Home » Blog » mosGetParam
2 votes
Written by:Joomler! 4260 hits Wednesday, 22 October 2008 16:35

以前に紹介して実際にこのサイトでも使っているDS-Syndicateでセキュリティホールが公表されていました。私は、改造して使っていたりなのですが、そこまで見ていませんでした。

対応策

new_feed(mosGetParam( $_GET, 'feed_id', ""));

new_feed(intval( mosGetParam( $_GET, 'feed_id', "") ));

のように(他の方法でももちろん良い)数値にサニタイズすることで対処できます。

追記:さらにすでに攻撃されたかどうかは、Root/components/com_ds-syndicate/feedフォルダ内を見て下さい。そこに通常のファイルではなさそうなものがあればすでに攻撃されたものだと思われます。フォルダ内のファイルをすべて削除する必要があります。

念のためまだ10月の途中ですが、毎月行っているiLogScannerのスキャンを行ってみました。

joomler_net-2008-10_iLogScanner

22日現在の時点で104件の攻撃で幸い成功はしていないようです。
成功していないというのは厳密に言うと間違いです。この攻撃を使ってのインジェクション攻撃は成功しています。そしてデータベースのnameとpasswordは見る事ができたかもしれません。ですが、Joomla!は生のパスワードは保存していません。パスワードは、Joomla!の独自メソッドでハッシュ値に変更されたものなので生のパスワードを悟られる事はまずありえ無いでしょう。心配な方は、パスワードを変更してください。

ログを見てみるとDS-Syndicateに対する攻撃は、10月6日から来ています。公表されるずいぶん前の時点ですね。情報を素早く入手することももちろん大切ですが、エクステンションを導入するときには気軽に導入すべきではないことも事実のようです。また、たくさんの人が使っているから大丈夫ということも絶対言えませんし、あのサイトで紹介されているから大丈夫とも言えません。

 
0 votes
Written by:Joomler! 5341 hits Thursday, 13 December 2007 18:41

Fireboardのログインの件でJoomla!じゃぱんのフォーラムに投稿しましたが、もう少しコードを変えてみます。


ROOT/components/com_login/login.php の22行目あたり...

コード:
global $mosConfig_live_site, $mosConfig_frontend_login, $mosConfig_db;

コード:
global $mosConfig_live_site, $mosConfig_frontend_login, $mosConfig_db, $Itemid;
に。

同じく38行目あたりを..

コード:
$params->def( 'login', $mosConfig_live_site );

コード:
if($Itemid == あなたの飛ばしたいメニューID番号){
$params->set('login', sefRelToAbs('index.php?option=com_fireboard&Itemid=あなたの飛ばしたいメニューID番号'));
} else {
$params->def( 'login', $mosConfig_live_site );
}

などとすれば可能なようです。


まずは、ROOT/components/com_fireboard/template/default/plugin/profilebox/profilebox.phpの110行目あたり
これは、もしかするとコミュニティビルダーなどのプラグインの使用状況により位置がことなるかもしれません。
(うちの環境ではプラグインは使用していません。)

else
{
    $loginlink = sefRelToAbs('index.brush:php;?option=com_login&Itemid=' . $Itemid);
?>

else
{
    $returnfunc = empty($func) ? '' :  '&func='. $func;
    $returnid = (int)$id ? '&id='. (int)$id : '';
    $returncat = (int)$catid ? '&catid='. (int)$catid : '';
    $returnlimit = (int)$limit ? '&limit='. (int)$limit : '';
    $returnlimitstart = (int)$limitstart ? '&limitstart='. (int)$limitstart : '';
    $returnQuery = $returnfunc. $returnid. $returncat. $returnlimit. $returnlimitstart;
    $loginlink = sefRelToAbs('index.brush:php;?option=com_login&Itemid=' . $Itemid. $returnQuery);

に変更し、さらにROOT/comoponents/com_login/login.phpの38行目あたり

else
{
    $params->def( 'login', $mosConfig_live_site );


if($Itemid == あなたのFireboardのmenuID){
 $rtemp = mosGetParam($_REQUEST, 'func');
 $returnfunc = $rtemp ? '&func='. $rtemp : '';
 $rtemp = mosGetParam($_REQUEST, 'id');
 $returnid = (int)$rtemp ? '&id='. (int)$rtemp : '';
 $rtemp = mosGetParam($_REQUEST, 'catid');
 $returncat = (int)$rtemp ? '&catid='. (int)$rtemp : '';
 $rtemp = mosGetParam($_REQUEST, 'limit');
 $returnlimit = (int)$rtemp ? '&limit='. (int)$rtemp : '';
 $rtemp = mosGetParam($_REQUEST, 'limitstart');
 $returnlimitstart = (int)$rtemp ? '&limitstart='. (int)$rtemp : '';
     $returnQuery = $returnfunc. $returnid. $returncat. $returnlimit. $returnlimitstart;
 $params->set('login', sefRelToAbs('index.brush:php;?option=com_fireboard&Itemid=あなたのFireboardのmenuID'. $returnQuery));
} else {
 $params->def( 'login', $mosConfig_live_site );
}
?>

のように変更すれば、ログイン後表示していた記事に戻れます。


 

JContentPlus for Joomla!1.5 powered by Joomler!.net

joomler.net is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla!(R) name is used under a limited license from Open Source Matters in the United States and other countries.
joomler.net is not affiliated with or endorsed by Open Source Matters or the Joomla! Project.