目录
文件上传漏洞原理
由于网站在对文件的上传功能中没有严格校验上传文件后缀和文件类型,导致上传的文件可以被解析成可执行的脚本文件(php、jsp、xml、cer等文件),以来达到攻击者的攻击目的
常用防御方式和常用防御方式的绕过
一、前端JS检测
客户端前端在JavaScript代码中加入了对扩展名的黑白名单检查,我们可以直接禁用javasrcipt
二、MIME检测
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
常见图片MIME类型: image/gif
, image/png
, image/jpeg
, image/bmp
, image/webp
, image/x-icon
, image/vnd.microsoft.icon
服务端代码是通过Content-Type的值来判断文件的类型,这样我们可以直接对文件的Content-Type进行修改来绕过此防御方式。
以PIKACHU平台漏洞为例:
利用BP直接修改Content-Type值来绕过
三、白名单检测
要求只能是特定扩展名的文件才能上传
%00截断
在url中%00表示ascll码的0 ,而ascii码的0,表示字符串结束,所以当url中出现%00时就会认为读取已结束
注:需满足 php 版本<5.3.4 才有可能存在此漏洞