DVWA靶场实战(四)——File Inclusion
DVWA靶场实战(四)
四、File Inclusion:
1.漏洞原理:
随着网站的业务的需求,程序开发人员一般希望代码更加灵活,所以将被包含的文件设置为变量,用来进行动态调用,但是正是这种灵活性通过动态变量的方式引入需要包含的文件时,用户对这个变量可控而且服务端又没有做合理的校检或者校检被绕过就造成了文件包含漏洞。
2. 常见函数:
(1) include()当前使用该函数包含文件时,只有代码执行到include()将文件包含起来,发生错误时给出一个警告,然后将继续执行语句。
(2) include_once()功能和include()相同,区别当重复调用一个文件时,程序只调用一次。
(3) require()执行如果发生错误,函数会发出错误信息,并终止脚本运行。
(4) require_once和require()相同区别在于当重复调用一个文件时,程序只调用一次。
(5) nighcight_file(),show_source()函数对文件进行语法高亮显示,通常可以看见源代码。
(6) readfile(),file_get_contents()函数读取一个文件,并写入缓冲。
(7) fopen(),打开一个文件或url
注:几乎所有的脚本语言中都提供文件包含的功能,但是文件包含漏洞在PHP中居多,而在jsp/ASP/ASP.NETC程序中非常少,甚至没有文件包含漏洞的存在。
3. 漏洞分类:
(1)本地文件包含漏洞:
当被包含的文件就在服务器本地时,就形成了本地文件包含漏洞。一般会有以下的代码环境:
<?php
$file=$_GET[“file”];
Include($flir);
?>
(2)远程文件包含漏洞:
本地文件包含和远程文件包含造成漏洞的原因是一样的,当php.ini中的配置选项allow_url_fope和alliw_url_include为ON的话,则包含的文件可以是第三方服务器中的文件,就形成了远程文件包含漏洞。
4. 防御手段:
(1)文件名验证防护:包含文件验证是指对可保护文件名设置黑名单或白名单、文件后缀名固定等。如果需要使用文件包含,则通过使用白名单的方法对要包含的文件进行限制,这样可以做到既使用了文件包含,又可以防止问价包含漏洞。
(2)文件名验证绕过防护:这种防护手段主要有两种方式,第一种方式就是在文件后缀名处下手,另一个方式是通过目录长度限制来截断。严格限制包含中的参数,取消那些不可控的参数。
(3)中间件安全配置防护:合理地配置中间件的安全选项也会有良好的防护效果,这主要是通过调整中间件及PHP的安全配置,使得用户在调整文件时进行基本的过滤及限制。
(4)禁用相应函数防护:如果不需要文件包含,则关闭相应的文件包含的函数,这防止远程文件包含,这是最安全的办法。
(5)关闭威胁配置防护:可以将PHP中的一些危险配置直接关闭,由于远程文件的不可信任性及不确定性,在开发中直接禁用远程文件文件包含选项。
5. 漏洞危害:
(1)web服务器的文件被外界浏览导致信息泄露。
(2)脚本被任意执行,典型影响如下:
① 篡改网站;
② 执行非法操作;
③ 攻击其他网站;
6. 注意事项:
在攻击靶场过程中可能会遇到File Inclusion这样的报错。“The PHP function allow_url_include is not enabled.”

遇到以上情况,我们找到我们安装phpstudy_pro目录的“Extensions”文件夹,找到“php”文件夹,然后找到名称为“php.ini”的文件,找到“allow_url_include=Off”选项,然后将其改为“allow_url_include=On”保存,然后重新启动小皮面板就ok了。



7. 实战:
(1) Low
代码分析:

  这里我们可以看出该文件没有进行任何的过滤,这导致我们可以包含任何的文件。当上传问及那不存在时,可以看到,发生了报错,并且把网站的路径都给暴露出来了。所以第一行的意思就是,找不到我们指定名称文件,所以WARNING。而第二行的警告是因为前面没有找到指定文件,所以包含的时候就出警告了。但同时暴露了服务器文件的绝对路径“D:\phpstudy_pro\WWW\DVWA\vulnerabilities\fi\index.php” 
所以我们就可以开始构造url,此时我们产生本地包含使用“192.168.1.22:81/dvwa/vulnerabilities/fi/?page=../../phpinfo.php”就可以访问phpinfo.php界面。也可以尝试本地包含百度,可以发现也是成功的。

(2)Medium:
代码分析:

这里“$file=str_replace(array(“http://”,”https://”),””,$file);”的意思就是将“http://”、“https://”、“../”、“..\”全部替换为了空(就是删了),所以这里我们采用双写过滤的方式绕过。
我们这里采用“....//....//phpinfo.php”的payload进行攻击,在替换后就相当于“../../phpinfo.php”说明此方法可行,所以如果我们要利用文件包含漏洞访问“hhtp://www.baidu.com”就只用写为“hthttp://tp://www.baidu.com”就可以绕过。

(3)High:
代码分析:

这里我们看出来他使用了fnmatch函数,该函数的功能是指定的模式来匹配文件名或字符串。
我们可以看见这里运用了fnmatch函数检查page参数,要求参数开头必须是file,服务器才回去包含相应文件。所以这里只能用伪协议包含,伪协议也就是“file://”来访问本地文件系统,关于“伪协议包含”补充以下:
| 
 伪协议  | 
 作用  | 
| 
 file://  | 
 访问本地文件系统  | 
| 
 http://  | 
 访问HTTP网址  | 
| 
 https://  | 
 访问HTTPS网址  | 
| 
 ftp://  | 
 访问FTP URL  | 
| 
 php://  | 
 访问输入输出流  | 
| 
 zlib://  | 
 压缩流  | 
| 
 data://  | 
 数据  | 
| 
 ssh2://  | 
 security shell2  | 
| 
 expect://  | 
 处理交互式的流  | 
| 
 glob://  | 
 查找匹配的文件路径  | 
注:伪协议后文件必须是绝对路径。
了解完这些后我们开始进行攻击,这里我们将url进行构造选择将之前在low中我们获取的绝对路径加上“file:///”变成“file:///[绝对路径]”的格式,“http://192.168.1.22:81/dvwa/vulnerabilities/fi/?page=file:///D:\phpstudy_pro\WWW\DVWA\phpinfo.php”然后构造以上payload进行攻击,得到phpinfo。

(4)Impossible:
代码分析:

这里使用白名单进行保护,所以已经没有了文件包含漏洞。
DVWA靶场实战(四)——File Inclusion的更多相关文章
- DVWA靶场实战(五)——File Upload
		
DVWA靶场实战(五) 五.File Upload: 1.漏洞原理: File Upload中文名叫做文件上传,文件上传漏洞是指用户上传了一个可执行脚本文件(php.jsp.xml.cer等文件),而 ...
 - DVWA靶场实战(三)——CSRF
		
DVWA靶场实战(三) 三.CSRF: 1.漏洞原理: CSRF(Cross-site request forgery),中文名叫做"跨站请求伪造",也被称作"one c ...
 - DVWA靶场实战(六)——Insecure CAPTCHA
		
DVWA靶场实战(六) 六.Insecure CAPTCHA: 1.漏洞原理: Insecure CAPTCHA(不安全的验证码),CAPTCHA全程为Completely Automated Pub ...
 - DVWA靶场实战(七)——SQL Injection
		
DVWA靶场实战(七) 七.SQL Injection: 1.漏洞原理: SQL Inject中文叫做SQL注入,是发生在web端的安全漏洞,主要是实现非法操作,例如欺骗服务器执行非法查询,他的危害在 ...
 - DVWA靶场实战(二)——Command Injection
		
DVWA靶场实战(二) 二.Command Injection: 1.漏洞介绍: Command Injection,中文叫做命令注入,是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令 ...
 - DVWA靶场实战(一)——Brute Force
		
DVWA靶场实战(一) 一.Brute Force: 1.漏洞原理: Brute Force是暴力破解的意思,大致原理就是利用穷举法,穷举出所有可能的密码. 2.攻击方法: Burpsuite中的In ...
 - DVWA靶场实战(九)——Weak Session IDS
		
DVWA靶场实战(九) 九.Weak Session IDS: 1.漏洞原理: Weak Session IDS也叫做弱会话,当用户登录后,在服务器就会创造一个会话(session),叫做会话控制,接 ...
 - DVWA靶场实战(十)——XSS(DOM)
		
DVWA靶场实战(十) 五.XSS(DOM): 1.漏洞原理: XSS全称为Cross Site Scripting,由于和层叠样式表(Cascading Style Sheets,CSS)重名,所以 ...
 - DVWA靶场实战(十一)——XSS(Reflected)
		
DVWA靶场实战(十一) 十一.XSS(Reflected): 1.漏洞原理: XSS被称为跨站脚本攻击(Cross Site Script),而Reflected被称作反射型XSS.不同于DOM和S ...
 
随机推荐
- python实现多接口翻译软件
			
本实验用pyqt5做了一个小软件,里面使用了市面上主流的6种翻译软件接口:谷歌.百度.有道.金山词霸.腾讯.必应,界面如图所示: 以下是程序代码: import time,sys,os,hashlib ...
 - .net core 配置跨域
			
使用场景: 由于浏览器的同源策略,即浏览器的安全功能,同源策略会阻止一个域的js脚本和另一个域的内容进行交互. 会出现以下报错: 怎样属于非同源呢? 协议.域名.端口号只要有一个不相同就是属于非同源 ...
 - 通过tkinter列出全部字体名称
			
通过tkinter列出windows系统全部字体名称 通过 tkinter.font 的 families() 函数实现 import tkinter import tkinter.font # 把p ...
 - Docker中数据卷(Volume)的使用
			
数据卷有两种形式,一种是容器中的某个目录,它可以被别的容器引用,只要有一个容器引用了这个数据卷,数据就不会被删除:另一种数据卷是将容器中的数据卷和宿主机的目录进行挂载. 数据卷可以在多个容器之间共享, ...
 - mysql 子查询  联结 组合查询
			
子查询 SELECT cust_id FROM orders WHERE order_num IN (SELECT order_num FROM orderitems WHERE prod_id='T ...
 - 【题解】CF1715A Crossmarket
			
题面传送门 解决思路 首先,我们让 Megan 先走,因为他可以留下传送门.可以得知,不管怎么走,他到达终点所耗费的能量一定是 \(n+m-2\) . 然后,Stanley 走时就可以利用传送门.考虑 ...
 - 深入理解Golang 闭包,直通面试
			
大家好 今天为大家讲解的面试专题是: 闭包. 定义 闭包在计算机科学中的定义是:在函数内部引用了函数内部变量的函数. 看完定义后,我陷入了沉思...确实,如果之前没有接触过闭包或者对闭包不理解的话,这 ...
 - JavaScript代码是怎么在浏览器里面运行起来的?
			
JavaScript代码是怎么在浏览器里面运行的?下面简单探索一下 浏览器内核 浏览器内核(Rendering Engine),常见的叫法如:排版引擎.解释引擎.渲染引擎,现在流行称为浏览器内核. 浏 ...
 - 【OpenStack云平台】网络控制节点 HA 集群配置
			
个人名片: 因为云计算成为了监控工程师 个人博客:念舒_C.ying CSDN主页️:念舒_C.ying 网络控制节点运行在管理网络和数据网络中,如果虚拟机实例要连接到互联网,网络控制节点也需要具备 ...
 - webrtc编译,不使用内置boringssl,使用openssl的
			
前言 在项目开发过程中,会遇到使用https.TLS.DTLS等场景,这些第三方库一般会使用openssl作为加密套件.例如,qt中加密套件就会使用openssl,但是webrtc会默认使用borin ...