什么是文件上传漏洞?
因为业务功能需要,很多web站点都有文件上传的接口,比如:
1.注册时上传头像图片(比如jpg,png,gif等);
2.上传文件附件(doc,xls等);
而在后台开发时并没有对上传的文件功能进行安全考虑或者采用了有缺陷的措施,导致攻击者可以通过一些手段绕过安全措施从而上传一些恶意文件(如:一句话木马),从而通过对该恶意文件的访问来控制整个web后台。
文件上传测试流程
1,对文件上传的地方按照要求上传文件,查看返回结果(路径,提示等);
2,尝试上传不同类型的“恶意”文件,比如xx.php文件,分析结果
3,查看html源码,看是否通过js在前端做了上传限制,可以绕过;
4,尝试使用不同方式进行绕过:黑白名单绕过/MIME类型绕过/目录0x00截断绕过等;
5,猜测或者结合其他漏洞(比如敏感信息泄露等)得到木马路径,连接测试;
练习部分
打开pikachu漏洞练习的unsafe upfileupload,客户端check部分。发现网页只允许我们上传图片性质的文件。打开f12控制台查看代码,可以发现有一个叫checkfiletext的函数,查看网页源代码可见在前端有一个这样的函数管理我们上传的文件是否为图片。
写一个一句话木马,命名为system.php。新建一个空白的jpg文件也叫system。
打开brupsite的proxy抓包,在网页上传system.jpg文件,抓包到请求信息后把请求信息中的文件后缀由jpg改为php,放行请求就可上传木马文件。
成功上传一句话木马。
我们根据一句话木马的目录,打开蚁剑,用蚁剑连接。
连接成功。我们就可以用蚁剑对目标目录做一系列的数据查看。