Web渗透-文件包含漏洞

文件包含漏洞原理解析

  • 开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,而无须再次编写,这种调用文件的过程被称为包含

漏洞成因

  • 在通过引入文件时,由于传入的文件名没有经过合理的校验,或者校检被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。
  • 本地文件包含:被包含的文件在服务器本地
  • 远程文件包含:被包含的文件在远程服务器

漏洞利用

结合文件上传漏洞,先上传一个一句话木马文件,然后通过文件包含漏洞进行调用,最后获取webshell

漏洞防范

  1. 判断包含过程中的参数是否外部可控,就是说某个文件能否被外部控制/调用
  2. 路径限制:限制被包含的文件只能在某一个文件夹内,禁止目录跳转
  3. 包含文件验证:建立白名单。验证被包含文件是否在名单中。如被包含的page=x,这个x只能是白名单中的index.php或者file1.php。
  4. 尽量不使用动态包含,可以再需要包含的页面固定如include “test.php”

Web渗透-文件包含漏洞