前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2.1.1-文件上传流动原理与流程-文件上传漏洞原理

2.1.1-文件上传流动原理与流程-文件上传漏洞原理

作者头像
tea9
发布2022-07-16 16:08:37
5160
发布2022-07-16 16:08:37
举报
文章被收录于专栏:tea9的博客

上传&上传漏洞&上传检测流程

什么是文件上传

文件上传是一个网站的常见功能,多用于上传照片、视频、文档等许多类型文件。

上传文件流程

1.前端选择文件,进行提交。(浏览器端点击上传) 2.浏览器形成POST MultiPart报文发送到服务器。(一般看不到 使用抓包工具查看content type 上传文件使用multipart提交) 3.服务器中间件接受到报文,解析后交给相关后端代码进行处理。(一般看不到 进行后端服务器编程 或 使用waf检测过程中) 4.后端代码将上传的文件内容写入到临时文件中(PHP特有 文件内容写入到临时文件 该代码结束 文件也会删除)。 5.写入到文件中,文件名为提交的文件名或以一定规则生成的文件名。(有的时候是上传的文件名或根据日期生成的文件名)

选择文件-进行上传-开启截包工具forward-文件上传成功-访问文件

通过burp截取到上传文件的请求信息

通过burp截取到上传文件的请求信息
通过burp截取到上传文件的请求信息

前端代码对应请求到的信息

前端代码对应请求到的信息
前端代码对应请求到的信息

前后端代码

前后端代码
前后端代码

后端:

代码语言:javascript
复制
<?php
$uploaddir = 'uploads/';
if (isset($_POST['submit']) {
    if(file_exists($uploaddir)) {
        // 将上传文件生成的临时文件移动到指定位置
        if (move_uploaded_file($_FILES['upfile']['tmp_name'], $uploaddir . '/' . $_FILES['upfile']['name'])) {
            echo '文件上传成功,保存于:' . $uploaddir . $_FILES['upfile']['name'] . "\n";
        }
    } else {
        exit($uploaddir . '文件夹不存在,请手工创建!');
    }
}
?>

前端:

代码语言:javascript
复制
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
    <meta http-equiv="Content-Type" content="text/html;charset=gbk"/>
    <meta http-equiv="content_language" content="zh-CN"/>
    <title>文件上传漏洞演示脚本</title>
    <body>
    <h3>文件上传漏洞演示脚本</h3>
    <form>
        <input type="hidden" name="MAX_FILE_SIZE" vlaue="204800"/>
        请选择要上传的文件:<input type="file" name="upfile"/>
        <input type="submit" name="submit" value="上传"/>
    </form>
    </body>
</html>

文件上传漏洞产生的原因

当文件上传点未对上传的文件进行严格的验证和过滤时,就容易造成任意文件上传,包括上传动态文件(asp/php/jsp等等)。 如果上传的目标目录没有限制执行权限,导致所上传的动态文件(比如webshell)可以正常执行并且可以访问,即造成了文件上传漏洞。

上传漏洞必要条件是:

1.存在上传点 2.可以上传动态文件 3.上传目录有执行权限,并且上传的文件可执行 4.可访问到上传的动态文件

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 上传&上传漏洞&上传检测流程
  • 选择文件-进行上传-开启截包工具forward-文件上传成功-访问文件
    • 文件上传漏洞产生的原因
    相关产品与服务
    消息队列 TDMQ
    消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档