上传目录变后门温床:三招封死WebShell上传

来源:互联网 时间:2026-08-25

WebShell最常见的落地方式不是直接攻破服务器,而是通过上传功能把脚本文件传上去。图片上传、头像上传、附件上传,只要后缀没校验好,就可能变成木马的入口。

第一招是校验文件头。不能只看扩展名,jpg/png都有固定文件头,用PHP的getimagesize或者Python的imghdr可以识别真伪。

第二招是重命名文件,把用户上传的文件名换成随机字符串,不让原始文件名执行。




$info = getimagesize($_FILES['file']['tmp_name']);
if (!$info || !in_array($info[2], [IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF])) {
exit('仅允许上传图片');
}

$ext = image_type_to_extension($info[2], true);
$save_name = md5(uniqid()) . $ext;
move_uploaded_file($_FILES['file']['tmp_name'], '/upload/' . $save_name);
?>

第三招是Web服务器层直接禁止执行。上传目录只读、不执行任何脚本,木马传上来也跑不起来。这是最后一道防线,必须做。

# Nginx:上传目录禁止脚本执行

location ^~ /upload/ {

location ~ \*\.(php|php5|phtml|asp|aspx|cer|jsp)$ {

deny all;

}

}

# IIS:在处理程序映射里删除上传目录的脚本映射,或在web.config中加规则

数据来源:OWASP文件上传安全指南、Nginx官方location匹配文档

相关文章

A5创业网 版权所有