日本公式サイトでもいろいろお世話になっているdendekeです。
GIJOEさん、いつも貴重なモジュールやハックをありがとうございます。
さて、2.0.12-JPの場合、「include」内の「common.php」167行目あたりに:
// Guard for XSS string of PHP_SELF
if(preg_match("/[\<\>\"\'\(\)]/",$_SERVER['REQUEST_URI']))
die();
という行が追加されているのですが、auto-login hacked 同梱のcommon.phpにはこの部分がありませんでしたので、念のためにお知らせいたします。
GIJOEさん、お世話になっています。
Quote:
アーカイブミスかと思って、ダウンロードしなおしてみましたが、ちゃんと該当部分は入ってますね。
ファイルツリーのアップデート直前にダウンロードされたのかもしれません。
もう一度落としなおしてみたのですが、やはり入っていませんでした。
ダウンロードしたのはzip圧縮形式でしたので、念のためにtar.gz圧縮のほうも落としてみたところ、こちらにはきちんと入っていました。
どうやら、zip形式のほうだけ抜けているようです。
Quote:
ともあれ、その部分はあまり重要じゃないので、心配しなくて良いですよ。ごくごく限られた環境以外では、そこを通過することすらありませんし、その環境でもProtectorで守れます。
そもそも、今回のPHP_SELF XSSは私が見つけたので、そのあたりのケアはちゃんとしてます。
なるほど。経緯はわかりましたし、ハックする場合は必ずオリジナルと比較しながら行っておりますので、大丈夫そうです。
ただ、前述のとおり、どうもzip形式のほうには該当部分が抜けているようですので、同じようにzip形式をダウンロードされるほかの方の参考にと投稿させていただきました。
今後ともよろしくお願いします。
【補足】
何度もすみません。
やはり、zip形式のほうは、内容が古いようです。tar.gzの法では、「V3.1 begin」とバージョンが「V3」になっていますが、zip形式のほうは「V3 begin」と旧バージョンのまま記載されているようです。すみませんが、もう一度ご確認いただけますでしょうか?
dendeke さん、こんにちは。
zipもちゃんと最新版ですよ。ブラウザのキャッシュとか、プロキシ関連じゃないでしょうか。
http://www.peak.ne.jp/support/xoops/を直接見ていただき、ファイルサイズやタイムスタンプをご確認ください。
GIJOEさん、お手数をおかけいたしております。
キャッシュを一度クリアしてからもう一度(って、実は6度目くらいですが・・・
)ダウンロードしてみましたところ、おっしゃるとおり、最新版になっておりました。
これまでもprotector、piCal、myAlbum-P等々、GIJOEさんが新しいバージョンをリリースされるたびにダウンロードして利用させていただいておりますが、今回のオートログインハックのように落としてきて中をみても旧版のままということがありませんでしたため、ご迷惑をおかけいたしました。
それにしても、他のモジュールなどは新版がちゃんとダウンロードできているのに、どうしてなのか、ちょっと謎です・・・
Quote:
それにしても、他のモジュールなどは新版がちゃんとダウンロードできているのに、どうしてなのか、ちょっと謎です・・・
なぜでしょうね。
例えば、今回は前のアーカイブと後のアーカイブのファイルサイズが、偶然まったく一緒だったとか。
普通は、ファイルサイズは増える一方なので、他のモジュールとかではあり得ない現象ではあります。
GIJOEさん、こんにちわ。
Quote:
例えば、今回は前のアーカイブと後のアーカイブのファイルサイズが、偶然まったく一緒だったとか。
あぁ、そうかもしれません! というのも、モジュール等はローカルでひとつのフォルダ内に保管しており、(GIJOEさん提供のものに限らず)新版に変更した時に不具合が出た場合は旧版に戻せるようにしており、新版での動作確認ができた時点で新版に上書き保存しているのですが、今回はその時に「上書きしていいのか?」と表示される内容でファイルサイズが一緒だったように記憶しています。
モジュールの場合は、実際にサーバ内に適用する前に「xoops_version.php」ファイルでバージョンを確認しているのですが、今回のようにハック用ファイルのときは、ダウンロード後解凍してから各ファイルの変更日を確認して、正しくダウンロードできたかどうかを確かめるように心掛けます。
初めまして、T2Kと申します。いつも貴重な情報&HACKを提供いただき、ありがとうございます。
XOOPS2.0.12JPを、同じドメイン内に2つ入れております。トップディレクトリに一つ、その下にディレクトリを切って一つ…といった感じです。
http://www.hogehoge.com/index.phphttp://www.hogehoge.com/hoge/index.phpみたいな構成ですね。その2つに「auto-login hacked files for XOOPS 2.0.10/11/12JP」を入れた所、トップディレクトリの方はオートログインが効くのですが、hoge/index.phpの方は、ページを開いたときにはログインしておらず、アカ&パスを入力してログインしようとすると、「時間切れでした。再投稿しますか?」という警告が出て、リダイレクトを延々と繰り返す状態になってしまいました。ログインではなく、掲示板を見ようとしても、延々とリダイレクトを繰り返してしまいます。
以前のオートログインハックでは、同様の使い方をしてもこういった症状にはならなかったのですが、どういった原因が考えられるのでしょうか?
ご教授いただければ幸いです。よろしくお願いします。
t2kさん、こんにちは。
Quote:
XOOPS2.0.12JPを、同じドメイン内に2つ入れております。トップディレクトリに一つ、その下にディレクトリを切って一つ…といった感じです。
http://www.hogehoge.com/index.php
http://www.hogehoge.com/hoge/index.php
みたいな構成ですね。その2つに「auto-login hacked files for XOOPS 2.0.10/11/12JP」を入れた所、トップディレクトリの方はオートログインが効くのですが、hoge/index.phpの方は、ページを開いたときにはログインしておらず、アカ&パスを入力してログインしようとすると、「時間切れでした。再投稿しますか?」という警告が出て、リダイレクトを延々と繰り返す状態になってしまいました。ログインではなく、掲示板を見ようとしても、延々とリダイレクトを繰り返してしまいます。
なんでしょうかね?
セッション用のクッキーがバッティングしている、なんてあたりでしょうか。
とりあえず、include/common.php のこの部分をバッサリとコメントアウトしてみてください。
// autologin V2 GIJ
if( ! empty( $_POST ) ) {
$_SESSION['AUTOLOGIN_POST'] = $_POST ;
$_SESSION['AUTOLOGIN_REQUEST_URI'] = $_SERVER['REQUEST_URI'] ;
redirect_header( XOOPS_URL . '/session_confirm.php' , 0 , ' ' ) ;
} else if( ! empty( $_SERVER['QUERY_STRING'] ) && substr( $_SERVER['SCRIPT_NAME'] , -19 ) != 'session_confirm.php') {
$_SESSION['AUTOLOGIN_REQUEST_URI'] = $_SERVER['REQUEST_URI'] ;
redirect_header( XOOPS_URL . '/session_confirm.php' , 0 , ' ' ) ;
}
// end of autologin V2
CSRF脆弱性対策をしてあるモジュールだけを使っているのなら、この部分(正確には下半分)がなくても大丈夫です。