文件上传攻击原理漏洞与防护

文件上传攻击是指攻击者利用 Web应用对上传文件过滤不严的漏洞,将应用程序定义类型范围之外的文件上传到 Web 服务器,并且此类文件通常为木马,在上传成功后,攻击者即可获得当前的 webshell

前提条件:

1.目标网站具有上传功能
2. 上传的文件能够被web服务器解析执行
3. 知道文件上传到服务器后的存放路径和文件名称,否则无法执行
4.目标文件可被用户访问

上传过程防护和漏洞
在这里插入图片描述
上传检测绕过技术:

  1. 客户端JavaScript检测和绕过:
    直接对后缀名进行检测,.js或.php等。
绕过:
1.浏览器禁用js使防护失效,或在js代码中添加对应后缀名
2.如果防护在http包发出前执行,可以通过代理抓取http数据包再进行修改预期后缀。
  1. 服务器端MIME检测及绕过
    在http协议中,会利用content-type标识本次上传的内容类型。标识由客户端浏览器根据上传内容后缀名自动生成。
绕过:由于是客户端生成的标识,自然可以在客户端进行伪造。
  1. 服务器端文件扩展名检测及绕过
    因为客户端提交的内容都可以被攻击者进行篡改,所以不能信赖,需要服务器自己进行全面检测。文件扩展名检测防护,不合法直接丢弃,对不合法的用户,再次添加后缀名。
    1.文件后缀重命名,如统一为jpg。
    2.白名单过滤,只允许上传一种类型.
    3.黑名单过滤
绕过:
1.多重测试过滤文件名php5,cer,
2.是否存在大小写绕过pHP,
3.特殊文件名构造(windows)php_  4.%00截断,根据C语言终止符特性,
遇到%00,会截断前面的内容,仅保留前面的内容,忽略后面的内容,
仅存于php5.3.7版本之前,如:test.php .jpg   ,这里的.jpg前有个空格
  1. 服务端文件内容检测和绕过
    1.检测上传文件的文件头来判断当前文件格式,
    2.调用API或函数对文件进行加载测试,常见的是图像二次渲染。
    3.检测上传文件是否为图像文件内容
绕过:
1.文件内容检测一般只检测前几个(性能考虑),可以采用前20个替换,后面再插入一句话木马。
2.文件二次渲染,
	1)基于数据二义性,既是图片也包含一句话木马。
	2)对文件加载器进行溢出攻击。
  1. 文件解析攻击: 在部分低版本中间件中存在解析漏洞,导致虽然后缀名合法 ,但由于解析漏洞造成对上传文件的解析错误,导致木马可执行。
    1…htaccess攻击,获取webshell后,在.hatccess中添加未知文件,即使webshell丢失,也可以通过未知文件获取webshell,
    2.web服务器解析漏洞攻击,apache,iis,nginx均存在,具体在互联网上进行查看,解决方法是更新中间件。
    在这里插入图片描述
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:上身试试 返回首页