【Web安全基础】文件操作类漏洞

文章目录

  • 文件包含漏洞(File Inclusion)
    • 定义
    • 分类
      • 本地文件包含
      • 远程文件包含
    • 函数介绍
    • 防御原理
  • 文件上传漏洞(File Upload)
    • 定义
    • 利用

文件包含漏洞(File Inclusion)

定义

文件包含漏洞,是指当服务器开启php配置(php.ini)中的allow_url_include选项时,就可以通过php的某些特性函数(include(),require()和include_once(),require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。

分类

本地文件包含

在网站服务器的本身存在恶意文件,然后在本地包含使用。

远程文件包含

在服务器的php配置中开启了allow_url_open选项,服务器会允许包含远程服务器上的文件。

函数介绍

  • include():执行到include()时才包含文件,找不到被包含文件时只会产生警告,脚本将继续执行
  • require():只要程序一运行就包含文件,找不到被包含文件时会产生致命错误,停止脚本执行
  • include_once() / require_once():若文件中代码已被包含则不会再次包含

防御原理

  1. 严格判断包含的参数是否外部可控
  2. 路径限制:限制被包含文件只能在某一文件夹内,禁止目录跳转字符(如:…/)
  3. 包含文件验证:验证被包含文件是否在白名单内
  4. 尽量不使用动态包含,可在需要包含的页面固定写好(如:include(“xxx.php”)等)

文件上传漏洞(File Upload)

定义

文件上传漏洞,通常是由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马获取服务器的webshell权限。

利用

捕获文件上传数据包,修改content-type,转发。

你可能感兴趣的:(网络安全基础知识,php,安全)