网络安全:Web 安全 面试题.(文件上传漏洞)
网络安全面试是指在招聘过程中,面试官会针对应聘者的网络安全相关知识和技能进行评估和考察。这种面试通常包括以下几个方面:
(1)基础知识:包括网络基础知识、操作系统知识、密码学知识等。
(2)安全技术:如入侵检测、防火墙配置、密码管理、漏洞分析等技术的掌握程度。
(3)安全实践:评估应聘者在实际工作中解决网络安全问题的能力,如案例分析、渗透测试等。
(4)安全意识:了解应聘者对网络安全的重视程度和责任心,以及在安全事故发生时的应对能力。
(5)项目经验:询问应聘者参与过的网络安全相关项目,了解其在项目中的具体工作和贡献。
(6)沟通表达:考察应聘者的沟通能力和逻辑思维,以及解决问题的方法。
目录:
[网络安全:Web 安全 面试题.(文件上传漏洞)](#网络安全:Web 安全 面试题.(文件上传漏洞))
(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)白名单检查、限制文件大小