1. 程式人生 > 其它 >WEB安全第二篇--用檔案搞定伺服器:任意檔案上傳、檔案包含與任意目錄檔案遍歷

WEB安全第二篇--用檔案搞定伺服器:任意檔案上傳、檔案包含與任意目錄檔案遍歷

最近做專心web安全有一段時間了,但是目測後面的活會有些複雜,涉及到更多的中介軟體、底層安全、漏洞研究與安全建設等越來越複雜的東東,所以在這裡想寫一個系列關於web安全基礎以及一些討巧的payload技巧以便於備忘。不是大神、部落格內容非常基礎,如果真的有人看而且是大牛們,請不要噴我,歡迎指正我的錯誤(水平有限)。

一、檔案上傳:

1、這本身是一個功能,但是如果沒做好,就成為一個大漏洞。本質:

  對上傳檔案沒有進行型別檢查,沒有做進一步處理,上傳檔案儲存路徑洩露,且可訪問可執行。

2、檔案payload部分:

  檔案:

  (1)一句話小馬

  (2)大馬

  (3)其他配置檔案.htaccess / crossdomain.xml等

3、上傳檔案的方式:

  (1)直接上傳

  (2)繞過前端副檔名限制上傳(firebug)

  (3)繞過後端副檔名限制上傳:

    #Apache的:1.php.rax.rax.rax。

    #lighttpd的:xx.jpg/xx.php。

    #IIS的:1.asp;abc.jpg,1.jpg%00.asp。

    #Nginx:1.jpg 訪問的時候http://localhost/1.jpg/x.php 當版本低時,存在xx.jpg%00.php解析漏洞。

    #低版本IIS 會將/asp/目錄下的所有檔案都按照asp解析,或者webdav目錄下上傳.txt move 成.asp#

    其他手段:

       #截斷 1.php%00.jpg。

       #轉換大小寫:1.PHP。

       #修改檔案型別對抗檢查content-type。

       #終極大招:使用copy a.gif /b + b.php /a c.php 構造包含惡意程式碼的正常型別檔案。

4、防禦:

  (1)接受檔案使用臨時路徑,然後轉存、檔名更換為隨機字串。

  (2)不洩露檔案最終儲存目錄。

  (3)使用沒有解析漏洞的高版本伺服器。

  (4)嚴格限制上傳副檔名--白名單機制。

  (5)做檔案型別mime-type檢查,對影象檔案做二次渲染。

二、檔案包含:

1、本質:

  當上傳的檔案不能直接被執行時,可以藉助檔案包含來搞定。什麼是檔案包含,其實就是程式設計中的檔案或者包引入

2、分類:

  (1)本地檔案包含

  (2)遠端檔案包含

3、PHP檔案包含:

 1 //All of these function:
 2 /*
 3     include()
 4     include_once()
 5     require()
 6     require_once()
 7 */
 8 <?php
 9     include($_GET["file"]);
10 ?>
11 //http://localhost/include.php?file=phpinfo.php
12 /*
13 Remote -> allow_url_include = 1 & allow_url_fopen = 1
14 //http://localhost/include.php?file=//http://localhost/phpphpinfo.php
15 */
16 //pgpinfo.txt:
17 <?php
18  phpinfo(); 
19 ?>

4、JSP檔案包含

1 //分為靜態和動態:
2 //靜態
3 <%@include file="page.txt"%>
4 //動態:
5 <%String pages = request.getParameter("file") %>
6 <jsp:include page="<%=pages>"></jsp:include>
7 //http://localhost/include.jsp?file=xxx.jsp

5、檔案包含的利用:

  (1)讀取敏感資訊:

    #/etc/passwd

    #/etc/shadow

    #my.cnf\php.ini\httpd.conf\access_log等等

  (2)遠端包含shell小馬(一句話)。

  (3)配合訪問上傳的檔案。

  (4)使用封裝協議,也就是說file引數後面可以是各種協議偽協議表示的檔案。

  (5)繞過waf和防火牆。

6、防禦:

  (1)包含檔案白名單。

  (2)使用者輸入過濾掉. / \ 和偽協議關鍵詞。

  (3)包含的檔案不允許外部可控。

三、任意目錄檔案遍歷:

1、原因:

  web伺服器配置不當,導致可以訪問到web根目錄(www目錄)以外的檔案,應該是絕對禁止的。且web程式設計沒有對訪問的目錄做檢查和限制。

2、比較容易發生的位置:

  (1)下載類

  (2)圖片等檔案顯示類

3、檢測:

  (1)file = /etc/passwd 或者 C:/Users/

  (2)file = ../../../../../../../../../../../../etc/passwd

  (3)http://www.test.com/index/index.php/../../../../../../../../../etc/passwd

4、防禦:

  1、配置不能訪問WEB根目錄之外的專案。

  2、對可以訪問的檔案放在一個資原始檔夾下。

  3、對使用者輸入的特殊字元例如.和/以及\進行過濾

博主簡介:博主國內安全行業目前最強大的網路安全公司做技術研究員,常年做技術工作。 獲得過以下全國競賽大獎: 《中國電子作品大賽一等獎》 《雲端計算技術大賽一等獎》 《AIIA人工智慧大賽優勝獎》《網路安全知識競賽一等獎》 《高新技術個人突出貢獻獎》,並參與《虛擬化技術-**保密**》一書編寫,現已出版。還擁有多項專利,多項軟體著作權! 且學習狀態上進,立志做技術牛逼的人。座右銘:在路上,永遠年輕,永遠熱淚盈眶。可郵件聯絡博主共同進步,個人郵箱:[email protected]