*img.inc.phpで指定されるファイル名のチェックがされていない
*img.inc.phpで指定されるファイル名のチェックがされていない [#pf8528b5]

-ページ: BugTrack
-投稿者: [[reimy]]
-優先順位: 重要
-状態: 提案
-状態: 完了
-カテゴリー: プラグイン
-投稿日: [[2002-06-30]] (日) 23:14:01
-バージョン:
-投稿日: 2002-06-30 (日) 23:14:01
-バージョン: 

**メッセージ
**メッセージ [#g8e967a9]
-指定されたファイル名のチェックがされていない
--gif、jpg、jpeg、pngに限定すべき、aviなど動画はいらんでしょ。cgiを許すとやばそうな…
--ファイル名に使えない文字がないかのチェック→XSS脆弱性の可能性も

----
-が~ん。そんなのが残っていたのか。。。hackだhack!! -- [[seagull]] SIZE(1):2002-06-30 (日) 23:14:54
-。。。ってか、URLエンコードすべき所をHTMLエンコードしてるし。。一回ふやかさないと。。 -- [[seagull]] SIZE(1):2002-06-30 (日) 23:26:13
-URLはファイル名云々とは関係ない話なので、文字種検査しては行けません。単に、URLエンコードしてからHTMLエンコードを(この順番で)すればいいだけなんですけどね。(HTMLエンコードは一応なされているので、XSSにはならないです) -- [[seagull]] SIZE(1):2002-07-01 (月) 00:36:05
-% ; ) ( +などはそのまま通すみたいです。 -- [[reimy]] SIZE(1):2002-07-01 (月) 00:43:15
-URLエンコードしてませんからね。それらの文字がURLに入っていた場合、XSSや誤動作を回避するのは呼ばれた側の責任です。 -- [[seagull]] SIZE(1):2002-07-01 (月) 00:48:09
-あ~でも、思った通りのURLが渡せないのは問題だなぁ~ -- [[seagull]] SIZE(1):2002-07-01 (月) 00:48:39
#comment
-とりあえず、画像以外が貼られるのを防ぐための暫定処置 -- [[reimy]]
 <?
 // $id$
 function plugin_img_convert()
 {
 	if(func_num_args()!=2) {
 		return;
 	}
 	$aryargs = func_get_args();
 	$url = $aryargs[0];
 	$align = strtoupper($aryargs[1]);
 	if($align == 'R' || $align == 'RIGHT') {
 		$align = 'right';
 	}
 	elseif($align == 'L' || $align == 'LEFT') {
 		$align = 'left';
 	}
 	else {
 		return "<br style=\"clear:both\">";
 	}
         if(preg_match("/^http:\/\/(\S+?)(\.jpg|\.jpeg|\.gif|\.png)$/i", $url) == false) return;
 	return "<div style=\"float:$align;padding:.5em 1.5em .5em 1.5em\"><img src=\"$url\" alt=\"\" /></div>";
 }
 ?>

-上記変更でPukiWiki添付ファイルの直リンク -- [[たらこせる]] SIZE(1):2002-07-02 (火) 02:23:05
-ってどうなるんでしょうか。今後は使わないほうが、よい? -- [[たらこせる]] SIZE(1):2002-07-02 (火) 02:23:42
-http:\/\/(\S+?)(\.jpg|\.jpeg|\.gif|\.png)$/siを見る限りでは大丈夫ってことですかね。.swfくらいは残しても...ダメですか? -- [[たらこせる]] SIZE(1):2002-07-02 (火) 02:26:23
-でも.swfって<img>では見えなくないです? -- [[ゆう]] SIZE(1):2002-07-02 (火) 02:42:05
-''はっ''...そうですね。すいません...。 -- [[たらこせる]] SIZE(1):2002-07-02 (火) 02:48:05
-いちおう、PukiWiki本体でURL直書きしたときも画像は上記の4つの拡張子のみを許可していたので、それに準拠しました。 -- [[reimy]] SIZE(1):2002-07-02 (火) 03:18:44
-[[cvs:plugin/img.inc.php]] アップしました。 -- [[ゆう]] SIZE(1):2002-07-02 (火) 14:38:39
-とりあえずこの対策でいいですかね? -- [[ゆう]] SIZE(1):2002-07-03 (水) 01:35:23
-1.3.2にアップしてみたところ、添付ファイルへのリンクが通じなくなりましたがこれが仕様なんでしょうか。何か間違えてますか? -- [[たらこせる]] SIZE(10):2002-07-15 (月) 21:30:05
-1.3.2でもちゃんと添付ファイルにリンクされてますよ。おそらく1.3のXSSバグのある状態でリンクしたものはファイル名がバグのある状態になっているからでしょう。 -- [[reimy]] SIZE(10):2002-07-15 (月) 22:10:31
-新規にイメージファイルをアップしてリンクを用意しなおしたんですがダメです。ファイルそのものを新規にしないといけない? -- [[たらこせる]] SIZE(10):2002-07-15 (月) 23:20:33
-▼下のようなカンジで1.3までは使っていたのです。やはり表示できなくなりましたか。ちょっと残念。 -- [[たらこせる]] SIZE(10):2002-07-16 (火) 01:01:24
-リンクって、もしかして添付ファイルを#imgで表示するという意味ですか? 添付ファイルの画像を表示する場合は#refを使いましょう。[[しろくろのへや:ref.inc.php]] -- [[reimy]] SIZE(10):2002-07-16 (火) 01:01:51
-ああ、ありがとうございます。ただ#refだと回り込み、きかないですよね。 -- [[たらこせる]] SIZE(10):2002-07-16 (火) 01:28:46
-こうなると携帯端末からの転送は「本日の一枚」に頼るのがいいんだろうか。 -- [[たらこせる]] SIZE(10):2002-07-16 (火) 01:31:31
-回り込みさせるのは簡単だから、改造して#ref2を作るのが手っ取り早いと思います。#imgと#refを見比べればどこを改造すれば回り込みできるかは一目瞭然ですし。 -- [[reimy]] SIZE(10):2002-07-16 (火) 01:49:00
-ということで、添付ファイルの画像を回り込み付きで表示するプラグイン#ref2を添付しておきます。 -- [[reimy]] SIZE(10):2002-07-16 (火) 02:15:50
-使い方は#ref2(ファイル名,R)または#ref2(ファイル名,L)。第2引数を省略するとLになります。回り込みの解除は従来通り#img(,)を使います。デフォルトでは<table>で囲んでいますが、WRAP_TABLE=FALSEにすれば<table>で囲みません。テキストとの間隔は30行目のpaddingで調整してください。 -- [[reimy]] SIZE(10):2002-07-16 (火) 02:35:34
-深夜にご苦労様です。まだ数少ないんでコピペ一括置換しますがみなさんはWikiファイル置換はどのようにやっておられるのでしょうか。 -- [[たらこせる]] SIZE(10):2002-07-16 (火) 09:31:50
-僕はWikiディレクトリを直接sedで置換してます。 -- [[ゆう]] SIZE(10):2002-07-16 (火) 10:44:19
-無事2稼動しました、が、ファイル名はhttp://~からのものではなく、ほんとにファイル名だったんですね。置換きかない...。ん?やりようはあるのか。でも、直接削除しちゃったほうが楽そうだなあ。 -- [[たらこせる]] SIZE(10):2002-07-16 (火) 11:13:44
-わたしもgrepでチェックしてsedで一括置換だなあ。とても手作業でやる気は起きない(笑い) -- [[reimy]] SIZE(10):2002-07-16 (火) 11:34:38
-今朝はユーザー定義を:hogehoge:から&hogehoge;に変更したので、これの一括変換をやってました。これでユーザー定義が<dt>や<dd>の中でも使える。 -- [[reimy]] SIZE(10):2002-07-16 (火) 11:35:51
-''あああっ''そのユーザー定義変更、かなり重要な感じ...sedもgrepも使ったことないんですが習得してきます。 -- [[たらこせる]] SIZE(10):2002-07-16 (火) 16:53:58
-正規表現マスターしないと...話題変わってますね、すいません。 -- [[たらこせる]] SIZE(10):2002-07-16 (火) 16:56:47
-preg_matchにJPG、PNG、GIFなども加えておくとよいかもわかりません。WINXPがデフォルトで大文字で吐き出す場合があるようです。 -- [[たらこせる]] SIZE(10){2002-07-16 (火) 22:39:23}
---img.inc.phpと同じように/(\.gif|\.png|\.jpeg|\.jpg)$/を/(\.gif|\.png|\.jpeg|\.jpg)$/iにすればいいだけじゃん(笑い) -- [[reimy]] SIZE(10){2002-07-17 (水) 14:26:16}
-uploadされたときのメディアタイプを使うという手もあります。image/pjpeg等。 --  SIZE(10){2002-07-17 (水) 08:00:34}
-メディアタイプなんて自己申告なんだから、いくらでもごまかして穴作れるやん。 --  SIZE(10){2002-07-17 (水) 15:32:24}
-<img>で括られてしまう中でどのような穴になりうるんでしょう?単に表示できないだけではないのでしょうか。 --  SIZE(10){2002-07-17 (水) 18:59:05}
-[[しろくろのへや:ref.inc.php]]で#refプラグインがバージョンアップされて#ref2の機能も包含したので#ref2は廃止します。 -- [[reimy]] SIZE(10){2002-07-20 (土) 08:49:01}

//#comment


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.053 sec.

OSDN