[PHP-users 5231] Re: [SECURITY]:PHP4 session spoofing exploit

Toshikazu Yoshikawa php-users@php.gr.jp
Wed, 6 Feb 2002 12:23:26 +0900


吉川@アンカットです。

>  >もちろんアクセスされるファイルのパーミッションは、
>  >-rw-r--r-- (644)等になってる必要があります。
>  >ここで、groupに対するパーミッションが r-- になっていても、
>  >ホームディレクトリのgroupに対するパーミッションが --- なので、
>  >同じグループに属する人は読むことができません。
> 
> 直でねらえば見えるのではありませんか。
> 
> そうじゃないと、apacheが表示できるわけがありません。

うーん、あさかわさんがおっしゃってることを私が勘違いしているのでしょうか。
とりあえず、CGIのことは抜きにして*.htmlファイル等の表示について述べます。

まずApacheユーザはUID www GID wwwとします。
また2つのユーザアカウントを以下のように用意します。

UID user1 GID webusers
UID user2 GID webusers

# ls -l /home
drwx-----x    3 user1    webusers     4096  2月  6 11:38 user1/
drwx-----x    3 user2    webusers     4096  2月  6 11:39 user2/

まず、user1のディレクトリ構成です。
# ls -l /home/user1
drwxr-xr-x    2 user1    webusers     4096  2月  6 11:38 htdocs/

# ls -l /home/user1/htdocs
-rw-r--r--    1 user1    webusers       15  2月  6 11:38 index.html

# cat /home/user1/htdocs/index.html
<H1>user1</H1>

次に、user2のディレクトリ構成です。
# ls -l /home/user2
drwxr-xr-x    2 user2    webusers     4096  2月  6 11:39 htdocs/

# ls -l /home/user2/htdocs
-rw-r--r--    1 user2    webusers       15  2月  6 11:39 index.html

ここで、Apacheのユーザであるwwwにsuします。
# su - www
$ cat /home/user1/htdocs/index.html
<H1>user1</H1>
$ cat /home/user2/htdocs/index.html
<H1>user2</H1>

と、wwwユーザでどちらのファイルの中身を見ることができます。

次に、user1になってみます。
$ exit
# su - user1
$ cat /home/user2/htdocs/index.html
cat: /home/user2/htdocs/index.html: 許可がありません

その逆のuser2からもuser1のファイルを見ることはできません。
$ exit
# su - user2
$ cat /home/user1/htdocs/index.html
cat: /home/user1/htdocs/index.html: 許可がありません

どちらのユーザのindex.htmlもApacheを動かしているwwwユーザで内容を見ることができます。
しかし、片方のユーザからはもう片方のユーザのファイルを見ることはできません。
ファイル名を直に指定してもです。

極端な例を以下に示します。
# ls -l /home/user2/htdocs
-rw-r--r--    1 user2    webusers       15  2月  6 11:39 index.html
-rw-rw-rw-    1 user1    webusers       14  2月  6 12:14 test.html

とこのように、user2のhtdos/ディレクトリ配下にオーナがuser1のファイルを用意します。
しかもパーミッションは誰もが読み書きできます。

そして、user1からこのファイルにアクセスしてみます。
# su - user1
$ cat /home/user2/htdocs/test.html
cat: /home/user2/htdocs/test.html: 許可がありません

自分のファイルであるにも関わらず、読むことができないのです。
もちろん書き込みもできません。

$ echo > /home/user2/htdocs/test.html
su: /home/user2/htdocs/test.html: 許可がありません

いかがでしょうか?
ディレクトリのパーミッションがちゃんと引き継がれているのです。
こういうことではないですか?

---
unCut  Toshikazu Yoshikawa
mailto:toshi@uncut00.com