投稿日:2003年01月09日 作成鷹の巣

No.7697 個人サーバでスペースを貸出す場合のCGI実行許可の危険性について。



個人サーバでスペースを貸出す場合のCGI実行許可の危険性について。

No.7697 投稿時間:2003年01月09日(Thu) 11:03 投稿者名:Klaris URL:

こんにちは。

こちらの掲示板に書き込むのはどうかとも思ったんですがちょっと聞いてみたいことが
ございまして・・・。

というのも、個人で立てたwebサーバを他の人にレンタルしている人って最近増えてきた
と思うんですけど(無料、有料は別にして)、その際に多くの人がCGIを許可しています
よね?
その場合、そのサーバ管理者はコマンド発行系のCGIへの対策は施しているのかどうかと
いうのがふと疑問に思ったんです。
自分でたてたサーバを他の人に貸していてそのユーザがコマンド発行系のCGIを設置した
場合に、何も対策を施していないサーバだとサーバ自身に対してかなり脅威になると思う
んですけどいかがでしょうか?
この場合httpdを動かしている権限で発行できるコマンドはすべて発行できてしまいます。

例えば、linuxなどのUNIX系OSの場合一般ユーザが使えるコマンドは全部使えてしまいます。
ps auxwを発行されるとサーバで走っているすべてのプロセスが見れますし、netstatなんか
ではサーバに張られているコネクションすべてが見れます(見たいかどうかは別として)。
サーバのディレクトリのリストを取得することも可能です。
winでも一般ユーザがtelnetでできることはCGIを介して一通りできます。
他にもhttpdを起動しているユーザが所有しているファイルをすべてデリートしたり、サーバ
に対して簡単なDOS攻撃を仕掛けることも可能です。当然踏み台にも使えます。
これらは、httpdの実行アカウントにログインシェルを与えていなくても可能です。

とまあ、こういった点をスペースを貸している方はどの程度とらえ、対策されているのかな?
と思った次第であります。
皆さんの御意見をお聞かせください。

ちなみにUNIX系OS+apacheの場合suexecやchrootなんかで環境構築してやるとある程度防げます。
windowsや他のhttpdの場合はどうなんですかね?そこら辺も参考程度に教えてほしいです。


管理人様へ
この発言が不適切だと思われた場合は削除して頂いて構わないです。ただその場合、一言メール
していただけると有り難いです。


私はとても他人に貸す自信はありません

No.7699 投稿時間:2003年01月09日(Thu) 12:08 投稿者名:OAK URL:

> こんにちは。
>
> こちらの掲示板に書き込むのはどうかとも思ったんですがちょっと聞いてみたいことが
> ございまして・・・。
>
> というのも、個人で立てたwebサーバを他の人にレンタルしている人って最近増えてきた
> と思うんですけど(無料、有料は別にして)、その際に多くの人がCGIを許可しています
> よね?
> その場合、そのサーバ管理者はコマンド発行系のCGIへの対策は施しているのかどうかと
> いうのがふと疑問に思ったんです。
> 自分でたてたサーバを他の人に貸していてそのユーザがコマンド発行系のCGIを設置した
> 場合に、何も対策を施していないサーバだとサーバ自身に対してかなり脅威になると思う
> んですけどいかがでしょうか?
> この場合httpdを動かしている権限で発行できるコマンドはすべて発行できてしまいます。
>
> 例えば、linuxなどのUNIX系OSの場合一般ユーザが使えるコマンドは全部使えてしまいます。
> ps auxwを発行されるとサーバで走っているすべてのプロセスが見れますし、netstatなんか
> ではサーバに張られているコネクションすべてが見れます(見たいかどうかは別として)。
> サーバのディレクトリのリストを取得することも可能です。
> winでも一般ユーザがtelnetでできることはCGIを介して一通りできます。
> 他にもhttpdを起動しているユーザが所有しているファイルをすべてデリートしたり、サーバ
> に対して簡単なDOS攻撃を仕掛けることも可能です。当然踏み台にも使えます。
> これらは、httpdの実行アカウントにログインシェルを与えていなくても可能です。
>
> とまあ、こういった点をスペースを貸している方はどの程度とらえ、対策されているのかな?
> と思った次第であります。
> 皆さんの御意見をお聞かせください。

私もこの点が不思議です。
http://J-EM.ORG/ さんや http://chobi.net さんなど WindowsでCGI貸してます。
有名なプログラムでは telnet.cgi など行なうとなんでも出来ちゃいます。

> ちなみにUNIX系OS+apacheの場合suexecやchrootなんかで環境構築してやるとある程度防げます。

これも考えたのですが、ソケットを許可してしまうと、外のサーバーの踏み台として動作します。
suexec は完全なchrootでないので、他のファイルにOWやORのモードがあるとだめですから
相当な対策が必要ですね。

私はとても他人に貸す自信はありません。


UNIX系ではある程度の対策はとれるんですが・・・。

No.7700 投稿時間:2003年01月09日(Thu) 12:34 投稿者名:Klaris URL:

> 私もこの点が不思議です。
> http://J-EM.ORG/ さんや http://chobi.net さんなど WindowsでCGI貸してます。
> 有名なプログラムでは telnet.cgi など行なうとなんでも出来ちゃいます。

あ、名前だしちゃいましたか(笑)確かに有名ですけど今まで知らなかった人やCGI書けない人が
このスレッドを見てモノが既にあることを知るなど悪影響与えたらいけないと思って一応伏せたんですけど(笑)

UNIX系ではある程度の対策はとれるんですが、もともとパーミッションに関する考えが甘いWIN系ではどう
なのかな?と。


> これも考えたのですが、ソケットを許可してしまうと、外のサーバーの踏み台として動作します。
> suexec は完全なchrootでないので、他のファイルにOWやORのモードがあるとだめですから
> 相当な対策が必要ですね。

そうなんすよ。私はまだ試してませんがプロバイダのレンタルスペースなどでも問題なく動いてたりも
するみたいなんで、個人でなくてもどういった認識されて対策されてるのか気になるところです。


Windows環境でも、ソケットを禁止することは可能なんですか?

No.7717 投稿時間:2003年01月09日(Thu) 17:40 投稿者名:上野 URL:http://unn.jp

僕も一回、考えてみた事が有りますが、ソケットを禁止することは可能なんですか?(Win環境でも)
でも、CGI許可していた時点で、攻撃できちゃいますよね・・・?


仕事でお金を頂いても行いたくないですね。

No.7756 投稿時間:2003年01月10日(Fri) 21:07 投稿者名:鷹の巣 URL:http://sakaguch.com/

> UNIX系ではある程度の対策はとれるんですが、もともとパーミッションに関する考えが甘いWIN系ではどう
> なのかな?と。
>
>
> > これも考えたのですが、ソケットを許可してしまうと、外のサーバーの踏み台として動作します。
> > suexec は完全なchrootでないので、他のファイルにOWやORのモードがあるとだめですから
> > 相当な対策が必要ですね。
>
> そうなんすよ。私はまだ試してませんがプロバイダのレンタルスペースなどでも問題なく動いてたりも
> するみたいなんで、個人でなくてもどういった認識されて対策されてるのか気になるところです。

プロバイダWAKWAKの場合は
-----------------------------
CGI設定ガイド
http://www.wakwak.com/info/connection-setup/ftp/custom-cgi.html
の「6.CGIスクリプトの実行環境は?」に
「自作CGI設置に関して」の「CGIスクリプトは、ホームページ所有者のユーザID、グループIDに suid、sgidされて実行されます。」
と書いてありますので、Perlでhttpクライアントを設置する予定でしたが、動きませんでした。

自宅サーバーWebRingの「なべけん」さんから、
「CGI スクリプトを書く上での注意点」の「4.perlのライブラリは?」に
「use Socket; 自体は動作しますが、Socketで通信を許しているのは localhostへのsmtp/tcpのみとなります。」
と書いてありますと教えて頂き、パケットフィルタリングされているのに気づきました。
-----------------------------
という具合で、色々制限を加えておられる様です。

自宅サーバーをレンタルする場合を以下の様に大雑把に3種類に分類しますと。
1.ホームページスペースだけの貸し出し。(一般パス下のみFTPアップロード可)
2.ホームページスペースの貸し出し。 (一般パス下のFTPアップロード可)
に加えて、数種の既定CGIの実行。 (実行パス下のFTPアップロードは、不可)
3.ホームページスペースの貸し出し。 (一般パス下のFTPアップロード可)
に加えて、ユーザの自由なCGIの実行。 (実行パス下のFTPアップロード可)

上記の1と2は、個人でもなんとかなりそうですし、セキュリティもそんなに甘くなりませんが、
3になりますと、極端にセキュリティが低下し、難しくなります。
Unix系のOSの方が楽だと思いますが、WindowsでもNT系でもなんとか出来ると思います。
# Windows XP Home Editionでは、httpdとCGIのアクセス権が適切に設定出来ません。

正直に言いますと、3は、仕事でお金を頂いても行いたくないですね。
ユーザの個人情報(住所・氏名・電話番号・勤め先等)を把握していても、ちょっとうまい防御方法が思いつきません。

PerlでもSYSTEM関数を使用しなくてもOPEN関数でコマンドを実行出来ますので、
ユーザーの書いたperlのソースを読むというのも無理な話です。

実行権限の甘いtmpディレクトリ等がユーザにわかってしまうと、
OSの種類とバージョンが同じ実行ファイルをUPロードされて、実行される危険性もありますので、大変です。

Perlの不必要なモジュールを取り除いたり、他にも沢山あると思いますけど。


ものすごく簡単なんですが、記事にしてみました。

No.7896 投稿時間:2003年01月18日(Sat) 12:00 投稿者名:鷹の巣 URL:http://sakaguch.com/

> 自宅サーバーをレンタルする場合を以下の様に大雑把に3種類に分類しますと。
> 1.ホームページスペースだけの貸し出し。(一般パス下のみFTPアップロード可)
> 2.ホームページスペースの貸し出し。 (一般パス下のFTPアップロード可)
> に加えて、数種の既定CGIの実行。 (実行パス下のFTPアップロードは、不可)
> 3.ホームページスペースの貸し出し。 (一般パス下のFTPアップロード可)
> に加えて、ユーザの自由なCGIの実行。 (実行パス下のFTPアップロード可)
>
> 上記の1と2は、個人でもなんとかなりそうですし、セキュリティもそんなに甘くなりませんが、
> 3になりますと、極端にセキュリティが低下し、難しくなります。


上記の説明では、わかりにくいので、ものすごく簡単なんですが、記事にしてみました。
http://sakaguch.com/Security.html#Rental


|目次|掲示板|過去ログ目次|▲頁先頭|