![]()
|
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7">
CGI ãƒã‚¤ãƒŠãƒªã¨ã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æœ‰ã‚Šã†ã‚‹æ”»æ’ƒPHP ã‚’ CGI ãƒã‚¤ãƒŠãƒªã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã®ã¯ã€PHP ã‚’ モジュールã¨ã—ã¦(Apache ã®ã‚ˆã†ãª)サーãƒãƒ¼ã‚½ãƒ•トウエアã«çµ„ã¿è¾¼ã¿ ãŸããªã„何らã‹ã®ç†ç”±ãŒã‚ã‚‹å ´åˆã‚„安全㪠chroot 㨠setuid 環境をス ã‚¯ãƒªãƒ—ãƒˆã«æä¾›ã™ã‚‹ä»–ã® CGI ラッパーã¨çµ„ã¿åˆã‚ã›ã¦ PHP を使用ã™ã‚‹ å ´åˆã®è¨å®šã‚ªãƒ—ションã§ã™ã€‚セットアップ時ã«ã¯ã€é€šå¸¸ã€PHP 実行ãƒã‚¤ ナリを Web サーãƒãƒ¼ã® cgi-bin ディレクトリã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¾ã™ã€‚ CERT 勧告 CA-96.11ã¯ã€ã„ã‹ãªã‚‹ã‚¤ ンタプリタを cgi-bin ã«ç½®ãã“ã¨ã«ã‚‚å対ã—ã¦ã„ã¾ã™ã€‚ PHP ãƒã‚¤ãƒŠãƒªã‚’スタンドアãƒãƒ³ã®ã‚¤ãƒ³ã‚¿ãƒ—リタã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒ ã§ãã‚‹å ´åˆã§ã‚‚ã€PHP ã¯ã€ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—ã«ã‚ˆã‚Šç”Ÿã˜ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ 次ã®ã‚ˆã†ãªæ”»æ’ƒã‚’防ãよã†ã«è¨è¨ˆã•れã¦ã„ã¾ã™ã€‚
ケース 1: 公開ファイルã®ã¿ã‚’é…布サーãƒãƒ¼ä¸Šã«ãƒ‘スワードã¾ãŸã¯ IP アドレスを元ã«ã—ãŸã‚¢ã‚¯ã‚»ã‚¹åˆ¶é™ã« よる制約をå—ã‘るコンテンツãŒãªã„å ´åˆã€ã“ã®è¨å®šã‚ªãƒ—ションを使用㙠る必è¦ã¯ã‚りã¾ã›ã‚“。使用ã™ã‚‹ Web サーãƒãƒ¼ãŒãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã‚’許å¯ã—㪠ã„å ´åˆã‚„サーãƒãƒ¼ãŒãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆè¦æ±‚を安全ã«å‡¦ç†ã—ã¤ã¤PHP ãƒã‚¤ãƒŠãƒª ã¨é€šä¿¡ã§ãる手段を有ã—ã¦ã„ãªã„å ´åˆã€ã‚ªãƒ—ション --enable-force-cgi-redirectã‚’ configure ã‚¹ã‚¯ãƒªãƒ—ãƒˆã«æŒ‡å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã®å ´åˆã§ã‚‚ã€ç›´æŽ¥ çš„ãªæ–¹æ³• http://my.host/cgi-bin/php/dir/script.php ã§ã‚‚ãªãリダイレクション http://my.host/dir/script.phpã§ã‚‚ãªã„他㮠やり方㧠PHP スクリプトを呼ã³å‡ºã›ã‚‹ã‚ˆã†ã«ãªã£ã¦ã„ãªã„ã‹ã©ã†ã‹ç¢ºèª ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ リダイレクションã¯ã€ä¾‹ãˆã° Apache ã§ã¯å‘½ä»¤ AddHandler ãŠã‚ˆã³ Action ã§è¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚(以下をå‚ç…§ã—ã¦ãã ã•ã„。) ケース 2: --enable-force-cgi-redirect を使用ã“ã®ã‚³ãƒ³ãƒ‘イル時ã®ã‚ªãƒ—ションã¯ã€ http://my.host/cgi-bin/php/secretdir/script.php ã®ã‚ˆã†ã« URL ã‹ã‚‰ç›´æŽ¥ PHP を呼ã³å‡ºã™ã“ã¨ã‚’ç¦æ¢ã—ã¾ã™ã€‚ 代ã‚りã«ã€ Web サーãƒãƒ¼ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«ã‚ˆã‚Šå‡¦ç†ã•れãŸå ´åˆã¯ã€ PHP ã¯ã“ã®ãƒ¢ãƒ¼ãƒ‰ã§ã®ã¿å‡¦ç†ã‚’行ã„ã¾ã™ã€‚ 通常ã€Apache 用è¨å®šã§ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã¯ã€ 次ã®å‘½ä»¤ã‚’使用ã—ã¦è¡Œã„ã¾ã™ã€‚
ã“ã®ã‚ªãƒ—ションã¯ã€Apache Web サーãƒãƒ¼ã§ã®ã¿ãƒ†ã‚¹ãƒˆã•れã¦ãŠã‚Šã€ãƒªã‚¯ エストã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆæ™‚ã« Apache ãŒæ¨™æº–ã§ã¯ãªã„CGI 環境変数 REDIRECT_STATUS をセットã™ã‚‹ã“ã¨ã‚’剿ã«ã—ã¦ã„ã¾ã™ã€‚ リクエストãŒç›´æŽ¥ã®ã‚‚ã®ã§ã‚ã‚‹ã‹é–“接ã®ã‚‚ã®ã§ã‚ã‚‹ã‹ã‚’ç¤ºã™æ‰‹æ®µã‚’Web サーãƒãƒ¼ãŒå…¨ãサãƒãƒ¼ãƒˆã—ã¦ã„ãªã„å ´åˆã¯ã€ã“ã®ã‚ªãƒ—ションを使用ã™ã‚‹ ã“ã¨ã¯ã§ãã¾ã›ã‚“。ã“ã®å ´åˆã€ã“ã“ã§è¨˜ã—㟠CGI 版を実行ã™ã‚‹ä»–ã®æ–¹æ³• ã®å†…ã®ä¸€ã¤ã‚’使用ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ ケース 3: doc_root ã¾ãŸã¯ user_dir ã‚’è¨å®šWeb サーãƒãƒ¼ä¸Šã®ãƒ‰ã‚ュメントディレクトリ㫠スクリプトや実行ファイルã®ã‚ˆã†ãªã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªå†…容をèªã¿è¾¼ã‚€ã®ã¯ã€ 往々ã«ã—ã¦å±é™ºãªè¡Œç‚ºã§ã‚ã‚‹ã¨ã¿ãªã•れるã“ã¨ãŒã‚りã¾ã™ã€‚ 何らã‹ã®è¨å®šãƒŸã‚¹ã«ã‚ˆã‚Šã‚¹ã‚¯ãƒªãƒ—トãŒå®Ÿè¡Œã•れãšã€é€šå¸¸ã® HTML ドã‚ュメント ã¨ã—ã¦è¡¨ç¤ºã•れã¦ã—ã¾ã†å ´åˆã«ã¯ã€çŸ¥çš„著作物ã¾ãŸã¯ãƒ‘スワードã®ã‚ˆã†ãª ã‚»ã‚ãƒ¥ãƒªãƒ†ã‚£æƒ…å ±ãŒæ¼æ´©ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ã“ã®ãŸã‚ã€å¤šãã®ã‚·ã‚¹ãƒ†ãƒ 管ç†è€…ã¯ã€ã‚¹ã‚¯ãƒªãƒ—トを PHP CGI を通ã˜ã¦ã®ã¿ アクセスå¯èƒ½ãªä»–ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªæ§‹é€ ã«ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—ã—ãŸã„ã¨æ€ã†ã“㨠ã§ã—ょã†ã€‚ ã“ã®å ´åˆã€å¸¸ã«ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ—リタã«å‡¦ç†ã•れるãŸã‚ã€ä¸Šè¨˜ã®ã‚ˆã†ã«è¡¨ç¤ºã•れるã“㨠ã¯ã‚りã¾ã›ã‚“。 å‰ç¯€ã§è¨˜ã—ãŸã‚ˆã†ãªãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã•れãŸã‚‚ã®ã§ãªã„ã“ã¨ã‚’ 確ã‹ã‚る方法ãŒåˆ©ç”¨å¯èƒ½ã§ãªã„å ´åˆã€ スクリプト用㮠doc_root ã‚’ Web ドã‚ュメント用ルートã¨ã¯åˆ¥ã« セットアップã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ è¨å®šç”¨å‘½ä»¤ doc_root ã«ã‚ˆã‚Š è¨å®šãƒ•ァイル ファイルä¸ã§ PHP スクリプト用ドã‚ュメントルートをè¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã¾ãŸã¯ã€ç’°å¢ƒå¤‰æ•° PHP_DOCUMENT_ROOT ã§ã‚‚è¨å®šã™ã‚‹ ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“れをè¨å®šã—ãŸå ´åˆã€CGI 版㮠PHP ã¯ã€ 常ã«é–‹ãファイルã®åå‰ã‚’ã“ã® doc_root リクエストã®ãƒ‘ã‚¹æƒ…å ±ã‚’ç”¨ã„ã¦ä½œæˆã—〠(以下㮠user_dir を除ãã€)確実㫠ã“ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®å¤–å´ã§ã‚¹ã‚¯ãƒªãƒ—トãŒå®Ÿè¡Œã•れãªã„よã†ã«ã—ã¾ã™ã€‚ ã“ã“ã§åˆ©ç”¨å¯èƒ½ãªåˆ¥ã®ã‚ªãƒ—ションã¯ã€ user_dir ã§ã™ã€‚user_dir ãŒè¨å®šã•れã¦ã„ãªã„å ´åˆã€ é–‹ã‹ã‚Œã‚‹ãƒ•ァイルåを制御ã™ã‚‹ã®ã¯ã€doc_root ã®ã¿ã§ã™ã€‚ http://my.host/~user/doc.php ã®ã‚ˆã†ãª URL ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ›ãƒ¼ãƒ ディレクトリ以下ã®ãƒ•ァイルを開ã‹ãšã€ doc_root 以下㮠~user/doc.php ã¨ã„ã†ãƒ•ァイルを開ãã“ã¨ã«ãªã‚Šã¾ã™ã€‚ (ディレクトリåãŒãƒãƒ«ãƒ€ [~] ã§å§‹ã¾ã£ã¦ã„ã‚‹ ã¨ã„ã†ã“ã¨ã«ãªã‚Šã¾ã™) user_dir ãŒä¾‹ãˆã°ã€public_phpã« è¨å®šã•れã¦ã„ãŸå ´åˆã€ http://my.host/~user/doc.php 㮠よã†ãªãƒªã‚¯ã‚¨ã‚¹ãƒˆã¯ã€ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ user ã®ãƒ›ãƒ¼ãƒ ディレクトリã«ã‚ã‚‹ public_php 以下㮠doc.php ã¨ã„ã†åå‰ã®ãƒ•ァイルをオープンã—ã¾ ã™ã€‚ユーザーã®ãƒ›ãƒ¼ãƒ ディレクトリãŒã€ /home/user ã§ã‚ã‚‹å ´åˆã€ 実行ã•れるファイルã¯ã€ /home/user/public_php/doc.php ã¨ãªã‚Šã¾ã™ã€‚ user_dir ã®å±•é–‹ã¯ã€ doc_root ã®è¨å®šã«ã‚ˆã‚‰ãšè¡Œã‚れã¾ã™ã€‚ ã“ã®ãŸã‚ã€ãƒ‰ã‚ュメントルートãŠã‚ˆã³ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¸ã® アクセスを別々ã«åˆ¶å¾¡ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ケース 4: web ツリーã®å¤–ã« PHP パーサを置ãéžå¸¸ã«å®‰å…¨æ€§ã®é«˜ã„オプションã¨ã—ã¦PHP パーサã®ãƒã‚¤ãƒŠãƒªã‚’ファイル 用 Web ツリーã®å¤–å´ã€ä¾‹ãˆã° /usr/local/binã«ç½®ãã“ã¨ãŒè€ƒãˆã‚‰ã‚Œã¾ã™ã€‚ã“ ã®ã‚ªãƒ—ションã®å”¯ä¸€ã®æ¬ 点ã¯ã€PHP タグを有ã™ã‚‹å…¨ã¦ã®ãƒ•ァイルã®å…ˆé è¡Œã«æ¬¡ã®ã‚ˆã†ãªä¸€è¡Œã‚’åŠ ãˆã‚‹å¿…è¦ãŒã‚ã‚‹ã“ã¨ã§ã™ã€‚ ã¾ãŸã€ãƒ•ァイルを実行å¯èƒ½ã«ã—ã¦ãŠãå¿…è¦ãŒã‚りã¾ã™ã€‚ã“ã®å ´åˆã€å®Ÿè¡Œ 時ã«ã‚·ã‚§ãƒ«ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—機能 #! を使用ã™ã‚‹ Perl ã‚„ sh ã‚„ä»–ã®ã‚¹ã‚¯ãƒªãƒ—ãƒˆè¨€èªžã§æ›¸ã‹ã‚ŒãŸ CGI スクリプトを処ç†ã™ã‚‹ã®ã¨å…¨ ãåŒæ§˜ã«å‡¦ç†ã‚’行ã„ã¾ã™ã€‚ã“ã®è¨å®šã§ PATH_INFO ãŠã‚ˆã³ PATH_TRANSLATED æƒ…å ±ã‚’æ£ã—ã処ç†ã™ã‚‹ãŸã‚ã«ã¯ã€ PHP パーサをè¨å®šã‚ªãƒ—ション --enable-discard-path を付ã‘ã¦ã‚³ãƒ³ãƒ‘イルã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
|