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

网络安全: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安全:文件上传漏洞测试(防止 黑客利用此漏洞.)

   

   

   

相关文章:

  • WPF——属性
  • 案例分享:同为科技与军工项目合作
  • 多层感知器的进化:从基础到并行门控——深入探讨MLP变体的实现、优化与风险
  • 深度解析SD-WAN在企业组网中的应用场景
  • [18] Opencv_CUDA应用之 基于颜色的对象检测与跟踪
  • java -jar
  • 我理解的文本表示模型
  • 【SpringBoot3.x】自定义开发通用SDK
  • [FlareOn5]Ultimate Minesweeper
  • 教程:LVM操作讲解
  • 【Android】记录在自己的AMD处理器无法使用Android studio 虚拟机处理过程
  • CBA认证-业务架构师认证的尚方宝剑
  • 【Android面试八股文】你能说一说View绘制流程与自定义View注意点吗?
  • 【python】OpenCV——Color Correction
  • 处理导入Excel文件过大导致Zip bomb detected的问题
  • [译]前端离线指南(上)
  • JavaScript设计模式系列一:工厂模式
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • underscore源码剖析之整体架构
  • Vue 2.3、2.4 知识点小结
  • Webpack 4x 之路 ( 四 )
  • 百度地图API标注+时间轴组件
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 技术胖1-4季视频复习— (看视频笔记)
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 微信开放平台全网发布【失败】的几点排查方法
  • 问题之ssh中Host key verification failed的解决
  • 我的业余项目总结
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 怎样选择前端框架
  • 扩展资源服务器解决oauth2 性能瓶颈
  • #WEB前端(HTML属性)
  • (2)leetcode 234.回文链表 141.环形链表
  • (28)oracle数据迁移(容器)-部署包资源
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (第二周)效能测试
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (计算机网络)物理层
  • (三)SvelteKit教程:layout 文件
  • (十七)Flink 容错机制
  • (学习日记)2024.01.19
  • (学习总结16)C++模版2
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)Oracle存储过程编写经验和优化措施
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .bat批处理(六):替换字符串中匹配的子串
  • .htaccess配置常用技巧
  • .net Signalr 使用笔记
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .net 反编译_.net反编译的相关问题
  • .Net的C#语言取月份数值对应的MonthName值
  • .net的socket示例
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • @AutoConfigurationPackage的使用