pikachu Files Inclusion(文件包含漏洞)

第六章 Files Inclusion(文件包含漏洞)

1.文件包含原理及本地文件包含漏洞演示

  本地:

   后台使用包含的方法对目标文件进行包含,同时包含函数包含的文件是可以同时被前端用户所控制。因为可以被前端用户控制,这个时候前端用户传进来一个其他的文件,如果包含函数的入口并没有对前端传进来的文件做任何的控制,这就证明包含函数可以把前端传过来的文件也包含掉,这样就出现了问题。比如说可以把本地的配置文件进行包含,从而就把这些文件暴露给前端。攻击者通过上传后端的固定配置文件让包含函数去执行,从而导致本地的一些配置文件意外地进行执行。

  这个包含函数不止可以包含本地的php文件,远端的php文件也可以包含。通过一个指定的url去读取远程的php文件,把它加载到本地去执行。

  本地场景演示

 

 

  我们可以看一下这个请求

   这个请求传了一个文件名到后台,这些文件都是后台自己存在的。但是文件名是前端传到后台的,意味着前端的测试人员可以去修改这个文件。

  常用测试方法就是我们把这个文件改成后台的配置文件

 

   出现了

  先把这个路径下的文件传到后台,被后台的方法处理了,然后就把对应的配置文件暴露出来了。

  查看一下后端代码

   这可以让用户去选择一个指定的文件,但是没想到用户可以改这个文件。

  这里并没有对传进来的变量进行任何操作,我们可以在传入那里设置一些东西,比方说设置只有符合指定好的文件名才可以进行传入,否则不可以。

2.远程文件包含漏洞

 

   允许包含函数读取远程站点的代码文件,意味着攻击者可以自己搭一个站点,在上面放一个代码,这个代码就是攻击者自己控制的。再把对应的路径通过前端传到后台,后台的包含函数就会对远程的这个文件去进行加载。

  场景演示

 

 

 

   这个提交的是目标文件的路径,我们可以把这里改成一个远端的路径,让它读取远程的文件。

  恶意站点

  这个会在本地打开一个文件流,新建一个yijuhua.php的文件,把一句话木马写进去。一旦被执行,就会在本地生成一个yijuhua.php文件,里面的内容是system函数,接收远端的get请求传过来的一个参数值。

  把远端的路径粘贴过来

 

  远端服务器目前状态

  点一下提交

 

   后端服务器上出现了这个文件

 

   写入了

  远程调用(注意:我们要知道自己写的php文件在哪个目录下,跟当前的php页面在同一级目录下面)

  把后面的删掉,去访问yijuahua.php,传一个参数写一个命令

 

   出现了(通过x接口控制服务器)

  查看一下后端的代码

   对前端传过来的文件没有做任何的过滤。此时php.ini里面的设置是改过的

3.文件包含漏洞防范措施

 

原文地址:https://www.cnblogs.com/zhaihuijie/p/12650713.html