Web安全-文件包含漏洞利用与防护
文件包含漏洞利用与防护
【实验目的】
本实验通过利用文件包含漏洞读取Web服务器敏感信息,来感受文件包含漏洞的危害,了解文件包含漏洞的防护方法。
【实验环境】
**存在上传漏洞靶机:DVWAWin2k8**
(用户名: 360college 密码: 360College)
**Web渗透主机:WebPentester**
(用户名: college 密码: 360College)
【实验原理】
PHP文件包含漏洞,指的是在通过函数包含文件时,由于没有对包含的文件名进行有效的过滤处理,被攻击者利用从而导致了包含了Web根目录以外的文件进来,就会导致文件信息的泄露甚至注入了恶意代码。
文件包含是通过include函数将web根目录以外的目录的文件被包含进来。
文件包含漏洞的一般特征如下:?page=a.php 或者?home=a.html或者?file=content
文件包含漏洞的产生基本有两大前提:
1.被包含的页面攻击者可控;
2.如果要包含本地文件,攻击者可以获得敏感文件的路径。
实验步骤
第一步 登录存在文件包含漏洞的Web服务器并启动网站Web服务
(1)使用账号360College登录靶机(密码为360College)
(2)双击桌面快捷方式phpStudy启动服务:
Web服务成功启动后的界面如下图所示:
第二步 渗透主机远程访问DVWA网站,并利用文件包含漏洞读取文件
(1)输入url地址http://【靶机IP】:8085,以用户名admin密码password进行登录:
(2)设置训练级别为low
第三步 渗透主机利用文件包含漏洞读取Web服务器文件
(1)点击“File Inclusion”菜单,显示如图所示界面:
(2)将url里面的page=include.php替换成page=xxxxx.php,提交请求后的反馈界面如图所示。此时错误爆出了网站的路径信息:
(3)在目标靶机的DVWA网站目录D:/WWW/DVWA/下存在phpinfo.php文件:
(4)在渗透主机的url里面将page=include.php指定为page=../../phpinfo.php,此时可成功读取配置文件,如图所示:
(5)在目标靶机的DVWA网站目录D:/WWW/DVWA/下新建ceshi.txt文档,其内容如图所示:
(6)在渗透主机的url里面将page=include.php指定为page=../../ceshi.txt,此时可成功读取该文件,如图所示:
这表明了文件包含不仅仅能读文件,还能执行文件。可以配合网站的上传漏洞上传webshell,然后利用文件包含将其远程执行,从而控制Web服务器。
【思考与总结】
如果分析一下漏洞存在的原因,其源代码如图所示
可以发现,对于GET请求发送过来的内容并没有进行任何的过滤,导致文件包含漏洞的产生。
防御方法:
(1)严格判断包含中的参数是否外部可控。
(2)路径限制,限制被包含的文件只能在某一个文件夹内,特别是一定要禁止目录跳转字符,如:“../”。
(3)基于白名单的包含文件验证,验证被包含的文件是否在白名单中。
(4)尽量不要使用动态包含,可以在需要包含的页面固定写好,如:“include("head.php")”。
(5)可以通过调用str_replace()函数实现相关敏感字符的过滤,一定程度上防御了远程文件包含。