现在真的还有文件上传漏洞?谁家开发这么粗心?
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
![]()
嗯??? 不给予评价,但漏洞是怎么个事咱必须得搞懂 文件上传漏洞的核心是:后端没做好校验,导致攻击者能上传恶意文件(WebShell)到服务器,然后通过访问这个文件获得服务器权限 而所谓的"绕过",就是在和后端的校验逻辑玩猫鼠游戏。后端检查什么,你就想办法让它检查不到、检查不准、或者检查了也没用 这里,先搞懂后端通常检查什么 分享常见绕过方法 一、前端绕过 前端校验是最弱的,因为攻击者可以完全控制前端 现象: JS代码里写死了只能传jpg/png 绕过方法:
二、Content-Type绕过 现象: 后端检查了Content-Type: image/jpeg,必须是图片类型才能上传 绕过: 用Burp拦截,把Content-Type改成image/jpeg
后端一看MIME类型是图片就放行了,不管文件内容是不是PHP(现在基本没有系统只靠Content-Type做校验了,但你做的项目多,偶尔还是能碰到) 三、文件后缀名绕过 这是最常见的绕过方向。后端通常有黑名单和白名单两种策略 黑名单绕过 黑名单的意思是"不允许这些后缀",其他都允许 常见的黑名单: asp、aspx、php、jsp、py 等 绕过思路: 1. 大小写绕过
有些系统用黑名单匹配时没做大小写转换,只拦了.php,但PHp就认不出来了 2、双写后缀
后端黑名单删除了php字符串,但只删除一次,双写后还能拼回去 3. 利用系统特性后缀 有些后缀在特定服务器下能解析为动态脚本: 如果黑名单只拦了.php,但没拦.php3,就能直接绕过去 白名单绕过 白名单的意思是"只允许这些后缀",其他全部拒绝。 常见白名单: jpg、png、gif、pdf、docx 等。 绕过思路: 1. %00截断(老版本PHP)
PHP 5.3之前,%00会被当作字符串结束符,后面的.jpg被截断,系统把文件当成shell.php保存并解析 2、换行截断
某些情况下换行符也会导致解析异常 3、路径穿越
如果后端直接把文件名拼到路径里,可能穿越到可执行目录 四、文件头绕过 现象: 后端用getimagesize()或检查文件的前N个字节来判断是否为合法图片。 绕过方法: 制作图片马。
或者用工具生成:
这样文件头部是正常的图片格式(JFIF、PNG),getimagesize()能正常识别,但文件末尾藏着PHP代码 如果后端只检查文件头不检查内容,这个图片马就能上传成功 常见文件头: 五、文件内容绕过 现象: 后端检查了文件内容是否有恶意代码(比如扫描<?php)。 绕过方法: 1. 短标签绕过
如果后端只扫<?php,用短标签或ASP风格就能绕过 2、编码绕过
把攻击代码变成Base64编码,规避关键字检测 六、文件名重命名绕过 现象: 后端强制重命名文件为时间戳.jpg,让你无法访问原文件名 绕过方法: 1. 找文件路径回显 如果上传后系统返回了文件保存路径,直接访问那个路径 2. 猜路径 上传shell.php,即使被重命名成20240101_123456.jpg,如果系统没有改扩展名,就生成一个图片马,用图片马的路径配合解析漏洞 3. 利用解析漏洞 如果服务器是IIS 6.0,/upload/test.asp/1.jpg这种路径会把jpg当成asp解析。名字怎么改都不影响 层层突破,是有一定难度! 吃不得苦,就不要学网安,人家也不放心交系统给你运维! ⚠️ 法律声明:以上内容仅供安全学习和授权测试使用。未经授权的漏洞利用属于违法行为,请勿对未经授权的目标进行测试 阅读原文:点击这里 该文章在 2026/8/14 18:00:28 编辑过 |
关键字查询
相关文章
正在查询... |