シンボリックリンク攻撃を超基礎から整理します
<環境>
Centos
Apache 2.2.15
まずは、Apacheでのアクセス権限について整理
/var/www/html/test/index.html
というフォルダを参照するとき
apacheグループ所属のapacheユーザーがアクセスにきます
WEBブラウザで参照するときに必要になるのは
/var/www/html/test/ → x 実行権限
/var/www/html/test/index.html → r 読み取り権限
シンボリックリンク攻撃の一例を試してみます
下記の通り、ファイルがあるとして
drwx------ apache apache test
drwx------ apache apache test/index.php
drwx-----x user user test2
drwx---r-- user user test2/index.php
http://(server ip)/test/index.php
は見れるし
http://(server ip)/test2/index.php
も見れます
test/index.phpのソースは普通は見れませんが
cd test2
ln -s ../test/index.php test.txt
とシンボリックリンクを作って
drwx------ apache apache test
drwx------ apache apache test/index.php
drwx-----x user user test2
drwx---r-- user user test2/index.php
lrwxrwxrwx user user test.txt -> ../test/index.php
http://(server ip)/test2/index.txt
とすると
ソースが見えてしまいます。
恐ろしい…
防ぐにはhttpd.confか.htaccessでのFollowSymLinksを無効にすればいいです
Option -FollowSymLinks
また、SymLinksIfOwnerMatchを有効にすると
所有ユーザーが同じファイルのシンボリックリンクが有効になります
Option -FollowSymLinks SymLinksIfOwnerMatch
上記例での http://(server ip)/test2/index.txt
のアクセスは
drwx------ apache apache test/index.php
lrwxrwxrwx user user test.txt -> ../test/index.php
所有ユーザーが違うので
アクセスできなくなります