ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

文件上传漏洞:最简单也最危险

文件上传漏洞:最简单也最危险 文件上传漏洞最简单也最危险前言在 Web 安全众多漏洞中文件上传漏洞可以说是入门门槛最低危害却极其严重的一类漏洞。很多新手接触 Web 渗透第一个练习的就是文件上传。它原理简单网站允许用户上传图片、附件等文件但没有做好校验导致攻击者可以上传一句话木马、webshell拿到服务器权限。很多时候只需要点几下鼠标上传一个脚本文件就能直接拿下网站服务器。本文从原理、常见绕过手法、漏洞危害、检测与防御几个方面讲解适合 Web 安全初学者、开发和运维人员阅读。免责声明本文内容仅用于网络安全学习、企业安全自查、授权安全测试。严禁在未经授权的网站上进行文件上传测试任何非法入侵行为需要承担相应法律责任。一、什么是文件上传漏洞文件上传功能几乎随处可见头像上传、图片附件上传、文档提交、后台素材上传。网站业务需要接收用户文件后端接收文件后保存到服务器。正常逻辑只允许上传 jpg、png、pdf 这类静态文件并且严格限制文件存放路径、执行权限。漏洞产生的原因服务端对上传文件的文件名、后缀、文件内容、文件路径校验不严攻击者可以上传可执行脚本文件php、asp、aspx、jsp 等。当文件被服务器解析执行攻击者就可以通过脚本在服务器执行任意命令。一句话概括网站允许上传文件但没拦住脚本木马并且上传目录可以执行脚本代码。文件上传漏洞成立一般需要同时满足两个条件成功上传脚本文件到服务器上传目录具备脚本执行权限且可以通过 Web 访问到该文件。少任意一条漏洞都无法利用。二、漏洞带来的危害文件上传漏洞一旦利用成功后果非常严重获取 Webshell上传一句话木马连接后执行服务器命令读取网站源码、数据库配置窃取数据下载数据库备份、用户数据、敏感配置文件服务器提权拿到 Web 权限后进一步提权获取服务器操作系统权限植入后门上传内存马、持久化后门长期控制服务器横向移动以该服务器为立足点向内网其他主机探测、渗透篡改页面、挂黑链篡改网站首页植入广告、赌博、诈骗链接挖矿、勒索在服务器植入挖矿程序或者加密服务器文件实施勒索。很多大型网站被入侵事件入口就是一处不起眼的头像上传、图片上传功能。三、常见的文件上传校验方式以及对应的绕过思路1. 前端 JS 校验最容易绕过场景网页上传时使用 JavaScript 判断后缀非图片直接弹窗禁止上传。原理校验只在浏览器前端完成文件还没有传到服务器。绕过抓包修改文件后缀禁用浏览器 JavaScript 再上传。重点前端校验只能用来提升用户体验不能作为安全防护手段攻击者完全可以绕过。2. 基于后缀名黑名单校验后端禁止.php、.jsp、.asp等脚本后缀。常见绕过方式大小写绕过test.PHP、test.Jsp部分老旧服务器对后缀大小写不敏感特殊后缀php5、phtml部分 Web 容器会解析这类后缀点号绕过shell.php.Windows 系统会自动去除末尾的点空格绕过shell.phpWindows 自动去掉文件名末尾空格。缺点黑名单很难写全不断有新的可解析后缀很容易被漏掉。3. MIME 类型校验Content-Type 校验后端读取 http 请求头里的 Content-Type判断是不是 image/jpeg、image/png。绕过Burp 抓包修改 Content-Type 为图片类型文件内容依然是木马代码。Content-Type 是客户端可控的可信度极低不能单独用来校验文件。4. 文件头校验检查幻数读取文件前几个字节判断文件类型比如 jpg 文件头FF D8 FF、png 文件头89 50 4E 47。绕过图片马。把一句话木马追加到图片末尾copy 图片.jpg /b shell.php shell.jpg。文件头是图片但是文件尾部包含脚本代码。如果服务器只是校验文件头没有二次校验再配合文件包含漏洞就能执行图片里面的脚本代码。5. 文件名路径可控%00 截断老版本 PHP 存在 00 截断漏洞文件名shell.php%00.jpg服务器解析时遇到 %00 截断保存为 shell.php。现在新版 PHP 已经修复该漏洞现实环境越来越少见但靶场还经常遇到。6. 解析漏洞配合上传本身上传的是图片文件但是 Web 容器存在解析漏洞IIS 6.0 解析漏洞Nginx 旧版本解析漏洞。上传图片马访问特殊路径让 Web 容器把图片当做脚本解析执行。四、开发最容易踩的坑只做前端校验后端完全不校验使用黑名单过滤后缀而不是白名单仅校验 Content-Type 或者仅校验文件头上传目录赋予脚本执行权限上传文件名称直接使用用户可控的原始文件名不做重命名上传文件存放目录可以直接通过 Web 访问没有限制上传文件大小上传超大文件进行 DOS 攻击没有对上传文件做病毒、恶意代码扫描。五、文件上传漏洞防御方案1. 使用白名单策略推荐不要禁止危险后缀而是只允许指定安全后缀例如只允许 jpg、png、gif、pdf。白名单允许的才放行其他全部拒绝远比黑名单安全。2. 后端校验放弃前端校验信任前端 JS 可以保留用来做体验优化所有安全校验逻辑必须放在服务端。攻击者可以随意修改前端内容不能把安全交给浏览器。3. 文件重命名用户上传的原始文件名不可信。上传成功后使用随机字符串 固定后缀重命名文件。例如8a7b6c5d9e.jpg丢弃用户提交的文件名防止文件名解析、截断类攻击。4. 分离存储关闭上传目录执行权限上传文件保存在独立目录关闭该目录的脚本执行权限有条件的把上传文件存储到对象存储、独立文件服务器和 Web 应用服务器分离。就算上传木马也无法被 Web 容器解析执行。5. 多维度校验校验文件后缀白名单校验文件头部幻数对于图片使用图片库二次加载渲染如果不是合法图片直接丢弃防御图片马限制文件大小。6. 恶意文件查杀对接杀毒引擎对上传文件进行病毒扫描拦截 webshell、恶意脚本。7. 日志与监控记录文件上传日志上传账号、IP、文件名、存储路径。监控异常行为短时间大量上传文件、上传文件后立刻访问该文件、异常脚本文件访问行为。六、常见误区澄清❌ 误区 1加 JS 前端校验就能防上传漏洞错误。前端校验只是给普通用户看的攻击者抓包即可绕过安全校验必须放在后端。❌ 误区 2只要检查文件头就安全了错误。图片马可以骗过文件头校验如果存在文件包含、解析漏洞依旧可以执行木马代码。❌ 误区 3只要不允许 php 后缀就没事错误。不同中间件支持 phtml、php5 等其他解析后缀黑名单容易被绕过。❌ 误区 4上传图片就不会有危险图片本身安全但如果图片里面嵌入脚本代码配合文件包含或者中间件解析漏洞图片也能变成木马载体。七、总结文件上传漏洞之所以被称为最简单也最危险是因为原理通俗易懂利用门槛低一旦成功利用就能直接拿下服务器权限。漏洞根源往往不是多么复杂的底层漏洞而是开发人员安全意识不足校验逻辑设计草率。防御上传漏洞的核心思路白名单 后端校验 文件重命名 上传目录取消脚本执行权限。对于安全学习者练习上传漏洞时要重点理解每一种绕过方式背后的 Web 容器解析规则同时严格遵守法律法规只在本地靶场练习。Web 安全里很多高危漏洞并不是来自复杂的 0day而是这种业务功能上的安全疏忽。以上就是今天的分享觉得有帮助记得点赞收藏以上所说到的漏洞扫描工具都整理成压缩包了朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】同时还为准备学习网络安全黑客或者正在学习整理了一套360独家内部资料包含以下内容如有需要也可文末获取①网络安全学习路线②20份渗透测试电子书③安全攻防357页笔记④50份安全攻防面试指南⑤安全红队渗透工具包⑥网络安全必备书籍⑦100个漏洞实战案例⑧安全大厂内部视频资源⑨历年CTF夺旗赛题解析一、网络安全黑客学习路线网络安全黑客学习路线形成网络安全领域所有的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。二、网络安全教程视频我们在看视频学习的时候不能光动眼动脑不动手比较科学的学习方法是在理解之后运用它们这时候练手项目就很适合了。三、网络安全CTF实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这里带来的是CTFSRC资料HW资料毕竟实战是检验真理的唯一标准嘛~四、网络安全面试题最后我们所有的作为都是为就业服务的所以关键的临门一脚就是咱们的面试题内容所以面试题板块是咱们不可或缺的部分这里我给大家准备的就是我在面试期间准备的资料。网安其实不难难的是坚持和相信自己我的经验是既然已经选定网安你就要相信它相信它能成为你日后进阶的高效渠道这样自己才会更有信念去学习才能在碰到困难的时候坚持下去。机会属于有准备的人这是一个实力的时代。人和人之间的差距不在于智商而在于如何利用业余时间只要你想学习什么时候开始都不晚不要担心这担心那你只需努力剩下的交给时间这份完整版的网络安全学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表