ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DVWA学习日记-文件包含(File Inclusion)

2020-11-22 13:28:31  阅读:207  来源: 互联网

标签:文件 file 包含 Inclusion DVWA File php page


文件包含(File Inclusion),一种代码处理方法,函数如include,requirede等参数名是文件名

漏洞文件名参数用户可控且过滤不严,被攻击者偷梁换柱。

准备首先在php.ini设置打开设置配置文件,在在配置文件中将allow_url_include =On 、allow_url_open=On
在这里插入图片描述

Low级别


<?php

// The page we wish to display
$file = $_GET[ 'page' ];

?>

可以看到服务器端对page参数没有做任何过滤。
首先我们按照正常流程依次点击file1.php、file2.php、file3.php发现在这里插入图片描述
即page参数的值是可控的,于是我们做一些尝试——访问test.php
在这里插入图片描述提示了出错信息找不到文件,表明我们可以利用文件包含漏洞并爆出了绝对路径表明我们可以利用文件包含漏洞
远程文件包含
在远程服务器127.0.0.1中上传一个phpinfo.txt文件
构造url
http://192.168.147.1/DVWA-master/vulnerabilities/fi/?page=http://127.0.0.1/phpinfo.txt

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 );

?>

可以看到过滤了一些字符如将…/ …\替换为空字符,即删除
当时由于他没有过滤单独的字符所以我们可以采用重写的方式绕过str_replace函数
…/./

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;
}

?>

可以看到High级别用fnmatch函数检查page参数,要求page参数的开头必须是file,服务器才会包含相应文件。
我们可以用file协议绕过来执行本地文件
File协议主要用于访问本地计算机中的文件基本格式如图file:///文件路径。
至于执行任意命令,需要配合文件上传漏洞,先上传文件后再利用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;
}

?>

可以看到Impossible级别采用白名单机制进行防护,杜绝了文件包含漏洞

修复

黑名单× 容易被绕过
白名单√

标签:文件,file,包含,Inclusion,DVWA,File,php,page
来源: https://blog.csdn.net/m0_46263419/article/details/109936510

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有