标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2024-3272] 作者: 小螺号 发表于: [2023-02-17]
本文共 [243] 位读者顶过
Part.01 漏洞原理文件上传漏洞是指用户上传了一个可执行的脚本文件(php、jsp、xml、cer等文件),而WEB系统没有进行检测或逻辑做的不够安全。文件上传功能本身没有问题,问题在于上传后如何处理及解释文件。一般情况下,Web应用都会允许用户上传一些文件,如头像、附件等信息,如果Web应用没有对用户上传的文件进行有效的检查过滤,那么恶意用户就会上传一句话木马等Webshell,从而达到控制Web网站的目的。存在文件上传功能的地方都有可能存在文件上传漏洞,比如相册、头像上传,视频、照片分享。论坛发帖和邮箱等可以上传附件的地方也是上传漏的高危地带,另外像文件管理器这样的功能也有可能被攻击者所利用。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。 [出自:jiwo.org] Part.02 漏洞前提条件1、目标具有文件上传功能 2、上传文件能够被Web服务器解析执行 3、知道文件上传到服务器后的存放路径和文件名,否则无法执行 4、目标文件可被用户访问 Part.03 漏洞产生原因文件上传漏洞的产原因在于程序员对于用户上传的文件内容控制不足或处理存在缺陷,从而导致的用户可以越过其本身权限向服务器上传可执行的脚本文件。 具体原因
Part.04 文件上传过程
Part.05 目标会做哪些防护(一)客户端检测客户端检测是指依靠浏览器,用JavaScript代码去检测。一般是在网页上写一段JavaScript脚本,用JavaScript去检测,在文件未尾上传时,检验文件的后缀名,检测的方式有白名单和黑名单两种。 如何判断是否是前端验证:在浏览上传文件时弹出对话框,内容如:只允许上传.jpg/.jpeg/.png后缀名的文件,而此时并没有发送数据包,所以可以通过抓包来判断,如果弹出不准上传,但是没有抓到数据包,那么就是采用了前端验证。 如何绕过前端验证:
(二)客户端检测服务端检测是先将文件上传到服务器,然后服务器依靠后端代码去检测上传的文件是否合规。服务器脚本一般会检测文件的MIME类型、扩展名是否合法,甚至可能会去检测文件中是否嵌入恶意代码。
(三)黑名单、白名单黑名单检测: 一般有个专门的文件,里面会包含常见的危险脚本文件。 黑名单绕过:
白名单检测: 只允许某某类型的文件上传。 白名单绕过:
那么如何判断目标是黑名单还是白名单: 上传一个不存在的后缀的文件,所以如果能上传成功,说明目标是黑名单检测,如果上传失败,则目标是白名单检测。 Part.06 修复建议
|