Web安全-文件上傳漏洞(一)

編程語言 ASP 網絡安全 信息安全 棗樹荒 2017-06-05
  • 一、解析漏洞

  • 二、繞過上傳漏洞

  • 三、客戶端檢測

  • 四、服務端檢測

  • 五、文本編輯器上傳漏洞

  • 六、上傳漏洞的防禦

一、解析漏洞

先介紹一下文件上傳漏洞。很多網站例如上傳頭像圖片功能,個人網發佈壓縮文件功能,招聘網上傳簡歷功能,如果沒有對上傳的文件進行格式驗證,則就造成了文件上傳漏洞,危害性會比sql注入更大,一般是直接上傳木馬或者後門,拿下webshell。

解析漏洞指的是常用的中間件,例如IIS,Nginx,Apache,Tomcat等。這些中間件加固之前都發過文章,推薦大家可以回頭看看。

1,IIS的解析漏洞

IIS6.0解析文件時有兩個解析漏洞

第一當文件夾是以*.asa或者*.asp這種格式命名時,則目錄的任意文件都會被IIS當作asp文件執行。比如,我建了一個test.asp的文件夾,裡面有一個test.txt的文件,就拿<%=NOW()%>當內容來說,就被執行了,如下圖:

Web安全-文件上傳漏洞(一)

第二個是當文件為*.asp;1.jpg時,IIS6.0一樣會以asp來執行,例如新建文件test.asp;1.jpg,內容還是用<%=NOW()%>來測試,結果如下:

Web安全-文件上傳漏洞(一)

其實微軟並不認為這個屬於漏洞,所以一直沒有出補丁。至今仍然存在,導致很多網站死在了IIS6.0上。

IIS有一個經典漏洞,叫WebDav。它是HTTP1.1協議的擴展,在GET,POST,HEAD等標準方法外添加了一些新方法,使HTTP協議更強大。例如PUT,Move,Copy,Delete等。很明顯,PUT會向服務器上傳文件,Move或Copy可以改名,Delete能進行刪除。

首先可以通過OPTIONS來探測服務器所支持的HTTP方法:例如:

Web安全-文件上傳漏洞(一)

可以通過很多種方法去模擬OPTIONS請求,查看返回的allow或者public項。我找了半天,沒找到有開啟webdav的網站,所以接下來的例子只能說說方法了。

當網站如果開啟了WebDav時,就會允許PUT方法,這時候可以模擬PUT請求去寫入文件,內容如下:

Web安全-文件上傳漏洞(一)

接下來就可以通過模擬Copy或者Move方法來修改文件名,很容易就獲取到了webshell,對於webdav還是很經典了,所以介紹了下。針對webdav的話,可以用IIS Write。

2,Apache解析漏洞

apache1.x和apache2.x中是存在解析漏洞的,先來看一個例子:

文件:test.php.aaa 內容:<? phpinfo(); ?>

Web安全-文件上傳漏洞(一)

正常情況下,當訪問識別不了的後綴時,應該提示無法識別的。但test.php.aaa卻被當作php執行了。apache執行文件有一個原則,當碰到不認識的擴展名時會從後往前解析,直到碰到認識的,如果都不認識,則暴露其源碼。

apache認識哪些擴展名,可以通過查看apache的安裝目錄下conf/mime.types文件查看。

很多開發人員在判斷上傳文件時,會判斷後綴是否是php,asp,aspx,asa,cer,aspx等腳本擴展名,如果是就不允許上傳。這時候攻擊者就可以利用1.php.aaa來上傳再配合解析漏洞獲取webshell。

3,PHP CGI解析漏洞

例如訪問一個xxx.com/1.jpg/aaa.php這個地址,當aaa.php文件不存在時,1.jpg就會被當作php來執行。和apache的解析漏洞很像。因為比較容易出現在nginx和php的組合裡,所以一般也認為是nginx的解析漏洞。

主要為php的配置文件中,cgi.fi:x_phpinfo選項。php有些版本是默認開啟這項的。攻擊者常用此和解析漏洞配合,來拿webshell。

ok,後續內容會繼續補充的。

-----------------------------------------------------------------------------------------------------------------------------

tips:棗樹荒頭條號不定期分享關於網站滲透,信息安全,網絡安全,網絡運維等方面的知識。喜歡的請點一波關注。

相關推薦

推薦中...