Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#51 2008-10-30 11:10:04

makochin6256
メンバー
登録日: 2008-02-20
投稿: 3

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

返信遅くなりまして申し訳ございません。
ご返答ありがとうございます。

上記のファイルをサーバへ上書きしてみたところエラー表示されなくなりました!

ご指摘の通り「TOK2」のサーバを使用してますが、サーバやPHPのことにはあまり詳しくないので、PHPのバージョンはわからないです :cry:

上記ファイルで直ったということは私の使っているサーバのPHPはPHP5なのでしょうかね。


ご対応していただきありがとうございました big_smile

オフライン

#52 2008-10-30 11:53:23

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

改善されてなによりです。 big_smile

<?php phpinfo(); ?>

と書いた.phpファイルをサーバにアップしてブラウザで表示すれば、PHPの情報が表示されます。
今後も必要になってくるかと思います。
情報取得後はサーバから削除しときましょう。

そこのサーバ、PHP5でも、よく言えば厳密な、悪くいえば懐の狭い設定になってるんじゃないかと。

オフライン

#53 2008-10-30 14:59:08

makochin6256
メンバー
登録日: 2008-02-20
投稿: 3

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

なるほど。
これで見れるんですね!

ちなみにバージョンは5.2.5でした。

いろいろとご丁寧に教えていただきありがとうございました。 big_smile

オフライン

#54 2008-11-01 17:30:19

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

PHP5のarray型対策。
画像以外のメディア表示を変更。
サムネイル生成が間に合わない|できない場合の処理を追加。

です。


Attachments:
zip NP_Mediatocu_106.zip, Size: 37.78 KiB, Downloads: 327

オフライン

#55 2008-11-07 15:56:46

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

*表示調整
+サムネイルが細長いとき選択しづらいため、サムネイルエリア全域でアタリ判定
+サムネイルがない場合の拡張子表示をセンタリング
+ファイルサイズをKB表記
*NP_TinyMCE対応
+ポップアップダイアログオプション対策
+SWFファイル選択時、ダイアログが閉じなかったのを修正


Attachments:
zip NP_Mediatocu_107.zip, Size: 37.87 KiB, Downloads: 319
gif mediatocuontinymce.gif, Size: 25.29 KiB, Downloads: 1,441

オフライン

#56 2008-11-08 10:15:51

yama
Administrator
登録日: 2005-07-07
投稿: 1,242
ウェブサイト

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

細長い画像に不便を感じていたのでナイスでした。ありがとうございます。

自分なりにスタイルを加えたパッチを上げておきます。


Attachments:
png mediatocu.png, Size: 36.98 KiB, Downloads: 1,348
zip mediatocu.zip, Size: 10.53 KiB, Downloads: 332

オフライン

#57 2008-11-09 23:11:59

yama
Administrator
登録日: 2005-07-07
投稿: 1,242
ウェブサイト

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

コレクションリストに表示したくないディレクトリを指定できるようにしました。
プラグインオプションが増えているので、この機能を使いたい場合はいったんアンインストール
する必要があります。


Attachments:
png 001.png, Size: 6.29 KiB, Downloads: 1,287
zip NP_Mediatocu_108.zip, Size: 37.57 KiB, Downloads: 347

オフライン

#58 2008-11-11 17:14:26

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

あ、欲しかった機能だ!ナイスです(笑)ありがとうございます。

非表示ディレクトリ配下の子ディレクトリも非表示にしました。
1.0.8では"1/.thumbs"といった感じでパスごと指定すると子ディレクトリをねらい打ちで非表示に出来ましたが、
1.0.8.1ではできません。

以下、相談。
1)子ディレクトリ非表示機能も欲しいんですけど、どんなインターフェイスがいいですか?
2)だいぶんとコードも枯れてきた(良い意味)ように思いますし、1.1あたりを目処に一般公開にしませんか?>yamaさん
連動するNP_TinyMCEは海外ユーザーも多くいるようですし。


Attachments:
gif collections.gif, Size: 5.8 KiB, Downloads: 1,261
zip NP_Mediatocu_1081.zip, Size: 39.36 KiB, Downloads: 341

オフライン

#59 2008-11-11 18:52:25

yama
Administrator
登録日: 2005-07-07
投稿: 1,242
ウェブサイト

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

きゃしゃさん さんの発言:

1)子ディレクトリ非表示機能も欲しいんですけど、どんなインターフェイスがいいですか?
2)だいぶんとコードも枯れてきた(良い意味)ように思いますし、1.1あたりを目処に一般公開にしませんか?>yamaさん

できるだけ説明不要なインターフェイスがいいですよね。あと、ユーザディレクトリ以下の指定もできたほうがいいと思うので、

$authorid/.thumbs

という形でオプションに既定値を入れておくというのはどうでしょう?つまり非表示ディレクトリ配下のサブディレクトリ非表示を実現しつつ、パスごと指定も生かす。そしてこの既定値だとマクロ文字(古い表現かもですが)として$authoridが使えるということと、パスごと指定すればサブディレクトリの非表示指定もできるということがユーザに伝わるのでは、と。Nucleusらしく<%authorid%>/.thumbsとかのほうがいいかな?あと、オプション欄はもしかしたらtextareaのほうがいいかも?

一般公開賛成。ここらで出して広く揉んでもらえたらと思います

オフライン

#60 2008-11-14 11:51:37

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

ま、マクロ対応ですか。堪忍してください(苦笑

ねらい撃ち+下層追尾版と、サブディレクトリにもNGネーム適応版出してみます。
広くご意見を頂ければ幸い。


Attachments:
zip 1082b.zip, Size: 10.6 KiB, Downloads: 336
zip 1082a.zip, Size: 10.56 KiB, Downloads: 323

オフライン

#61 2008-11-14 14:42:41

yama
Administrator
登録日: 2005-07-07
投稿: 1,242
ウェブサイト

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

現実的に考えると1082bのほうがいいかもしれませんね。
パス構成に関係なく、非表示にしたいディレクトリ名は決まりきってそうに思えるので。

オフライン

#62 2008-11-19 12:43:11

ushio
メンバー
From: Osaka
登録日: 2006-05-10
投稿: 1
ウェブサイト

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

便利に利用させていただいております。 m(_ _)m

話の流れをぶった切って ^^; 一点だけ感想を。。。

画像のサムネイルを挿入するボタン

<a href="media.php" onclick="chooseImage('{$hscJsCC}', 'thumb_{$hscTGTF}', '{$width}', '{$height}')" onkeypress="chooseImage('{$hscJsCC}', 'thumb_{$hscTGTF}', '{$width}', '{$height}')" title="thumb_{$hscTGTF}">サムネイル貼り付け(クリック)</a>

があると、TinyMCEを利用していて、LightBoxを作る場合や、
それ以外にもサムネイルだけを記事で手軽に扱えるので便利かなと感じました。

オフライン

#63 2008-12-17 10:34:15

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

[size=150:1k8gsken]※1.0.8.2以前のバージョンには重大な脆弱性があります※
しばらくのあいだアンインストールしていただきますようお願いいたします。

詳細はメディアマネージャにおける脆弱性についてをごらんください。

ご迷惑をおかけすることをお詫びいたします。

12/19 修正
1.0.8.1SP1公開までいましばらくご不便をおかけします。


Attachments:
zip NP_Mediatocu_109.zip, Size: 41.51 KiB, Downloads: 354

オフライン

#64 2008-12-17 17:40:19

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

ホントは脆弱性対策だけ加えたバージョンをまず出した方がよかったとは思うんですが、大幅にいじってる最中だったもので。
脆弱性対策
・ディレクトリトラバーサル攻撃
  3.31SP3コアのMEDIA::isValidCollection()と同等のコードを内包しました。
  現状、getMinNucleusVersion()等で対策済コアかどうかを判定できないのでこのようにしました。
・CSRF攻撃
  コア標準media.phpのaction同様の処理を加えました。
・ヌルバイト攻撃
  対策コードの適応を全クエリに加えました。
仕様変更
media-tocu-dirsからの仕様で

ログインしているユーザが他のユーザのメディアフォルダを操作できます。(ファイルのアップや既存ファイルの削除、リネームなど)
これは脆弱性ではなく仕様ですが、

とありましたが、
  脆弱性対策の意味も含め、禁止としました。ただし、共有フォルダについてはこれまでどうり、アップロード権のある全ユーザがファイル操作(削除・リネーム含む)できます。
・同じく、

フォルダ間のメディアの移動はファイル名変更で行うことができるはず。

とありましたが、
  実際に"1/subdirectory/filename.jpg"等とやると、サムネイルファイルの移動に失敗し、phpエラーを吐くとともにゴミファイルを残すことになります。脆弱性対策の意味も含め、ファイル名にPATHの指定を禁止としました。
・GDがGIFをサポートしていない場合PNGでのサムネイル作成を試みる。また、"thumb_元ファイル名.png"というファイルを自力でアップロードしておくことにより、GDでサムネイル作成できないファイルのサムネイルとして表示するようになっていましたが、
  いささか動作が怪しく、弊害もある(初回サムネイル作成時に表示に失敗する等)ため、機能を削除しました。いまどきGIFをサポートしていないGD環境ってそんなにないと思いますし。
・非表示ディレクトリ名の指定
  1.0.8.2bに準拠し、階層に関わらず適用としました。
・GETによるクエリ受け渡しの禁止
  脆弱性対策の意味を含みます。
不具合修正
・ファイル名の一部に"thumb"を含むとリストに表示されない
  修正しました。"the_thumbs_up.txt"といったファイル名が使えるようになりました。
・サムネイル用ワークファイルである"thumb_"で始まるファイルネームで同様
  "thumb_"で始まるファイルネームを禁止しました。
・ディレクトリにサムネイルファイルのみが残っている場合、リスト表示が壊れる
  修正しました。
・2バイト文字を使った際、(EUC環境で特に)操作や表示に失敗することがある
  表示する際にurlencodeをかけるようにしました。(本来2バイト文字は使わないのが望ましいのですが)
・IEにおいてjavascriptでファイルを開く際、urlencodeしたファイル名のファイル表示に失敗する
  javascriptやめました。
・その他、成立し得ない条件分岐や変数指定の間違いなど、見直しました。

変更が多岐にわたっているので、以前よりうまく動かなくなった、不便になった等あるかもしれません。
報告いただければできる範囲で対処していきます。

mb_splitって環境によって使えないんでしたっけ?

オフライン

#65 2008-12-18 05:04:57

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

できれば、脆弱性対策だけ行ったバージョンが有れば助かるのですが…。

でないと、脆弱性の修正がちゃんと行われているかどうか、確認できません。以前のバージョンと新しいバージョンを比較してみましたが、違いが大きすぎて、まったく比較・検討できませんでした。

オフライン

#66 2008-12-18 11:08:41

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

きゃしゃさんの修正と重なりますが、ver 1.8.0.1 を元に、脆弱性の修正だけを試みてみました。まだ、β段階です。使用の際は、Nucleus 3.31 SP3 を必ず導入してください。


Attachments:
zip NP_Mediatocu_1081SP1RC2.zip, Size: 38.78 KiB, Downloads: 318

オフライン

#67 2008-12-18 11:09:14

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

media.phpだけ、変更しています。元のものとの違いを見るには、以下のURLを参照してください。左が修正前、右が修正後です。

http://svn.sourceforge.jp/view/plugin/t ... 736&r2=733

右の修正後の行番号をもとに、説明します。

ライン1285付近
ディレクトリトラバーサル回避のためのチェック用関数、media_checkFile()を追加しました。同時に、この関数を利用した、media_unlink(), media_rmdir(), media_rename()をラッパー関数として作成しました。

ライン228付近
CSRFを回避するため、ticketチェックルーチンを入れています。

ライン228、285、297付近
上記ラッパー関数を通してファイル関連の処理を行っています。また、XSSを回避する修正も入れました。

ライン349、368付近
コアmedia.phpの修正と同様の修正です。

ライン513、677
チケットの作成と、hidden での挿入です。上記、228行目付近のコードと関連します。

ライン524、556、592、612、631、658、677
XSS回避関連のリファクタリングです。修正前に脆弱性はありません。

ライン883
ディレクトリの新規作成の前に、ディレクトリ名とメンバーIDが一致しているか確認しています。また、後半部分ですが、『\』を『/』に書き換える動作をしています。これを行わないと、Windowsで使用している際に、ディレクトリトラバーサルが起きます(旧バージョンでの脆弱性を確認しました)。

ライン914
上記と同様、Windowsでの『\』の対策です。

ライン922
最初に述べたラッパー関数、media_rmdir()を使うようにしています。

ライン1016
再度、ディレクトリトラバーサルのチェックをしています。サムファイル名に、『/』もしくは『\』が入っていないかどうか、チェックしています。

このプラグインは、かなり複雑な構造をしていますので、まだ何か漏れがあるかもしれません。が、少なくとも前のバージョンよりは格段と安全なはずなので、とりあえず試してみてください。

オフライン

#68 2008-12-18 11:23:56

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

お手数かけましてスンマセンです。
今慌てて対策分だけ抽出したファイル作ってたんですが、中断します。
'\'やっぱチェック必要でしたね。やってませんでしたよ。
ともあれ、読み込みます。

オフライン

#69 2008-12-18 12:27:51

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

1.0.9での対策コードについて。
media.phpの

256付近から、

受け取った全クエリを一気にサニタイズ。
配列に放り込み、以降は安心してその変数を使う。

330付近から、

myactionに対してticket処理発動

以上二点に集約されます。

オフライン

#70 2008-12-19 07:21:29

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

きゃしゃさん、

そちらの分を調べてみましたが、矢張りWindowsでの『\』使用時のディレクトリトラバーサルが起こります。それと、mb_stringがインストールされていない環境(mb_emulatorが起動する)で、fatal errorが起こります。私の主観としてですが、サニタイズルーチン部分がブラックリスト方式なので、かなり不安を感じます(switch の default で、単にbreakするのではなく確実なサニタイズを行えば、ホワイトリスト方式に近くなります)。

そこで提案なのですが、脆弱性修正のバージョンを一本化しませんか?機能追加や仕様変更などは、それを元に行ったほうが良いと思います。単刀直入に言えば、1.0.8.1 SP1の完成をまって、それから機能追加していただければ助かります。

私自身、自分の書いたコードとそちらの書いたコードを両方見るのは、しんどいです。多分、1.0.8.1 SP1 RC2でもCSRFまわりでまだ少し問題が残っていそうなので、見直さないといけません。

それと、一つ教えてください。stristrで、%00と%2eを調べている部分がありますが、これは何をしているのでしょう?LinuxかFreeBSDあたりのファイル操作まわりの脆弱性回避か何かでしょうか?

オフライン

#71 2008-12-19 10:26:10

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

おはようございます。お世話かけます。
自分的にはむしろホワイトリストなつもりだったのですが、キーに見落としがあった場合素通りの変数使うことになるってことですね。たしかにdefault要らないな。

Katsumi さんの発言:

そこで提案なのですが、脆弱性修正のバージョンを一本化しませんか?

賛同します。お世話様です。

Katsumi さんの発言:

stristrで、%00と%2eを調べている部分がありますが、これは何をしているのでしょう?

えーっとですね、'%00'はmedia-tocu-dirs時代からのコードで、(266行目あたり等)ヌルバイト対策と解釈してました。このコードをそのまま流用しました。"\0"をstr_replaceするのが一般的なようですが、それではダメだとの記事もあり、どうするのが正しいのか、理解できてません。
'%2e'については、ファイル名に'%2e%2e%2f'等含めるとPATHを誤認させられたので、禁止してしまえと。
ホンネは英数半角_-.以外一切禁止にしてしまいたいのですが。

で、ごめんなさい、今更1.0.8.1にバグ発覚しました。プライベートコレクションのルート(IDディレクトリ)が拾えてません。120行目の

		$collections[$member->getID()] = _MEDIA_PHP_32;

を124行目のksortの前に移動してください。なんで消えるんだ…?

あと、教えてください。
addTicketHidden()の利用はなにか問題ありますか?例えばよろしくない文字が混入する恐れとか。


Attachments:
zip 1081sp1rc3.zip, Size: 10.99 KiB, Downloads: 346

オフライン

#72 2008-12-19 11:29:16

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

今日はもうコードの見直しはできないので、簡単にお返事を。

きゃしゃ さんの発言:
Katsumi さんの発言:

そこで提案なのですが、脆弱性修正のバージョンを一本化しませんか?

賛同します。お世話様です。

分かりました。では、その線で行きましょう。

Katsumi さんの発言:

stristrで、%00と%2eを調べている部分がありますが、これは何をしているのでしょう?

えーっとですね、'%00'はmedia-tocu-dirs時代からのコードで、(266行目あたり等)ヌルバイト対策と解釈してました。このコードをそのまま流用しました。"\0"をstr_replaceするのが一般的なようですが、それではダメだとの記事もあり、どうするのが正しいのか、理解できてません。
'%2e'については、ファイル名に'%2e%2e%2f'等含めるとPATHを誤認させられたので、禁止してしまえと。
ホンネは英数半角_-.以外一切禁止にしてしまいたいのですが。

ですよね。なら、%00等の表現はここでは使えないと思います。ヌルバイト攻撃を検出するのであれば、ここでは"\0"等を使うべきです。%2e等を含めるというのは、ブラウザに値を与える前の話ではありませんか?もしそうだとすると、%2eを与えても、$_POST等では『.』に変換されているはずです。あるいは、$_SERVER['REQUEST_URI']などでチェックを行うのであれば、%00を調べるのも有効ですが。あと、"\0"をstr_replaceするのではなく、それを発見すれば処理を停止する(いまのきゃしゃさんのコードがこれ)のほうが、より安全です。参考までに。

addTicketHidden()の利用はなにか問題ありますか?例えばよろしくない文字が混入する恐れとか。

あそこは、きゃしゃさんが書いたようなコードで問題ありません。私がやりたかったのは、ヒアドキュメントを途中で分断するのを避けるということだけです(ソースコードを汚したくなかった)。ヒアドキュメント中で『{$manager->addTicketHidden()}』と記述できなかったので、あのような形になりました。

オフライン

#73 2008-12-22 20:22:42

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

・isValidCollection新設
192
  コアSP3のMEDIA.phpから改造してます
・ヌルバイト対策変更
306,868
・とにかくcollectionチェック
268等

追記:
確認とか質問とか
・media_checkFile()はfile_existsの確実な代替と考えてよいでしょうか
・仕様について、「他メンバーのprivateは触れない」「PATH込ファイル名によるフォルダ間移動禁止」でよいでしょうか
・ticketチェックは自分みた限り漏れないと思います
・無害化してお通しするより、エラーで蹴る方が性に合ってます。クラッカーに一矢報いるために


Attachments:
zip 1081sp1rc4.zip, Size: 11.48 KiB, Downloads: 353

オフライン

#74 2008-12-23 05:45:07

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

RC3, RC4, 見てみます。

きゃしゃ さんの発言:

確認とか質問とか
・media_checkFile()はfile_existsの確実な代替と考えてよいでしょうか
・仕様について、「他メンバーのprivateは触れない」「PATH込ファイル名によるフォルダ間移動禁止」でよいでしょうか

file_existsの代替と言うとそうなんですが、どこがどう確実かというと、realpath()関数を通すことで、『../』などの表現をすべてパースしてしまってから評価するところです。

・ticketチェックは自分みた限り漏れないと思います

$aActionsNotToCheckの設定値がちょっと気になっています。たぶん、309行あたりのswitch節の中にチェックルーチンを移すと思います。そのほうが確実なので。

・無害化してお通しするより、エラーで蹴る方が性に合ってます。クラッカーに一矢報いるために

そのほうが、より確実で安全ですね。

オフライン

#75 2008-12-23 07:44:37

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

v1.0.8.1 SP1 RC5 です。media.phpだけ。以下のリンクからダウンロードできます。
http://svn.sourceforge.jp/view/plugin/t ... nucleus-jp

1)同じチェックルーチンが何度も使われているところを、一つの関数にまとめました。media_requestVar()などがそれです。
2)'%00'を使っているルーチンがコメントアウトされているのを有効にしました。何か意味があるかもしれないからです。これがあっても、動作にほとんど問題はないはず。
3)media_loginAndPassThrough()内のチェックルーチンをはずしました。ここが呼ばれるときはログインされていないときなので、チェックは効かないです。

RC4との差分チェックは次のリンクから。
http://svn.sourceforge.jp/view/plugin/t ... 761&r2=759
RC2との差分チェックは次のリンクから。
http://svn.sourceforge.jp/view/plugin/t ... 761&r2=736

あと、CSRF対策ですが、勘違いしていました。$aActionsNotToCheckのところ、リストされているのはチェックしなくてよいアクションですね。ホワイトリストでのチェックに近いので、多分今のままで大丈夫です。

オフライン

Board footer