Web應用安全之文件上傳漏洞詳解


  什么是文件上傳漏洞

  文件上傳漏洞是在用戶上傳了一個可執行的腳本文件,本通過此腳本文件獲得了執行服務器端命令的功能,這種攻擊方式是最為直接,最為有效的,有時候,幾乎沒有什么門檻,也就是任何人都可以進行這樣的攻擊。文件上傳為什么會是漏洞呢?文件上傳本身是沒有問題的,問題是文件上傳后看服務器怎么來處理,怎么來解析這個文件。如果說服務器處理的模式不夠安全,那么就會導致嚴重的后果,也就是上傳了惡意的可執行文件以后,服務器端對此文件進行執行。

  文件上傳后導致的安全問題

  上傳的文件是web腳本語言,服務器的web容器解釋並執行了文件上傳的web腳本,導致了代碼的執行。另外,上傳文件是flash的策略文件,黑客可以通過控制flash在該域下的行為,來進行其他攻擊。上傳文件是病毒,木馬文件,那攻擊者可以誘使文件中其他的人員下載執行。文件上傳也有可能是釣魚圖片,或者包含了腳本文件的圖片,在某些版本的瀏覽器中,這些腳本文件會被執行,可以用來做釣魚攻擊。除此以外,還有一些不常見的利用方法,比如將一個文件作為一個入口,溢出服務器的后台處理程序,如圖片解析模塊,或者上傳一個合法的文件,其內容包含了php的代碼,再通過文件包含,來執行這個腳本。

  完成攻擊的條件

  在大多數情況下,文件上傳漏洞一般是指上傳web腳本能夠被服務器解析的問題,也就是通常說的web shell的問題,要完成這個攻擊,需要滿足以下幾個條件:

  首先上傳的文件能夠被web容器解釋執行,所以文件上傳后的目錄要是web容器所覆蓋的路徑。其次,web服務器能夠訪問這個文件,如果文件上傳了,但用戶無法通過web訪問,那攻擊者即使上傳了這個文件也是訪問不到這個文件的,這樣的話,上傳也就不能被利用。最后用戶上傳的文件被安全監測格式化,圖片壓縮等改變了內容,就有可能導致這個文件解析失敗。

  文件上傳的場景

  對網站熟悉的人都了解,比如我們要發布一個內容,而且是圖文信息,那我可能會上傳一些圖片、附件。

  如何利用上傳

  同樣dvwa的環境

  先構造一個文件 保存為腳本文件1.php輸入內容如下:

  <?php

  phpinfo();

  ?>

  先使用低安全級別,也就是沒有防御看如何上傳

  Upload后可以看到1.php被成功上傳,訪問上傳的目錄位置

  可以看到上傳的腳本被執行,沒有對文件后綴名做任何判斷就直接接收了此文件,並且執行。

  如果說上傳的腳本是一個web shell后門,那我們就可以直接獲取到服務器的控制權限,

  低安全級別的實現,獲取到文件以后,直接將這個文件移動到目錄下,沒有做任何判斷。

  中安全級別,這里做了一個簡單的判斷,只允許文件類型為jpeg上傳,這樣的過濾或處理雖然能達到一定的效果,比如,剛才的腳本就不能被上傳。

  再次上傳1.php,我們可以看到沒有反饋,文件上傳失敗。實際上這種防御方式是非常容易被繞過的,我么可以利用之前介紹的工具burpsuite,這個工具是一個代理抓包的工具,也就是我可以設置瀏覽器代理。瀏覽器在訪問的時候,所有的數據請求都會通過這個工具,這個工具通過截斷處理后再提交給web服務器,進而做出相應,這個時候,如果我在上傳的時候還是1.php,但實際上,會先通過這個工具抓包截斷,把我的文件頭信息改成圖片頭信息,再進行提交。這個時候,我們就可以很輕易的繞過這個防御機制,進而達到上傳的效果

 

 

文章來源:麥子學院

原文鏈接:http://www.maiziedu.com/wiki/websafety/fileupload/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM