亚洲一区亚洲二区亚洲三区,国产成人高清在线,久久久精品成人免费看,999久久久免费精品国产牛牛,青草视频在线观看完整版,狠狠夜色午夜久久综合热91,日韩精品视频在线免费观看

網(wǎng)站常見漏洞 文件上傳漏洞漏洞預警 -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【www.ishadingyu.com - 電腦資料】

   

    任意文件上傳漏洞

    文件上傳漏洞(File Upload Attack)是由于文件上傳功能實現(xiàn)代碼沒有嚴格限制用戶上傳的文件后綴以及文件類型,導致允許攻擊者向某個可通過 Web 訪問的目錄上傳任意PHP文件,并能夠將這些文件傳遞給 PHP 解釋器,就可以在遠程服務器上執(zhí)行任意PHP腳本,

網(wǎng)站常見漏洞 文件上傳漏洞漏洞預警

    一套web應用程序,一般都會提供文件上傳的功能,方便來訪者上傳一些文件。

    下面是一個簡單的文件上傳表單

   

   

   

   

   

    php的配置文件php.ini,其中選項upload_max_filesize指定允許上傳的文件大小,默認是2M

    $_FILES數(shù)組變量

    PHP使用變量$_FILES來上傳文件,$_FILES是一個數(shù)組。

    如果上傳test.txt,那么$_FILES數(shù)組的內(nèi)容為:

    $FILES

    Array

    {

    [file] => Array

    {

    [name] => test.txt                            //文件名稱

    [type] => text/plain                          //MIME類型

    [tmp_name] => /tmp/php5D.tmp                   //臨時文件

    [error] => 0                                //錯誤信息

    [size] => 536                               //文件大小,單位字節(jié)

    }

    }

    如果上傳文件按鈕的name屬性值為file

   

    那么使用$_FILES['file']['name']來獲得客戶端上傳文件名稱,不包含路徑。使用$_FILES['file']['tmp_name']來獲得服務端保存上傳文件的臨時文件路徑

    存放上傳文件的文件夾

    PHP不會直接將上傳文件放到網(wǎng)站根目錄中,而是保存為一個臨時文件,名稱就是$_FILES['file']['tmp_name']的值,開發(fā)者必須把這個臨時文件復制到存放的網(wǎng)站文件夾中。

    $_FILES['file']['tmp_name']的值是由PHP設置的,與文件原始名稱不一樣,開發(fā)者必須使用$_FILES['file']['name']來取得上傳文件的原始名稱。

    上傳文件時的錯誤信息 $_FILES['file']['error']變量用來保存上傳文件時的錯誤信息,它的值如下:

   

    文件上傳漏洞

    如果提供給網(wǎng)站訪問者上傳圖片的功能,那必須小心訪問者上傳的實際可能不是圖片,而是可以指定的PHP程序。如果存放圖片的目錄是一個開放的文件夾,則入侵者就可以遠程執(zhí)行上傳的PHP文件來進行攻擊。

    下面是一個簡單的文件上傳例子:

   

    // 設置上傳文件的目錄

    $uploaddir = "D:/www/images/";

    // 檢查file是否存在

    if (isset($_FILES['file1']))

    {

    // 要放在網(wǎng)站目錄中的完整路徑,包含文件名

    $uploadfile = $uploaddir . $_FILES['file1']['name'];

    // 將服務器存放的路徑,移動到真實文件名 move_uploaded_file($_FILES['file1']['tmp_name'], $uploadfile);

    }

    ?>

    ……

   

   

   

   

   

    這個例子沒有檢驗文件后綴,可以上傳任意文件,很明顯的上傳漏洞,

電腦資料

網(wǎng)站常見漏洞 文件上傳漏洞漏洞預警》(http://www.ishadingyu.com)。

    利用此漏洞 克制自由上床任意的木馬文件而導致網(wǎng)站失陷。

    漏洞防護措施

    解決上面所述問題的一種方法是通過檢查上傳文件的類型來限制用戶的文件上傳,如以下代碼所示。

   

    if(isset($_POST["form"]))

    {

    if($_FILES['upfile']['type'] == 'image/pjpeg')  //檢查文件類型是否為JPEG

    {

    $uploadfile = "upfiles/".$_FILES['upfile']['name'];

    //上傳后文件所在的文件名和路徑

    move_uploaded_file($_FILES['upfile']['tmp_name'], $uploadfile);

    //上傳文件

    print_r($_FILES);

    die();

    }

    else

    {

    die("上傳文件的格式不正確!");

    }

    }

    ?>

    上面的代碼要求用戶上傳的文件必須是JPEG類型的圖片文件,徹底地避免了終端用戶通過上傳PHP腳本危害服務器的行為。

    文件上傳路徑變量過濾不嚴

    在許多論壇的用戶發(fā)帖頁面中存在這樣的上傳Form,如圖7-27所示,其網(wǎng)頁編程代碼為:

    “

   

   

   

    ”

    在其中“filepath”是文件上傳路徑,由于網(wǎng)頁編寫者未對該變量進行任何過濾,因此用戶可以任意修改該變量值。在網(wǎng)頁編程語言中有一個特殊的截止符"\0",該符號的作用是通知網(wǎng)頁服務器中止后面的數(shù)據(jù)接收。利用該截止符可們可以重新構造filepath,例如正常的上傳路徑是:

    “http://www.***.com/bbs/uploadface/200409240824.jpg”,

    但是當我們使用“\0”構造filepath為

    “http://www.***.com/newmm.asp\0/200409240824.jpg ”

    這樣當服務器接收filepath數(shù)據(jù)時,檢測到newmm.asp后面的\0后理解為filepath的數(shù)據(jù)就止結束了,這樣我們上傳的文件就被保存成了:“http://www.***.com/newmm.asp”。

    利用這個上傳漏洞就可以任意上傳如.ASP的網(wǎng)頁木馬,然后連接上傳的網(wǎng)頁即可控制該網(wǎng)站系統(tǒng)。

    提示:可能有讀者會想,如果網(wǎng)頁服務器在檢測驗證上傳文件的格式時,碰到“/0”就截止,那么不就出現(xiàn)文件上傳類型不符的錯誤了嗎?其實在檢測驗證上傳文件的格式時,系統(tǒng)是從filepath的右邊向左邊讀取數(shù)據(jù)的,因此它首先檢測到的是“.jpg”,當然就不會報錯了。

    最安全的防范辦法就是刪除上傳頁面

    ​

最新文章