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()函数实现相关敏感字符的过滤,一定程度上防御了远程文件包含。

posted @ 2020-11-17 20:31  码小农的幸福生活  阅读(675)  评论(0编辑  收藏  举报