网络安全:Web 安全 面试题.(文件上传漏洞)
网络安全:Web 安全 面试题.(文件上传漏洞)
网络安全面试是指在招聘过程中,面试官会针对应聘者的网络安全相关知识和技能进行评估和考察。这种面试通常包括以下几个方面:
(1)基础知识:包括网络基础知识、操作系统知识、密码学知识等。
(2)安全技术:如入侵检测、防火墙配置、密码管理、漏洞分析等技术的掌握程度。
(3)安全实践:评估应聘者在实际工作中解决网络安全问题的能力,如案例分析、渗透测试等。
(4)安全意识:了解应聘者对网络安全的重视程度和责任心,以及在安全事故发生时的应对能力。
(5)项目经验:询问应聘者参与过的网络安全相关项目,了解其在项目中的具体工作和贡献。
(6)沟通表达:考察应聘者的沟通能力和逻辑思维,以及解决问题的方法。
目录:
网络安全:Web 安全 面试题.(文件上传漏洞)
(1)什么是文件上传漏洞:
(2)文件上传漏洞原理:
(3)文件上传漏洞绕过方法:
(4)条件竞争漏洞原理:
(5)如何验证存在任意文件下载的漏洞:
(6)任意文件下载漏洞的修复方案:
(7)文件上传防御方法:
(8)文件上传的实战测试:
(1)什么是文件上传漏洞:
文件上传漏洞是指Web应用程序允许用户上传文件,但在处理这些文件时没有进行足够的安全检查,导致攻击者可以上传恶意文件,从而可能执行远程代码、获取敏感信息或对系统进行其他形式的攻击。
(2)文件上传漏洞原理:
由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件.
不限制文件类型:应用程序允许用户上传任何类型的文件,而没有检查文件扩展名或MIME类型。
不检查文件内容:即使文件扩展名或MIME类型被检查,应用程序也可能没有检查文件的实际内容,允许攻击者上传伪装成图片或其他非执行文件的恶意脚本。
不限制文件大小:允许上传过大的文件,可能导致拒绝服务攻击(DoS)。
不限制文件执行:上传的文件被存储在可以被Web服务器执行的位置,攻击者上传的脚本可能被执行。
(3)文件上传漏洞绕过方法:
前端 Js 绕过、黑白名单绕过、文件类型绕过(mime、文件头、文件内容)、路径截断绕过(00 截断)、中间件解析洞、条件竞争、二次渲染、编辑器漏洞;
(4)条件竞争漏洞原理:
条件竞争漏洞是一种服务器端的漏洞,服务器端在处理不同用户时是并发进行的,但是如果并发处理不当 或 逻辑顺序设计的不合理,就会产生这种漏洞.
举例:
很多 web 程序都会有上传文件的功能,头像和图像等,服务器肯定会检查文件是否满足条件,不满足的要被删除。那么问题就在于,如果我们采用大量的并发请求,就传递一个生成恶意 webshell 的图像,访问它就可以生成 webshell.
在上传完成和安全检查完成并删除它的间隙,攻击者通过不断地发起访问请求的方法访问了该文件,该文件就会被执行,并且在服务器上生成一个恶意 shell 的文件。
至此该文件的任务就已全部完成,至于后面发现它是一个不安全的文件并把它删除的问题都已经不重要了,因为攻击者已经成功地在服务器中植入了一个 shell 文件,后续的一切就都不是问题了。
(5)如何验证存在任意文件下载的漏洞:
一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意敏感文件,这就是文件查看与下载漏洞。
利用条件:存在读文件的函数;读取文件的路径用户可控且未校验或校验不严;输出了文件内容。
任意文件下载和任意文件读取有着相似的地方:就是都需要路径,
例如:
index.php?f=file:///etc/passwd, index.php?f=../index.php
(6)任意文件下载漏洞的修复方案:
(1)过滤用户数据,如" / "," * "," . "等特殊字符
(2)更新中间件.
(3)要下载的文件地址保存至数据库中.
(4)文件路径保存至数据库,让用户提交文件对应ID或session 下载文件.
(5)用户下载文件之前需要进行权限判断.
(6)文件放在 web 无法直接访问的目录下.
(7)不允许提供目录遍历服务.
(8)公开文件可放置在 web 应用程序下载目录中通过链接进行下载.
(7)文件上传防御方法:
(1)上传目录的用户执行权限全部取消
(2)判断文件类型
(3)使用随机数改写文件名和文件路径
(4)网站服务器和文件服务器分离
(5)白名单检查、限制文件大小
(8)文件上传的实战测试:Web安全:文件上传漏洞测试(防止 黑客利用此漏洞.)
相关文章:
网络安全:Web 安全 面试题.(文件上传漏洞)
网络安全:Web 安全 面试题.(文件上传漏洞) 网络安全面试是指在招聘过程中,面试官会针对应聘者的网络安全相关知识和技能进行评估和考察。这种面试通常包括以下几个方面: (1)基础知识:包括网络基础知识、操…...
智源联合多所高校推出首个多任务长视频评测基准MLVU
当前,研究社区亟需全面可靠的长视频理解评估基准,以解决现有视频理解评测基准在视频长度不足、类型和任务单一等方面的局限性。因此,智源联合北邮、北大和浙大等多所高校提出首个多任务长视频理解评测基准MLVU(A Comprehensive Be…...
Linux系统:线程概念 线程控制
Linux系统:线程概念 & 线程控制 线程概念轻量级进程 LWP页表 线程控制POSIX 线程库 - ptherad线程创建pthread_createpthread_self 线程退出pthread_exitpthread_cancelpthread_joinpthread_detach 线程架构线程与地址空间线程与pthread动态库 线程的优缺点 线程…...
LearnOpenGL - Android OpenGL ES 3.0 绘制纹理
系列文章目录 LearnOpenGL 笔记 - 入门 01 OpenGLLearnOpenGL 笔记 - 入门 02 创建窗口LearnOpenGL 笔记 - 入门 03 你好,窗口LearnOpenGL 笔记 - 入门 04 你好,三角形OpenGL - 如何理解 VAO 与 VBO 之间的关系LearnOpenGL - Android OpenGL ES 3.0 绘制…...
山东济南最出名的起名大师颜廷利:二十一世纪哲学的领航者
山东济南最出名的起名大师颜廷利教授:二十一世纪哲学的领航者 在哲学的天空中,颜廷利教授犹如一颗璀璨的星辰,被无数求知者誉为21世纪最杰出的思想家之一。他的理论既深邃又广博,巧妙地将东方的儒家与道家哲学与西方的思辨传统交织…...
Nginx 负载均衡实现上游服务健康检查
Nginx 负载均衡实现上游服务健康检查 Author:Arsen Date:2024/06/20 目录 Nginx 负载均衡实现上游服务健康检查 前言一、Nginx 部署并新增模块二、健康检查配置2.1 准备 nodeJS 应用程序2.2 Nginx 配置负载均衡健康检查 小结 前言 如果你使用云负载均衡…...
小程序使用接口wx.getLocation配置
开通时需详细描述业务,否则可能审核不通过 可能需要绑定腾讯位置服务,新建应该,绑定到小程序 配置 权限声明:在使用wx.getLocation前,需要在app.json的permission字段中声明对用户位置信息的使用权限,并提…...
Protobuf安装配置--附带每一步截图
Protobuf Protobuf(Protocol Buffers)协议是一种由 Google 开发的二进制序列化格式和相关的技术,它用于高效地序列化和反序列化结构化数据,通常用于网络通信、数据存储等场景。 为什么要使用Protobuf Protobuf 在许多领域都得到…...
力扣1019.链表中的下一个更大节点
力扣1019.链表中的下一个更大节点 从左到右 每个数确定下一个更大节点后 弹出栈中存下标 即res.size() class Solution {public:vector<int> nextLargerNodes(ListNode* head) {vector<int> res;stack<int> st;for(auto ihead;i;ii->next){while(!st.e…...
查询mysql库表的几个语句
1、查询某个数据库的所有表 SELECTtable_name FROMinformation_schema.TABLES WHEREtable_schema database_namedatabase_name替换成你需要查询的数据库名称 2、查询某张表的所有字段名称 SELECTCOLUMN_NAME,column_comment FROMinformation_schema.COLUMNS WHEREtable…...
【CT】LeetCode手撕—103. 二叉树的锯齿形层序遍历
目录 题目1- 思路2- 实现⭐103. 二叉树的锯齿形层序遍历——题解思路 2- ACM实现 题目 原题连接:103. 二叉树的锯齿形层序遍历 1- 思路 二叉树的层序遍历,遇到奇数时,利用 Collections.reverse() 翻转即可 2- 实现 ⭐103. 二叉树的锯齿形层…...
1958springboot VUE宿舍管理系统开发mysql数据库web结构java编程计算机网页源码maven项目
一、源码特点 springboot VUE宿舍管理系统是一套完善的完整信息管理类型系统,结合springboot框架和VUE完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发) ,系统具有完整的源代码和数…...
LVS DR模式
Linux Virtual Server(LVS)是一个由Linux内核支持的负载均衡解决方案,旨在通过集群技术来提高服务器的可扩展性、可靠性和高可用性。LVS通过将客户端的请求分发到多个服务器上,从而实现负载均衡和容错。 目录 LVS的工作模式 DR模…...
myslql事务示例
在 MySQL 中,事务(Transaction)是一组要么全部执行,要么全部不执行的SQL语句。这可以确保数据的一致性和完整性。事务管理的核心包括四个属性,即原子性(Atomicity)、一致性(Consiste…...
解决Flutter应用程序的兼容性问题
哈喽呀,大家好呀,淼淼又来和大家见面啦,Flutter作为一个跨平台的移动应用开发框架,极大地简化了开发者同时在Android和iOS平台上构建应用的难度。然而,由于不同设备、操作系统版本以及Flutter框架本身的变化࿰…...
整合微信支付一篇就够了
需要的工具 微信开发小程序工具 需要的材料 关键步骤 postman获取微信access_token https://api.weixin.qq.com/cgi-bin/token?appid=wxfssafa629021&grant_type=client_credential&secret=701d213dsfsdfsfdss4fb274生成h5跳转小程序的链接 https://api.weixin.…...
视创云展为企业虚拟展厅搭建,提供哪些功能?
在当下数字化浪潮中,如何为用户创造更富生动性和真实感的展示体验,已成为企业营销策略的核心。借助视创云展的线上虚拟3D企业展厅搭建服务,利用3D空间漫游和VR技术的融合,可以为用户呈现出一个既真实又充满想象力的全景图或三维模…...
c++ 常用的锁及用法介绍和示例
2024/6/21 14:20:10 在 C++ 中,常用的锁主要包括以下几种:std::mutex、std::recursive_mutex、std::timed_mutex 和 std::shared_mutex。这些锁可以帮助我们在多线程编程中保护共享数据,避免竞争条件。以下是每种锁的介绍及其用法示例: std::mutex std::mutex 是最基本的互…...
PostgreSQL源码分析——口令认证
认证机制 对于数据库系统来说,其作为服务端,接受来自客户端的请求。对此,必须有对客户端的认证机制,只有通过身份认证的客户端才可以访问数据库资源,防止非法用户连接数据库。PostgreSQL支持认证方法有很多࿱…...
Stability-AI(图片生成视频)
1.项目地址 GitHub - Stability-AI/generative-models: Generative Models by Stability AI 2.模型地址 魔搭社区 3.克隆项目后,按照教程安装 conda create --name Stability python3.10 conda activate Stability pip3 install -r requirements/pt2.txt py…...
多租户下的系统基础表设计
多租户下的系统基础表设计在设计 多租户进销存系统(SaaS) 时,核心是 租户隔离 权限控制 组织结构。 一般推荐的设计是 “租户 → 机构 → 角色 → 用户” 的层级结构,同时所有业务数据都带 tenant_id。租户表(Tenant…...
JVM堆内存泄漏排查:从-Xmx设置到hprof文件分析的完整避坑指南
JVM堆内存泄漏排查:从参数配置到实战分析的完整方法论 最近在排查一个线上服务的内存泄漏问题时,我发现很多开发者对JVM内存问题的处理还停留在"遇到OOM就重启服务"的初级阶段。实际上,一套系统化的内存排查方法论不仅能快速定位问…...
Verilog中的strength到底有什么用?一个案例带你理解强弱驱动的实际应用
Verilog中的strength到底有什么用?一个案例带你理解强弱驱动的实际应用 在数字电路设计中,Verilog作为硬件描述语言的标杆,其精确建模能力直接影响仿真结果的可靠性。而strength(强度)这一常被忽视的特性,恰…...
League-Toolkit完全指南:高效BP策略与全方位战绩分析实战应用
League-Toolkit完全指南:高效BP策略与全方位战绩分析实战应用 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 功能解析…...
【MySQL | 第一篇】 深入理解三大日志(undo Redo Bin)
目录 Undo Log日志 Redo Log日志 Redo Log与Bin Log的区别 Bin Log日志 三大日志全流程 Undo Log日志 一、核心定义 Undo Log 是MySQL InnoDB存储引擎特有的事务回滚日志,核心作用是记录事务执行前的数据版本,用于事务回滚、MVCC实现,是…...
当Logo消失,品牌资产还剩多少?
这个问题问得直接——品牌费尽心思把Logo放大、放正、放在C位,可如果有一天消费者真的“看不见”它,品牌还剩下什么?答案取决于品牌建设的本质:是在做识别符号,还是在做价值沉淀。1. 认知资产:剩不下什么Lo…...
零基础玩转OpenClaw:借助GLM-4.7-Flash实现首个自动化脚本
零基础玩转OpenClaw:借助GLM-4.7-Flash实现首个自动化脚本 1. 为什么选择OpenClaw作为个人自动化助手 去年夏天,当我第三次因为忘记定时发送周报而被领导提醒时,终于下定决心寻找一个能24小时待命的数字助手。在尝试了各种RPA工具后&#x…...
N_m3u8DL-RE流媒体下载器终极指南:5分钟掌握加密视频下载与直播录制
N_m3u8DL-RE流媒体下载器终极指南:5分钟掌握加密视频下载与直播录制 【免费下载链接】N_m3u8DL-RE 跨平台、现代且功能强大的流媒体下载器,支持MPD/M3U8/ISM格式。支持英语、简体中文和繁体中文。 项目地址: https://gitcode.com/GitHub_Trending/nm3/…...
华为eNSP实战:三层交换机VLAN间通信配置避坑指南(附CE12800特殊命令)
华为eNSP三层交换机VLAN间通信实战:从基础配置到核心设备差异解析 在华为eNSP模拟器的学习过程中,三层交换机配置是网络工程师必须掌握的硬核技能。不同于传统二层交换,三层交换技术融合了路由与交换的优势,能够高效实现VLAN间通信…...
从零开始:OCAT图形化配置工具让OpenCore黑苹果安装变得简单
从零开始:OCAT图形化配置工具让OpenCore黑苹果安装变得简单 【免费下载链接】OCAuxiliaryTools Cross-platform GUI management tools for OpenCore(OCAT) 项目地址: https://gitcode.com/gh_mirrors/oc/OCAuxiliaryTools 还在为复杂的…...
