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

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

メッセージ

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

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

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2002-07-20 (土) 09:03:27
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.226 sec.

OSDN