實戰篇——檔案包含漏洞(1)
本地檔案包含
本地檔案包含一般需要依賴檔案上傳漏洞。如果檔案上傳漏洞限制上傳檔案的字尾必須為.jpg,那麼配合本地檔案包含,就可以透過上傳圖片木馬獲得伺服器許可權。
上傳圖片木馬:
利用本地檔案包含,成功連線一句話木馬:
可見本地檔案包含最大的缺陷在於需要依賴檔案上傳漏洞,下面著重介紹不依賴檔案上傳漏洞獲得伺服器許可權的方法。
遠端檔案包含
遠端檔案包含就是利用http://偽協議包含第三方伺服器上的檔案。如果第三方伺服器可控,那麼就可以利用第三方伺服器上的一句話木馬獲得目標伺服器的許可權。遠端檔案包含的前提條件是在php.ini配置檔案中allow_url_fopen和allow_url_include必須同時開啟。
需要注意的是,利用遠端檔案包含包含的檔案字尾不能是.php,否則將因先解析後包含而無法連線一句話木馬:
解決辦法就是將字尾改為任意非.php的字尾,這樣就可以先包含後解析:
data://偽協議
data://偽協議檔案包含的前提條件是在php.ini配置檔案中allow_url_fopen和allow_url_include必須同時開啟。
首先準備一句話載體:
然後對一句話載體進行base64編碼,並對末尾的+進行url編碼:
執行,即可連線一句話木馬:
php://input偽協議
data://偽協議檔案包含的前提條件是在php.ini配置檔案中allow_url_include必須開啟。
抓包,新增一句話載體,傳送:
成功連線一句話木馬:
日誌投毒:
日誌投毒就是將一句話木馬植入錯誤日誌中,透過包含錯誤日誌獲得伺服器許可權。由於日誌投毒本質上是本地檔案包含,因此對php.ini中的allow_url_fopen和allow_url_include兩項配置沒有任何要求。
日誌投毒的前提是需要知道錯誤日誌的路徑,如果存在phpinfo洩露,可以透過apache2handler中的Server Root得到apache的安裝路徑,進而得到錯誤日誌的路徑。
錯誤日誌的路徑為C:/phpStudy/PHPTutorial/Apache/logs/error.log。
將一句話木馬嵌入路徑:
抓包:
可見URL已被自動URL編碼,必須將其還原,否則將無法連線一句話木馬。
將一句話木馬還原併傳送:
成功連線一句話木馬:
.html繞過
透過拼接.html包含檔案是一種常見的做法:
此時將無法直接連線一句話木馬:
第一種繞過方法是00截斷(適用於所有檔案包含方式):
第二種方法是透過新增大量的'.'或' '實現路徑截斷(只適用於本地檔案包含和日誌投毒):