本文主要介绍针对PHP网站文件上传漏洞。由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意PHP文件,并能够将这些文件传递给 PHP解释器,就可以在远程服务器上执行任意PHP脚本,即文件上传漏洞。

一套web应用程序,一般都会提供文件上传的功能,方便来访者上传一些文件。

下面是一个简单的文件上传表单

  1. <form action="upload.php" method="post" enctype="multipart/form-data" name="form1">
  2. <input type="file" name="file1" /><br />
  3. <input type="submit" value="上传文件" />
  4. <input type="hidden" name="MAX_FILE_SIZE" value="1024" />
  5. form>

php的配置文件php.ini,其中选项upload_max_filesize指定允许上传的文件大小,默认是2M

$_FILES数组变量

PHP使用变量$_FILES来上传文件,$_FILES是一个数组。如果上传test.txt,那么$_FILES数组的内容为:

  1. $FILES
  2. Array
  3. {
  4. [file] => Array
  5. {
  6. [name] => test.txt //文件名称
  7. [type] => text/plain //MIME类型
  8. [tmp_name] => /tmp/php5D.tmp //临时文件
  9. [error] => 0 //错误信息
  10. [size] => 536 //文件大小,单位字节
  11. }
  12. }

如果上传文件按钮的name属性值为file

<input type="file" name="file" />

那么使用$_FILES['file']['name']来获得客户端上传文件名称,不包含路径。使用$_FILES['file']['tmp_name']来获得服务端保存上传文件的临时文件路径

存放上传文件的文件夹

PHP不会直接将上传文件放到网站根目录中,而是保存为一个临时文件,名称就是$_FILES['file']['tmp_name']的值,开发者必须把这个临时文件复制到存放的网站文件夹中。

$_FILES['file']['tmp_name']的值是由PHP设置的,与文件原始名称不一样,开发者必须使用$_FILES['file']['name']来取得上传文件的原始名称。

上传文件时的错误信息

$_FILES['file']['error']变量用来保存上传文件时的错误信息,它的值如下:

文件上传漏洞

如果提供给网站访问者上传图片的功能,那必须小心访问者上传的实际可能不是图片,而是可以指定的PHP程序。如果存放图片的目录是一个开放的文件夹,则入侵者就可以远程执行上传的PHP文件来进行攻击。

下面是一个简单的文件上传例子:

  1. php
  2. // 设置上传文件的目录
  3. $uploaddir = "D:/www/images/";
  4. // 检查file是否存在
  5. if (isset($_FILES['file1']))
  6. {
  7. // 要放在网站目录中的完整路径,包含文件名
  8. $uploadfile = $uploaddir . $_FILES['file1']['name'];
  9. // 将服务器存放的路径,移动到真实文件名
  10. move_uploaded_file($_FILES['file1']['tmp_name'], $uploadfile);
  11. }
  12. ?>
  13. ……
  14. <form method="post" enctype="multipart/form-data" name="form1">
  15. <input type="file" name="file1" /><br />
  16. <input type="submit" value="上传文件" />
  17. <input type="hidden" name="MAX_FILE_SIZE" value="1024" />
  18. form>

这个例子没有检验文件后缀,可以上传任意文件,很明显的上传漏洞

转载于:https://www.cnblogs.com/zgq123456/p/10057188.html

PHP漏洞全解—————9、文件上传漏洞相关推荐

  1. java web 上传图片漏洞_Web安全:文件上传漏洞

    原标题:Web安全:文件上传漏洞 一般将文件上传归类为直接文件上传与间接文件上传.直接文件上传就是服务器根本没有做任何安全过滤,导致攻击者可以直接上传小马文件及大马文件(如ASP.ASPX.PHP.J ...

  2. 最新系统漏洞--Victor CMS任意文件上传漏洞

    最新系统漏洞2021年11月25日 受影响系统: Victor CMS Victor CMS 1.0 描述: Victor CMS是尼日利亚Victor Alagwu软件开发者的一套开源的内容管理系统 ...

  3. nginx 上传文件漏洞_浅谈文件上传漏洞(其他方式绕过总结)

    前言 上一篇文章简单的介绍了绕过客户端检测,现在总结一下其他方式绕过. 正文 1.1 服务端MIME类型检测绕过 检测原理:用户上传文件时,服务器会获取这个文件的MIME值,与事先设置好的进行比对,如 ...

  4. Pikachu靶场之文件上传漏洞详解

    Pikachu靶场之文件上传漏洞详解 前言 文件上传漏洞简述 什么是文件上传漏洞? 文件上传的原理 文件上传漏洞有哪些危害 文件上传漏洞如何查找及判断 文件上传如何防御 文件上传漏洞绕过的方式有哪些 ...

  5. web渗透之文件上传漏洞知识总结

    一.文件上传漏洞思路: 第一步: 首先看中间件:因为第一步看中间件就是确定是否存在解析漏洞(学习整理几种解析漏洞的对应版本,有些低版本有解析漏洞,有些高版本就没有.)中间件版本确定了,解析漏洞就确定了 ...

  6. 太厉害了,终于有人能把文件上传漏洞讲的明明白白了

    大家好! 我是小黄,很高兴又跟大家见面啦 ! 拒绝水文,从我做起 !!!! 未经允许,禁止转载 ,违者必究!!!! 本实验仅适用于学习和测试 ,严禁违法操作 ! ! ! 今天更新的是: P7 漏洞类型 ...

  7. 畅捷通T+ v17任意文件上传漏洞复现

    1.前言 8月29晚上就开始收到通知,让我们来排查一下是否有使用畅捷通的系统,说是疑似0day导致很多用户被植入勒索病毒,一时间风头十足.第二天很多平台都更新的防护策略,本次漏洞是任意文件上传漏洞,如 ...

  8. 【网络安全】文件上传漏洞及中国蚁剑安装

    文件上传漏洞 描述 中国蚁剑安装 1. 官网下载源码和加载器 2.解压至同一目录并 3.安装 4.可能会出现的错误 文件上传过程 必要条件 代码示例 dvwa靶场攻击示例 1.书写一句话密码进行上传 ...

  9. 网安基础学习之“文件上传漏洞原理与实现”

    网安基础学习之"文件上传漏洞原理与实现" 近期新闻头条上报出了"长沙市场监管局网站被上传了黄色页面",经过长沙市公安局网技支队的排查,该门户网站后台编辑器存在* ...

  10. PHP代码审计7—文件上传漏洞

    文章目录 一.文件上传漏洞基础 1.漏洞原理 2.常见的防御方法与绕过技巧 3.近期公布的文件上传漏洞 二.Upload-Labs 部分代码分析 1.Pass-4 后缀名黑名单检测 2.文件头白名单检 ...

最新文章

  1. android 线程list.add,ListenableWorker 中的线程处理
  2. sqlplus登录Oracle时ORA-01017: invalid username/password; logon denied的错误
  3. CentOS启用sudo方法
  4. 通过skimmer发动供应链攻击,苏富比地产100多个网站受影响
  5. Linux虚拟文件系统(内核初始化二)
  6. asp.net session对象
  7. testflight无法联网怎么办_疫情期间,汽车驾照和年检过期了该怎么办?
  8. 架构问题--削峰填谷
  9. 催眠曲用计算机怎么弹,在电脑中巧播“催眠曲”
  10. 从真正的零组建一台日常使用PC+NAS
  11. 给的再多,不如懂我——Gif录制工具,这两个就够了
  12. mysql-8.0.28-winx64的安装
  13. 05_CSS 盒模型
  14. 【目标检测】什么是mAP?如计算模型的mAP?(mAP的相关概念以及求法)
  15. 中标麒麟龙芯桌面版重置root密码
  16. 9.nodejs 内置模块
  17. 【Android】SerialPortFinder学习笔记,显示串口列表
  18. 计算机二级vfp模拟考试题,2016年计算机二级《VFP》测试题及答案
  19. 算法-从1,...,99,2015这100个数中任意选择若干个数(可能为0个数)求异或,试求异或的期望值
  20. 京东数科2020双十一备战实录

热门文章

  1. bspline怎么使用 python_零基础5个月快速学会Python的秘诀
  2. java打包----“Artifacts”
  3. poythoncode-实战5--json 文件读取,文本文件,csv文件,存到系统中以大列表方式进行存储
  4. JS的 setTimeout 和 bind 使用 、复选框限制选定数据jq
  5. bim服务器型号,国外有哪几个知名的BIM服务器?BIM服务器全介绍!(三)
  6. CS224N刷题——Assignment2.1_TensorflowSoftmax
  7. 联合哈佛大学,Google 要用人工智能来预测地震余震
  8. (一)Maven简介
  9. MongoDB Database Profiling
  10. Unity Web前端研究