修上传漏洞最费劲的地方不在补代码,在找入口。上传漏洞修复这活儿,做一半等于没做——漏掉的那个往往是最老的、最没人维护、连后台导航里都翻不到的那个页面。攻击者不用比你聪明,只要比你耐心:他翻你很多年前的上传接口,你翻你上周的更新日志,这仗就没法打。

上传漏洞修复,先翻旧账别急着打补丁
大多数人上来就升级组件、加条 WAF 规则,然后收工。真正的东西藏在历史遗留里:早年那套编辑器自带的独立上传脚本,改版时页面换掉了,脚本还躺在那儿;老小程序的 v1 接口还在响应;测试用的 upload_test.php 忘了删。这些文件扫目录的脚本随手就能扒出来,搜索引擎甚至可能还收着。最快的排查办法是翻访问日志,看那些带 upload、file、attach、kindeditor 字样的 POST 请求从哪来、打到哪去,比一行行读代码快得多。
编辑器里那层“二次上传”常被当成不存在
富文本编辑器除了点按钮选文件,还有粘贴图片、远程抓取图片、拖拽丢进去这几种。粘贴图片走的往往是另一个服务端接口,不在你后台菜单上,得去编辑器配置里找。有些老版本连扩展名都不看,直接按 Content-Type 存盘。远程抓取那路更麻烦,它本质是让服务器去请求一个地址,能顺手把内网的东西摸出来——这一条不用我细说,知道它是个口子就行。
前台用户能碰到的地方,比后台开放得多
头像、认证材料、工单截图、简历、评论区配图。后台好歹还有一道登录,前台是敞开的。头像这种最好办,收到图之后自己用 GD 或者 ImageMagick 重新生成一张缩略图,重新生成的过程顺手就把塞在图片里的东西洗掉了,落盘的也不再是原来那个文件。其他附件就得靠改名加目录不给执行权限,两条一起上。
导入、备份、装模板,三个“合法”的上传口
后台里的“导入数据”“恢复备份”“上传模板包”“安装插件”,表单上写的是导入,实际动作都是往服务器上丢文件。zip 解压那种最要命,压缩包里带路径跳出去的条目,解出来能落到网站根目录外面去,然后你都不知道它落在哪了。这类功能一般只有管理员能点,可一旦丢了个低权限账号,它就是现成的提权入口。修的时候别偷懒,解压前逐条校验条目路径,不要直接交给系统命令一把梭。
FTP 和面板文件管理器是最沉默的入口
老 FTP 账号、给外包留的测试号、面板里的在线文件管理器、WebDAV、定时备份往上推的那个目录。这些不走 HTTP,WAF 看不见,日志也未必留,出事之后最先被排除的就是它们。上传目录要是挂着脚本执行权限,别人传个文件上去直接浏览器访问就跑起来了。Nginx 上加一段 location 匹配上传目录、把解析关掉,Apache 那边用 .htaccess 或者干脆把上传目录放到独立域名、独立磁盘上,都是立刻见效的动作。FTP 侧把不用的账号停掉,权限收窄到只能写不能执行。虚拟主机这种环境限制会多一些,能不能改解析配置得先问服务商,以服务商或官方页面说明为准。
动手的时候按这个顺序来
先列清单——把站内所有能收文件的入口写下来,一个都别凭记忆。然后尽量收敛到一个统一的上传通道里做校验:扩展名白名单、按真实内容判断而不是看后缀、重命名成时间戳加随机串、限大小限数量。接着关执行、删掉不用的组件、补上上传日志。之后是验证,别只测一个点。
验证时那几个绕法值得挨个试
双扩展名、大小写混写、结尾补个空格或者点、改 Content-Type、图片里塞一段代码、压缩包路径往外跳。这些在安全圈里都是十几年前的老套路了,但老套路到今天还管用,说明补的人也没变。测试放到自己搭的环境里做,别在线上拿生产站试手。改完之后过一两周再拿老接口访问一遍,确认那扇门是真关上了,不是被挪到别的路径。
最后一步别省:把这份入口清单写进运维文档,谁改站谁看一眼。隔半年再翻一遍,你八成会发现又长出几个新的——功能迭代就是这样,加功能的人不会想着安全,收尾的人得想着。
【版权声明】:本站内容若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!