当前位置: 首页 > news >正文

文件上传-导引

1、概述

定义: 文件上传漏洞( Unrestricted File Upload)网站上传功能过滤不严格,导致用户可通过上传文
件对系统造成危害。

上传服务端可解析的脚本文件造成远程代码执行、上传超大文件造成拒绝服务、上传Html文件引发XSS等。

分类: Web通用漏洞

风险等级: 严重/中危

**危害:**上传文件Getshell/上传HTML文件实现XSS攻击、上传超大文件引发拒绝服务等

**常见功能点:**编辑器、头像修改、提交文章等。

漏洞示例:

<html>
<form action="http://127.0.0.1/upload.php"
method="POST" enctype="multipart/form-data">
<input name="a" type="file"></input>
<input name="b" ></input>
<input type="submit"></input>
</form>
</html>
<?php
var_dump($_POST['b']);
var_dump($_FILES);
move_uploaded_file($_FILES["a"]["tmp_name"],"
./upload/" . $_FILES["a"]["name"]);
?>

需要在同目录下创建一个upload文件夹

漏洞利用:

上传一个一句话木马,然后用蚁剑远程连接。

<?php eval($_POST['1'])?>
  • 通过上传GetShell。对于服务器直接支持解析的文件格式,只需要上传该后缀的文件即可。这种
    情况下的漏洞也被称作任意文件上传。
  • 通过上传实现XSS攻击。上传HTML文件时,在其中插入XSS代码实现XSS攻击。
  • 通过上传实现服务器拒绝服务。上传超大文件,或当服务器自动执行解压操作时,上传畸形的压
    缩包文件实现拒绝服务。

文件上传+环境解析 = WebShell
文件上传+任意路径控制 = 文件覆盖(WebShell)
文件上传 - 环境解析 - 路径控制 = XSS
文件上传-环境解析+无大小限制=拒绝服务

2、学习内容

**目的:**上传Webshell到网站服务器,获得shell权限。

后门代码需要用特定格式后缀解析,否则无法执行(解析漏洞除外)

  • 检测方式:前端(JS)、后端
  • 检测内容:文件头、完整性、二次渲染等
  • 检测后缀:黑名单、白名单、MIME检测等
  • 绕过技巧:多后缀解析、截断、中间件特性、条件竞争等

MIME:文件类型(Content-Type)

3、分类 && 思路

  • 代码端(网站自己写的)

    常规上传抓包测试

  • 中间件

    根据中间件版本先找对应历史漏洞,后续测试配置不当漏洞

    配置不当测试方法:?????待补充

  • 编辑器

    根据编辑器名称、版本找历史漏洞

4、靶场 / 练习

  • ctfshow(或其他ctf平台)
  • uplab

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • P2858 [USACO06FEB] Treats for the Cows
  • WordPress建站之头像及字体错误修正
  • Git 常用命令与工作流程总结
  • 域自适应,你适应了嘛?
  • 快讯 | OpenAI 找回场子:chatgpt-4o-latest 刷新多项AI跑分纪录
  • 1.Linux_常识
  • Anaconda安装jupyter notebook、jupyterlab及体验
  • 如何快速掌握一款MCU
  • selenium爬取搜狗网站新闻的小Demo
  • 【自用】Python爬虫学习(一):爬虫基础与四个简单案例
  • petalinux-config -c busybox 报错
  • Linux2.6内核进程调度队列详细讲解
  • XXX【4】策略模式
  • ffmpeg开发者视频剪辑器
  • 【python】OpenCV—Optical Flow
  • 【Amaple教程】5. 插件
  • 345-反转字符串中的元音字母
  • Bootstrap JS插件Alert源码分析
  • CentOS6 编译安装 redis-3.2.3
  • centos安装java运行环境jdk+tomcat
  • Java小白进阶笔记(3)-初级面向对象
  • JS函数式编程 数组部分风格 ES6版
  • mysql外键的使用
  • Objective-C 中关联引用的概念
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Vue学习第二天
  • 如何优雅地使用 Sublime Text
  • 入口文件开始,分析Vue源码实现
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 小试R空间处理新库sf
  • 学习笔记TF060:图像语音结合,看图说话
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • $$$$GB2312-80区位编码表$$$$
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (算法)N皇后问题
  • (小白学Java)Java简介和基本配置
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)UDP基本编程步骤
  • (转)Linq学习笔记
  • .Net 6.0 处理跨域的方式
  • .Net 6.0--通用帮助类--FileHelper
  • .NET 8.0 发布到 IIS
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .net 简单实现MD5
  • .net 流——流的类型体系简单介绍
  • .Net 中Partitioner static与dynamic的性能对比
  • .net6使用Sejil可视化日志
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET开发者必备的11款免费工具