私自身、最近知ったのですが、以下の様なファイル名がサーバ上にあった場合、PHPファイルとして実行されます。
foo.php.en
foo.php.orig.test
これはApacheのmod_mime.cの「正しい仕様」なのですが、この仕様を知らなかったが故にできてしまっているファイルアップロード脆弱性もあり得ます。
もし、アップロードされてDocumentRoot下に置かれるファイル名が、自動連番などでなく、元のファイル名を活かした形のものとなった場合、ファイル名最後の.phpだけを禁止しても、意味がなくなります。
XOOPSにそういうモジュールがあるかどうか私は知りませんが、念のため、最新版のProtector (2.54) では、ドット(.)が2つ以上あるファイルをアップロードしようとした場合は、強制終了する仕様にしました。
もし、ファイルアップロードで、真っ白画面になってしまった場合、Protectorの管理画面を見てください。理由が書いてあるはずです。
There is a possibility that I've broken some language files in my modules when eliminating CR on Nov.
These two languages are not broken.
- english
- japanese
But some characters like umlaut possible broken such conversion.
And I can't judge whether such language files are broken or not.
If you find broken language files, tell me please.
1: $result = mysql_query( "SELECT ''" , $conn ) ;
2: $obj = mysql_fetch_object( $result ) ;
1: $result = mysql_query( "SELECT '' AS tmp_name" , $conn ) ;
2: $obj = mysql_fetch_object( $result ) ;
今頃気付いたのですが、本家版XOOPS 2.2.xでは、cofigテーブルの仕様がちょっとだけ変わっています。
従来は、system関連のconfigは、conf_modid=0として保存されていましたが、本家版2.2.xでは、conf_modid=1となっています。
systemモジュールがmid=1であることなどを考えれば、本家版2.2.xの方が妥当だろうとは思えます。
問題は、それによってfatal errorが出る場合があることです。(具体的には、Protectorの管理画面など)
というわけで、configハンドラを取得する際には、conf_modid については、以下のようなCriteriaを利用すれば、本家版XOOPS 2.2.xでも、他のXOOPSでも動くコードになるでしょう。
$criteria = new CriteriaCompo(new Criteria('conf_modid', 0));
$criteria = new CriteriaCompo(new Criteria('conf_modid', 2, '<'));
TITLE:
Xoops "xoopsConfig[language]" Local File Inclusion Vulnerability
SECUNIA ADVISORY ID:
SA17573
VERIFY ADVISORY:
http://secunia.com/advisories/17573/
CRITICAL:
Moderately critical
IMPACT:
Exposure of sensitive information
WHERE:
>From remote
SOFTWARE:
Xoops 2.x
http://secunia.com/product/327/
DESCRIPTION:
rgod has discovered a vulnerability in Xoops, which can be exploited
by malicious people to disclose sensitive information.
Secuniaに出たレポートですが、register_globals が on の場合のみのレポートなので、ほぼ問題ありません。register_globals は必ず off です。
register_globals on でなければ動かないモジュールは利用するべきではありません。
それと、XOOPS 2.x となっていますが、これは明らかな間違いです。
JP版であれば、コアのclass内にWYSIWYGエディタを配置するようなことはしていませんし、本家版でも 2.0.x であれば、関係のない話です。