文件上传
概述
文件上传本身是大多数网站开放给用户的常见功能,但是如果此功能未对上传的文件进行合理的验证,就会导致上传的文件中包含恶意文件,进而导致一些预期之外的危险情况出现
危害
显而易见,攻击者可利用不完善的过滤机制上传木马之类的恶意文件,进而控制服务器
防御
1.黑白名单:限制上传文件类型,只允许上传要求格式文件
2.不要在前端验证文件格式
3.对上传的文件进行筛选,查看是否存在危险语句内容
4.对上传的图片进行完整性校验,二次渲染。
靶场实操
第一关
刷新页面,抓取返回包
找到了验证文件格式的代码,删除
上传成功
第二关
尝试了第一关的方法后,发现返回包中并不存在检验代码,所以可以尝试使用其他方法绕过检测。这里把第一关的一句话木马后缀改为jpg,然后上传,抓包。
将此处后缀改回php
放包
上传成功
第三关
二话不说,先走一波第二关的流程,结果如下:
很显然这是另一种检测方式。
我们尝试不改后缀上传,结果如下:
说明他会检测图片是否是完整的真实的。这里只好做个图片马。这里方法有很多。一个是将图片转换为hex后再末尾加上一句话木马。一个是将木马隐写到图片中。还有一种就是将木马写在hex值中间,这种方法会改变图片的部分属性,但是大多数情况下图片还是可以正常打开。
这里随便选一个方法做个木马出来,上传上去
上传成功
访问路径查看图片
图片确实存在。下载下来查看hex值
木马还在末尾躺着,说明此处未进行二次渲染,算是可利用了,至于后面连接webshell工具什么的,看个人情况搞吧