上传一个webshell到服务器

百科 2026-10-17 04:16:44 79822

凌晨两点十七分,上传我盯着终端里那个跳动的服务光标,指尖悬在回车键上。上传目标站点的服务上传接口没有过滤任何文件类型,这简直像把保险柜钥匙挂在门口。上传我上传的服务不是普通图片,而是上传一个经过混淆的PHP一句话木马——文件名是avatar_2024.php.jpg,服务端居然只检查了后缀名最后四位。服务

实际上,上传大部分漏洞都源于这种“信任错觉”。服务开发人员相信前端校验就够了,上传相信黑名单能拦住所有危险扩展名,服务却忘了.php5、上传.pht甚至.phtml都能被Apache当作PHP执行。服务我见过更蠢的上传案例:某个政府网站把上传目录设成了777权限,然后理直气壮地告诉我“我们只允许jpg”。

回过神,我敲下回车。响应包200,上传成功。接下来是找路径——这活儿靠运气,但更多靠经验。默认上传目录/uploads/,时间戳命名的文件躺在里面,我像翻垃圾堆一样扫着目录列表。突然,一个shell_20241103.php静静躺在那里,和旁边一堆图片格格不入。管理员甚至没改默认文件名,这种懒散让我既兴奋又鄙夷。

访问那个文件时,页面空白。但我知道,空白就是最好的回应。用蚁剑连接,密码是cmd,连上去的瞬间,服务器上的/etc/passwd内容在我屏幕上滚动。那种感觉就像撬开一扇没上锁的门,屋里还贴了张纸条写着“欢迎光临”。

说真的,整个过程不到四分钟。但真正让我后背发凉的,不是技术多高明,而是这个站点居然运行着政府某部门的公示系统。我随手翻了下服务器上的日志,看到上周有三十多次来自俄罗斯IP的扫描尝试,全被WAF挡了。可这个上传点,偏偏暴露在WAF规则之外——因为开发人员把文件上传模块单独部署在了另一台机器上,没走统一网关。

这事儿最讽刺的地方在于:安全团队花大价钱买了硬件防火墙,配置了复杂的访问控制策略,却没人检查过上传文件落地后是否可执行。我拔出上传的shell前,顺手在服务器上留了个标记文件——不是破坏,只是提醒管理员:你们的内网,有个后门开了一整年。

清理痕迹时我注意到,这台服务器跑的PHP版本是5.6,官方早就停止维护了。补丁打了又怎样?只要业务方坚持“能跑就别动”,漏洞就像墙角的霉斑,永远在暗处滋长。

第二天早上,我匿名给那个部门发了封邮件,附上漏洞报告和修复建议,建议他们把上传目录的PHP执行权限关掉,改用白名单校验MIME类型。三天后,我重新测试,发现接口已经返回403。他们改得倒是挺快。

可我知道,这只是无数个漏洞中的一个。下一个凌晨,还会有别的目标,别的粗心开发者,别的“就这一次”的侥幸。上传一个webshell从来不难,难的是让那些手握服务器的人明白:安全不是装个杀毒软件就完事了,而是每个细节都值得较真。

本文地址:http://www.79wt.cn/news/17a099982.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

友情链接