1. 程式人生 > 資訊 >英特爾投資神州半導體,後者經營範圍含醫療器械生產

英特爾投資神州半導體,後者經營範圍含醫療器械生產

任意檔案上傳漏洞

先來幾個一句話木馬看看

<%execute(request("value"))%>   #asp木馬
<?php eval($_POST["value"]);?>  #php木馬
<%@ Page Language="Jscript"%> <%eval(Request.Item["value"])%>  #aspx木馬

漏洞原理

  web應用程式沒有對可上傳的檔案型別,檔案內容等作嚴格過濾,或者web伺服器的解析漏洞沒有及時修復,導致攻擊者可上傳惡意的指令碼檔案,獲得執行服務端命令的能力。

檢測機制

  客戶端js驗證:這種不可靠,可以用來提示使用者可上傳的檔案型別,攻擊者可以直接通過抓包工具進行繞過。

  MIME型別檢測:通過檢測MIME型別,判斷使用者上傳的檔案是否合法,但是攻擊者可以抓包修改Content-Type:欄位來繞過。

  檔案字尾檢測:檢測檔案的字尾名,如果不是合法的字尾,禁止上傳,最好用白名單進行過濾可上傳的檔案字尾。如果是黑名單檢測,就有很多繞過方式:00截斷;大小寫繞過 ;雙寫繞過,如果後端驗證時,直接將檢測到的不合法字尾去掉,我們就可以雙寫來繞過;.htaccess檔案上傳,首先上傳一個.htaccess檔案,讓伺服器可以解析我們上傳的指定檔名,之後將我們的木馬檔名設定為.htaccess中指定的檔名,上傳以後,就可以在服務端執行。

  檔案內容檢測:服務端檢測檔案的內容,通常會檢查檔案頭,可以構造圖片碼繞過。

繞過方式

黑名單繞過

  1. 00截斷:

  抓包我們上傳的檔案,將請求包中的檔名修改為test.php%00.jpg,在許多語言的函式中,字串處理函式中會將0x00識別為終止符,會將00後的.jpg去掉,導致攻擊者上傳成功木馬檔案。

  如果檔名是get方式傳輸的,直接在檔名中加%00,如果是post方式提交資料的,需要在16進制中加00 ,因為post中直接加%00不會被自動url解碼。

  2. 黑名單過濾不全:

  上傳.php3、.php5、index.html、等檔案,這種情況發生在,如果黑名單對可執行的檔案過濾不全的情況下,可以上傳。

  3. 特殊檔名繞過:

  在檔案的字尾名後加點或者空格,Windows系統會自動將最後面的點或者空格去掉,導致上傳成功,但是Linux系統這種方法不行。

  4. 大小寫、雙寫繞過:

  5. .htaccess檔案攻擊:

  只在apache服務中,存在該檔案。這種方法可以繞過白名單檢測。

<FilesMatch "aa">
SetHandler application/x-httpd-php
</FilesMatch>

  我們首先上傳一個.htaccess檔案,檔案中指定任意的檔名當做程式碼檔案來解析,之後上傳指定檔名的檔案,就可以執行檔案中的程式碼。

  

MIME型別檢測繞過

  通過指定MIME型別,讓瀏覽器遇到該副檔名的檔案時,知道使用指定的應用程式來開啟該檔案。

如果上傳時提示檔案型別不正確,我們可以抓包修改Content-Type欄位值,修改為對應的值,就可以上傳木馬檔案。

伺服器解析漏洞

  1. Apache解析漏洞:apache 2.0-2.2版本可能存在該漏洞。

  Apache解析檔案的順序是從右往左進行的,如果後面不存在能夠解析的字尾,預設會向前解析,直至遇到能夠解析的字尾。

檔名設定為 test.php.abo.ddd.eee,當我們成功上傳這個檔案後,訪問它,伺服器就會把它當做php檔案來執行。

  只有php5.3以下和apache聯動才會有module模式,會出現這種漏洞   ​1)如果在Apache的conf裡有這樣一行配置AddHandler php5-script.php,這時只要檔名裡包含.php,即使檔名是test2.php.jpg也會以PHP來執行。   2)如果在Apache的conf裡有這樣一行配置AddType application/x-httpd-php.jpg,即使副檔名是jpg,一樣能以PHP方式執行。

  2.IIS 6.0解析漏洞

  (1). 目錄解析:

  建立一個.asp的資料夾,IIS 5.x-6.x版本的伺服器,會將該資料夾下的所有檔案(不管檔案字尾是什麼)都會當做asp檔案來解析。   (2). 檔案解析:   伺服器預設不解析分號;後面的內容,我們將需要上傳的木馬檔名修改為 test.asp;.jpg ,上傳以後,就會儲存為test.asp檔案,從而進行解析,拿到webshell 。   (3). IIS 6.0 預設的可執行檔案字尾除了 .asp ,還有 .asa .cer .cdx

  3. nginx解析漏洞

  當url中有不存在的檔案時,php預設向前解析,並且是以不存在的檔案字尾去解析前一個檔案的。

  我們訪問www.213.com/test.jpg/1.php ,當不存在1.php時,會向前解析,解析test.php。

檔案內容檢測繞過

  把程式碼檔案和圖片合成二進位制檔案,儲存為新的圖片,但是上傳時,還要上傳為.php的字尾,才能夠被解析。

  Windows系統中,開啟cmd命令框,輸入:

copy /b 1.png+test.php = 2.png  

防禦方法