【DVWA(九)】文件包含漏洞


文件包含漏洞

前言:

由于开发人员编写源码,将可重复使用的代码插入到单个的文件中,并在需要的时候将它们包含在特殊的功能代码文件中,然后包含文件中的代码会被解释执行。由于并没有针对代码中存在文件包含的函数入口做过滤,导致客户端可以提交恶意构造语句提交,并交由服务器端解释执行。文件包含攻击中WEB服务器源码里可能存在inlcude()此类文件包含操作函数,通过客户端构造提交文件路径,是该漏洞攻击成功的最主要原因。

如果攻击者为动态包含指令指定一个有效文件,那么该文件的内容会被传递给 PHP 解析器,可直接在远程服务器上执行任意PHP文件。
如果攻击者能够指定一条路径来指向被自己控制的远程站点,那么动态 include 指令就会执行由攻击者提供的任意恶意代码,也就是所谓的“远程文件包含”。

在开始实验之前,出现了小问题
在最上面出现红色的 The PHP function allow_url_include is not enabled. 提示,我是用PHP study搭建的学习环境,在软件界面选择:其他选项菜单->打开配置文件->php-ini

low:
1.观察:
分别点击三个文件,可以通过观察看到,url分别是:
http://127.0.0.1/dvwa/vulnerabilities/fi/?page=file1.php
http://127.0.0.1/dvwa/vulnerabilities/fi/?page=file2.php
http://127.0.0.1/dvwa/vulnerabilities/fi/?page=file3.php
只有page后面有变化
2.测试:
http://127.0.0.1/dvwa/vulnerabilities/fi/?page=http://127.0.0.1/index.php

可以发现打开了www文件夹下的index.php文件
也就是说通过page=“”的形式,可以查看你想要受害者查看的文件,配合文件上传漏洞,就可以轻易的形成破坏。

medium:
1.测试:
继续用http://127.0.0.1/dvwa/vulnerabilities/fi/?page=http://127.0.0.1/index.php进行测试,发现报错

failed to open stream: No such file or directory
说明不能这样直接在page后打开
2.尝试其他方法:
但是第二行大的报错给了信息了:Failed opening ‘127.0.0.1/index.php‘ for inclusion
所以先尝试page=后大小写混合http://127.0.0.1/dvwa/vulnerabilities/fi/?page=Http://127.0.0.1/index.php
完美,可以的!

high:
1.尝试:
http://127.0.0.1/dvwa/vulnerabilities/fi/?page=http://127.0.0.1/index.php
http://127.0.0.1/dvwa/vulnerabilities/fi/?page=Http://127.0.0.1/index.php
http://127.0.0.1/dvwa/vulnerabilities/fi/?page=../../index.php
均失败,而且错误一致!

2.查看:
怀疑是对?page=后内容进行了判断,查看源代码
其中有 if( !fnmatch( "file*", $file ) && $file != "include.php" ) ,果然,进行了"file"匹配,所以把page后的内容改为file开头的
http://127.0.0.1/dvwa/vulnerabilities/fi/?page=file://C:/phpStudy/PHPTutorial/WWW/index.php
执行成功!其中C:/phpStudy/PHPTutorial/WWW/是服务器中的绝对路径

impossible:
配合所有等级的源代码分析:
low:
<?php
// The page we wish to display
$file = $_GET[ ‘page‘ ];
?>
没有任何防护,可以任意破坏,现实中肯定没有这样的。
medium:
<?php
// The page we wish to display
$file = $_GET[ ‘page‘ ];
// Input validation
$file = str_replace( array( "http://", "https://" ), "", $file );
$file = str_replace( array( "../", "..\"" ), "", $file );
?>
黑名单模式,把"http://","https://","../","..\"",替换成空"",实际上黑名单不安全,有限,转换大小写轻易绕过。
high:
<?php
// The page we wish to display
$file = $_GET[ ‘page‘ ];
// Input validation
if( !fnmatch( "file*", $file ) && $file != "include.php" ) {
    // This isn‘t the page we want!
    echo "ERROR: File not found!";
    exit;
}
?>
白名单模式,但是这里白名单算是留了后路,因为只是同意file开头,绝对路径可以侵入。
impossible:
<?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;
}
?>
绝对白名单,只有四个文件可以,这样一来就很安全了,除非把服务器里这个四个文件给改了。

后记:
漏洞攻击的前提是:基本摸清了想要攻击的网站结构,敏感文件的路径可以得到(绝对路径),对攻击页面可控

原文地址:https://www.cnblogs.com/wayne-tao/p/11116758.html

时间: 2025-01-11 06:50:10

【DVWA(九)】文件包含漏洞的相关文章

DVWA系列之16 文件包含漏洞挖掘与防御

下面我们来分析一下DVWA中文件包含漏洞的源码. 首先文件包含的主页面是D:\AppServ\www\dvwa\vulnerabilities\fi\index.php文件,文件中的主要代码部分: 在这段代码中,首先使用switch语句根据用户选择的安全级别,分别将low.php.medium.php.high.php赋值给变量$vulnerabilityFile,接下来使用require_once函数来包含用户所选择的页面,最后用include函数来包含变量$file. 变量$file正是来自

DVWA篇四:文件包含漏洞

1      测试环境介绍 测试环境为OWASP环境中的DVWA模块 2      测试说明 2.1  什么时远程文件包含漏洞 什么才是"远程文件包含漏洞"?回答是:服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的. 涉及到的危险函数:include(),require()和include_once(),require_once() Include:包含并运行指定文件,当包含外部文件

DVWA系列之14 文件包含漏洞分析

程序开发人员通常会把可重复使用的函数写入到单个文件中,在使用某些函数时,直接调用此文件,而无需再次编写,这种调用文件的过程一般被称为包含.程序开发人员都希望代码更加灵活,所以通常会将被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞. PHP中提供了四个文件包含的函数,分别是include().include_once().require()和require_once(),它们的区别如下: require找不到被包含的文件时会产生

文件包含漏洞

本实验是基于DVWA和sqli-labs的实验环境 实验平台搭建:下载Wamp集成环境,并下载DVWA和sqli-labs和压缩包解压至wamp\www的目录下.安装只要注意Wamp环境的数据库名和密码对应即可. 0x01:文件包含漏洞 服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的. 这也算官方的解释吧,用个人的话说,通过浏览器.url地址或者是一个参数的变量的内容,可以通过修改这些url

本地文件包含漏洞(LFI漏洞)

0x00 前言 本文的主要目的是分享在服务器遭受文件包含漏洞时,使用各种技术对Web服务器进行攻击的想法. 我们都知道LFI漏洞允许用户通过在URL中包括一个文件.在本文中,我使用了bWAPP和DVWA两个不同的平台,其中包含文件包含漏洞的演示.通过它我以四种不同的方式执行LFI攻击. 0x01 基本本地文件包含 在浏览器中输入目标IP,并在BWAPP内登录(bee:bug),现在选择bug:remote & local file Inclusion,然后点击hack. 打开具有RFI和LFI漏

phpmyadmin任意文件包含漏洞分析(含演示)

0x01 漏洞描述 phpmyadmin是一款应用非常广泛的mysql数据库管理软件,基于PHP开发. 最新的CVE-2014-8959公告中,提到该程序多个版本存在任意文件包含漏洞,影响版本如下: phpMyAdmin 4.0.1 – 4.0.10.6 4.1.1 – 4.1.14.7 4.2.1 – 4.2.12 0x02 补丁分析 看到bobao.360.cn上提到了这个漏洞,于是我写个小分析吧,给渗透正没思路的人一个思路,也给学习代码审计的朋友一点资料. 前几天phpmyadmin出了个

PHP文件包含漏洞总结

0x00 前言 PHP文件包含漏洞的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入.最常见的就属于本地文件包含(Local File Inclusion)漏洞了. 我们来看下面一段index.php代码: if ($_GET['func']) { include $_GET['func']; } else { include 'default.php'; } 程序的本意可能是当提交url为http:

PHP文件包含漏洞攻防实战(allow_url_fopen、open_basedir)

摘要 PHP是一种非常流行的Web开发语言,互联网上的许多Web应用都是利用PHP开发的.而在利用PHP开发的Web应用中,PHP文件包含漏洞是一种常见的漏洞.利用PHP文件包含漏洞入侵网站也是主流的一种攻击手段.本文对PHP文件包含漏洞的形成.利用技巧及防范进行了详细的分析,并通过一个真实案例演示了如何利用PHP文件包含漏洞对目标网站进行渗透测试,最终成功获取到网站的WebShell. 1. PHP文件包含漏洞介绍 首先,我们来介绍下何为文件包含漏洞.严格来说,文件包含漏洞是“代码注入”的一种

文件包含漏洞原理分析

文件包含这个漏洞,用我自己的话来说就是程序员在网站设计中,为方便自己在设计构架时,使用了一些包含的函数,就像'文件包含'这几个字的字面意思一样,在文件中,包含一个文件. 我在总结这篇文章的时候看了,其他人总结的,感觉别人总结的很是详细,就像一开始我只认为包含只有PHP代码中才存在,后来我再整理复习的时候,才发现,包含这个漏洞在各大语言中,都存在的,只不过现在大部分网站都是PHP网站,所以存在这个漏洞的几率大一点,好了不废话了,我开始整理了. 文件包含 程序开发人员一般会把重复使用的函数写到单个文