dポイントプレゼントキャンペーン実施中!

以前、どこかのHPで同一サーバだとCGIなどのファイル?ファイル名、サーバにアップしていないファイル名を見られてしまう可能性があると読んだのですが本当でしょうか?
絶対にありえないことだと思う(レンタルサーバのため信用している)のですが気になったので本当のところを教えていただけないでしょうか?
宜しくお願い致します。

A 回答 (11件中1~10件)

可能性としては相当希少ですが・・・


・OSのセキュリティーホールとsuexecのサポート範囲外で、外部からスクリプトが実行される。

例えば、こんな例です。

-----
同じサーバーの住人が、アップローダー掲示板を用いて何らかのスクリプトをアップロードする。
それが、例えば、http://example.com/files/hoge001.jpg にアップされたとします。

そして、OSのセキュリティーホール(uidが不正に書き換えられるCで作られたスクリプト)を用いて、既にわかっているパスである /home/example/public_html/files/hoge001.jpg を実行しようとする。
-----

ただ、このセキュリティーホールが存在するとしたら、rootにもなりえる可能性があるので、そこまで対処するほどでもないとは思いますが、少なくとも . と、public_html相当のディレクトリは 701、外部から見ることのない大事なデータのディレクトリは、700にしておいたほうがベストです。
#その前に、OS側でセキュリティーホールが改善されるはずです。

ちなみに、もし、真ん中の数字を0以外の数字にしたら、丸見えになりますので注意して下さい。
(755 とか・・・)
    • good
    • 1

パーミッションについては#9にて、一応の決着を見たようですので


CGIのセキュリティホールについて、ちょっとだけ触れておきます
・検索CGIなどでユーザーからの入力をそのままunixシェルに渡す危険なCGI
 =>入力された文字列から少なくとも ; と / は除くべき

・複数掲示板を処理するCGIでlogのfile名自体をチェックせずに受け取り、処理する危険なCGI
 =>file名自体ではなく、ログの識別番号(半角英数字)以外は受け取らないようにする

sakuraの場合、Suexecで基本的にはセキュリティが高くなっていますが
Suexecだと実効IDがユーザーとなるため、上記のような
バグのあるCGIがあると実効IDがotherのCGIよりも被害が拡大する可能性があります
このあたりに関心がおありならCGIのカテゴリーで改めて、ご質問ください
    • good
    • 0

>sakuraの場合u:gが


>tarou:tarou とhoge:hogeではなくて
>tarou:*** hoge:*** (***の中は同じグループ名)で
>同じサーバのユーザは同じグループ名になってますね、、、

あ、確かに、これだとデフォルトでは見れませんね。(今、実際shellをたたきました)

ですが、何らかのアタック(セキュリティーホール等)を少しでも防止するには、701にしておくべきですね。

さくらとは関係ありませんが、某大手レンタルサーバーでは、容易に他人を見ることが可能です。汗
    • good
    • 0
この回答へのお礼

回答いただきありがとうございます。
セキュリティの知識が無いため、できれば、何も触らず、705で使いたいと思っていますが、もし、このまま、705のままである場合、どんなリスクが考えられますか?
今回、実際色々触ってみて、さくらのサーバはかなりセキュリティが強いと感じて少々、過信気味のところがあります。

また、他のサーバ(大手)で、こういったことがあるとは知りませんでした!
他のサーバに引越しするする際は気をつけます。

お礼日時:2006/06/10 01:34

sakuraの場合u:gが


tarou:tarou とhoge:hogeではなくて
tarou:*** hoge:*** (***の中は同じグループ名)で
同じサーバのユーザは同じグループ名になってますね、、、

**質問者さんに補足要求です
tarou と hoge と言うIDをお持ちと仮定して
/home/tarou/ を701にして
 (telnetでログインし chmod 701 . と打つ)
/home/hoge/ は705のままで
/home/tarou/www/ と/home/hoge/www/の両方に

#! /usr/bin/perl
print"Content-type: text/html; charset=Shift_JIS\n\n";
print"<html>\n";
print"<body><pre>\n";
print "<h3>ls -al /home/tarou/ の結果</h3>";
print `ls -al /home/tarou/`;
print "<HR>\n";
print "<h3>ls -al /home/hoge/ の結果</h3>";
print `ls -al /home/hoge/`;
__END__

と言う内容のCGIを設置して、ブラウザで両方のCGIにアクセスしてみてください
ls -al /home/tarou/の結果と ls -al /home/hoge/ の
結果の下にfile一覧が表示されなければ705のままでもOKかと思います。

で、試しに/home/hoge/ を 755にしてCGIにアクセスすると
今度はfile一覧が表示されちゃいますよね?
    • good
    • 0
この回答へのお礼

回答いただきありがとうございます。
>tarou:tarou とhoge:hogeではなくて
書いてある意味が、知識不足でいまいち良く分かりません(u:g?)が、FFFTPで見る限り、
ユーザーIDと所有者は一緒になっています。

また、言われた操作を行ってみたところ、705,701では、もう一つのIDの中は閲覧できませんでした。設置ディレクトリは両方とも閲覧可能でした。
また、もう一つのIDを、755にするとどちらからも閲覧できました。

つまり、さくらでは、良く分かりませんが、かなり強力に対策がとってあると思っていいのでしょうかね?
パソコンはWindowsしか使ったことが無いのでサーバは良く分かりませんがなんとなく、しっかりしたセキュリティーが入っているような気がしました。

お礼日時:2006/06/10 01:26

telnet.cgiで進入すると(さくらの場合、スタンダードプラン以降でも普通にtelnet/sshで)こういうふうに見れます。


(同じく、あなたのユーザー名が tarou だとします)

(みづらいので、メモ帳とかにコピー&ペーストして、等幅で見てください)

exampleさんとhogeさ、tarouんは同じファイル構成をしていると仮定します。
exampleさんはデフォルト状態、hoge、tarouさんは対策をとっていると仮定します。

> ではじまる行は、実際に入力したものと仮定します。

■/home に移動して、ユーザー一覧を見る
Current Directory:/home/tarou/public_html
>cd ../..

Current Directory:/home
>ls -al
drwxr-xr-x abc abc (容量 日付) abc
drwxr-xr-x abz abz (容量 日付) abz
drwxr-xr-x example example (容量 日付) example
drwx-----x hoge hoge (容量 日付) hoge
drwx-----x tarou tarou (容量 日付) tarou

(など・・沢山でてくる)

■未対策のexampleさんを覗く
Current Directory:/home
>cd example

Current Directory:/home/example
>ls -al
drwxr-xr-x example example (容量 日付) data
drwxr-xr-x example example (容量 日付) public_html

Current Directory:/home/example
>ls -al data
-rw-r--r-- example example (容量 日付) cart.dat

Current Directory:/home/example
>cat data/cart.dat
〒100-0000 東京都hogehoge区hoge1-2-3 ほげ 太郎 17000 チケット
〒100-0000 東京都example区example1-2-3 さんぷる 花子 17000 チケット
(覗けますよね)

■対策済みのhogeさんを覗く
Current Directory:/home/example
>cd ../hoge

Current Directory:/home/hoge
>ls -al
ls: hoge: Permission denied

Current Directory:/home/hoge
>ls data
ls: : Permission denied

Current Directory:/home/hoge
>cat data/cart.dat
cat: data/cart.dat : Permission denied

■対策済みの自分自身を見る
Current Directory:/home/hoge
>cd ../tarou (もしくは cd ~)

Current Directory:/home/tarou
>ls -al
drwx------ tarou tarou (容量 日付) data
drwx-----x tarou tarou (容量 日付) public_html

Current Directory:/home/tarou
>ls data
-rw------- tarou tarou (容量 日付) cart.dat

Current Directory:/home/tarou
>cat data/cart.dat
〒100-0000 東京都hogehoge区hoge1-2-3 ほげ 太郎 17000 チケット
〒100-0000 東京都example区example1-2-3 さんぷる 花子 17000 チケット
(自分自身のだから見えてあたりまえ)

参考までに、
drwxr-xr-x - ディレクトリのパーミッション755
drwx-----x - ディレクトリのパーミッション701
drwx------ - ディレクトリのパーミッション700
-rw-r--r-- - ファイルのパーミッション644
-rw------- - ファイルのパーミッション600
1234567890
それぞれの意味は
1文字目のd - ディレクトリであるか?
2~4文字目 - 自分自身 (r=読み込み可 w=書き込み可 x=ディレクトリなら侵入可、ファイルなら実行可)
5~7文字目 - グループ
8~10文字目 - その他のユーザー

ブラウザからくるユーザーは、基本的にその他のユーザーですので、その他に対する権限はそれなりに与えてあげないといけないファイルもありますが、CGIの場合であれば既に自分の権限で実行されるので、自分自身だけに権限があれば大丈夫なわけです。

参考URL:http://www2d.biglobe.ne.jp/~gama/cgi/tools.htm

この回答への補足

回答いただきありがとうございます。
同じサーバに2つIDがあるので試しに見れるかどうかを確認してみたのですが無理だと思います。
(設定は、デフォルトのままです)

/homeまで移動して、
cd hoge(今telnet.cgiを使っているのとは別のID名)
を実行すると、


Curr Dir:/home

>cd hoge
cd hoge:not success.
Curr Dir:/home


となります。

また、試しにhogeのパーミッションを777に設定してみたところ、
Curr Dir:/home

>cd hoge
Curr Dir:/home/hoge
となり、ディレクトリの中に入ることができるようです。

つまり、意図的に自分でパーミッションの設定を低くしない限りは、さくら側で特殊な対策をしている?ため見られる心配は無いと思うのですがいかがでしょうかね?

因みに、デフォルトでは、705となっています。

補足日時:2006/06/09 15:10
    • good
    • 1

>つまり、さくらの共用サーバでは、共用サーバのユーザが


>CGIを使うことで見られてしまうということでしょうか?

いや、だからそれはymdaさんも書かれているように、、、
例えばあなたのユーザー名がtarouだとします
/home/ が755 
 (今、確認しましたがsakuraはad.jp=法人向け でも ne.jp=個人向けでもこうなっています。
 /home/自体の所有者は運営側なのでパーミッションの変更出来ません)

/home/tarou/ は初期状態で705ですが701に変更してください
そうすれば、他のユーザーからはtarouというユーザーディレクトリが存在する事は判りますが
/home/tarou/ の中にどういうfileがあるかは判りません
/home/tarou/www/ や、それ以下のディレクトリも701にして下さい。

あとはymdaさんが#3で詳しく書かれているとおりにすればOKです。
    • good
    • 0

補足の回答のみします。



多くのレンタルサーバーのデフォルト設定では、見ることができます。
さくらの共用サーバーのデフォルト設定も同様です。

ですが、ここの回答にあるパーミッションを設定することで
どのような方法であろうとサーバー管理者以外は一切見ることができます。

#ちなみに、個人情報開示になるので提示しませんが、
 私が昔立ち上げたレンタルサーバー業者は、可能な限り
 安全なパーミッションになるようになっていたはずですが、今現在はわかりません。
    • good
    • 0

すみません、私の書いた#2も一部ミスが有りました



>Suexecで無い場合はcgiやディレクトリを少なくとも705にしないと動きませんが
正しくは:
Suexecで無い場合は .cgiは705 ディレクトリは701 でOKです。

ディレクトリ内のfileを検索するようなCGIを置くのなら
ディレクトリを705にする必要がありますが
(cgiの中ににfile名のリストを記述していれば別ですが)
同様に他のユーザーのcgiからもディレクトリ内検索されてしまうので
セキュリティは低下しますね

この回答への補足

回答いただきありがとうございます。

Suexecなどかなり専門的になって理解できていないのですが、
つまり、さくらの共用サーバでは、共用サーバのユーザが
CGIを使うことで見られてしまうということでしょうか?

そして、共用サーバのメンバーの、どなたかが、Telnet.cgiを設置や、放置していると
外部からも見られてしまう可能性があるということでしょうか?

今一理解できていませんので、ご返答いただけると幸いです。

お手数ですが、宜しくお願い致します。

補足日時:2006/06/08 21:44
    • good
    • 0

#1です。



意図的に一般的な設定にするために、705とセキュリティーを落としている可能性もあります。

ちなみに、本当にプライベートな情報を安全に見れないようにするには、

・BASIC認証のパスワードを保存する場合
/home/user/public_html/.htaccess
パーミッション604 (である必要があります)

/home/user/private
パーミッション701

/home/user/private/.htpassword(適時ファイル名を変更して下さい)
パーミッション604(である必要があります)

・更に掲示板を安全にする
/home/user/public_html/bbs/bbs.cgi (ただのwrapper)
perlの場合、
#!/usr/bin/perl
require "/home/user/bbs1/ast/bbsabcdefg.cgi";
の2行のみで
パーミッション 700

/home/user/bbs1
パーミッション 700

/home/user/bbs1/ast
パーミッション 700

/home/user/bbs/ast/bbsabcdefg.cgi
パーミッション 600 (requireで呼び出されるものは実行属性が不要)
(設定ファイル等は絶対パスにする必要があります)

/home/user/bbs/ast/abcdefgh.cgi
パーミッション 600

ちなみに、世の中には、telnet.cgiってものが存在するので、悪用すれば簡単に他人の領域を見ようと思えば見れてしまいますが、自己でしっかりパーミッションを徹底管理することで、安全なWeb領域を構築することができるかと思います。

参考までに、Webサーバーからの情報流出の1/3は、パーミッション問題であると過言ではないようです。

なお
>/home/
>まで移動すると・・・・

これだけは回避できませんが、セキュリティー的には特に問題ないはずです。
#そのサーバーに、xxx.sakura.ne.jpってユーザーがいるんだなってバレル程度程度で、それ以上の情報が漏れることはありません。

#2さんへ・・
確かに、.cgiは700で動きますね。こちらのミスです。

この回答への補足

回答いただきありがとうございます。

Suexecなどかなり専門的になって理解できていないのですが、
つまり、さくらの共用サーバでは、共用サーバのユーザが
CGIを使うことで見られてしまうということでしょうか?

そして、共用サーバのメンバーの、どなたかが、Telnet.cgiを設置や、放置していると
外部からも見られてしまう可能性があるということでしょうか?

今一理解できていませんので、ご返答いただけると幸いです。

お手数ですが、宜しくお願い致します。

補足日時:2006/06/08 21:44
    • good
    • 0

いや、Suexecなら .cgiのパーミッションは700で動きます。


他のパーミッションは#1さんのいわれる通り
確認環境
http://www.sakura.ne.jp/rs/http://www.sakura.ad.jp/services/rental/vd/ のレンタルサーバ
および自宅のfc5+apache2.2.0 とVine3.2+Apache2.0.55

で、最近はレンタルサーバだとSuexecの方が多いんじゃないかと思います。

Suexecで無い場合はcgiやディレクトリを少なくとも705にしないと動きませんが
755 他のユーザーからFTPやtelnetでも見られる可能性有り
705 他のユーザーがこちらのfile内を閲覧するcgiを使えば見られてしまう

>サーバにアップしていないファイル名
それは通常ありえませんが
・サーバーにアップロードしているが他のfileからリンクしていないfile
・サーバーにアップしていないが他のfile内に記述してあるfile名
だと有り得ますね
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!