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、對用戶輸入的特殊字符例如.和/以及\進行過濾

 


免責聲明!

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



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