文件下载和文件上传漏洞
任意文件下载漏洞
漏洞描述
前提:下载链接为动态链接,可传参
payload: http://10.0.0.149/pikachu/vul/unsafedownload/execdownload.php?
filename=../../../index.php
payload: http://10.0.0.149/pikachu/vul/unsafedownload/execdownload.php?
filename=../../../inc/config.inc.php
payload: http://10.0.0.200/pikachu/vul/unsafedownload/execdownload.php?
filename=../../../../../../../../../../etc/passwd
漏洞的危害
1.下载源代码文件
2.下载系统文件
防御方法
1.前端隐藏文件的扩展名,后端添加文件扩展名.png
2.过滤../,将../替换为_ _/
任意文件上传漏洞
漏洞描述:
上传文件的地方,没有做过滤,可以直接上传webshell
防御方法:
1.使用白名单过滤,不使用黑名单过滤
2.获取的尺寸,来检测图片的真实性
3.使用二次渲染
4.随机生成文件名
5.使用bash64编码进行图片的存储和展示
6.使用图片和主站,动静分离
主站只放后端代码,静态资源全部存储到阿里云对象存储oss
靶场案例1:
客户端检测,浏览器检测
选中文件的时候,没有向后端发起请求,就被检测出来,文件不符号要求
查看网页源代码,发现证据
<script>
function checkFileExt(filename)
{
var flag = false; //状态
var arr = ["jpg","png","gif"];
//取出上传文件的扩展名
var index = filename.lastIndexOf(".");
var ext = filename.substr(index+1);
//比较
&nb