シンボリックリンク攻撃を基礎からおさらい

シンボリックリンク攻撃を超基礎から整理します

<環境>
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
は見れるし

symlink1

http://(server ip)/test2/index.php
も見れます

symlink2

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
とすると

symlink3

ソースが見えてしまいます。
恐ろしい…

防ぐには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

所有ユーザーが違うので

symlink4

アクセスできなくなります

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください