文件上传漏洞原理
程序员由于对上传的文件类型、内容没有进行严格限定,导致攻击者可以通过上传木马获取服务器的webshell权限(webshell:webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。)
通俗的说:用户上传了一个可执行脚本文件并通过此文件获得了执行服务器端命令的能力。
文件上传漏洞的原因
1.对文件的后缀名没有严格的限制
2.对于上传文件的MIMETYPE没有做检查
3.权限上没有对与上传的文件目录设置不可执行权限
4.web server对于 上传文件的行为没有做限制。
文件上传漏洞的危害
1.网站被控制,别人可以对文件进行增删改查等。
2.会导致服务器崩盘。
文件上传漏洞的靶机安装
upload-labs安装
下载地址
可以用git直接下载也可以直接下载压缩包。
把解压后的文件放在phpstudy的根目录下
然后在浏览器中输入网站
安装成功
JS(Javascript)前端绕过攻击
js前端绕过攻击是在网页或其他平台上对文件的过滤仅使用了前端过滤而没有使用后端过滤。
upload-labs第一关
上传一张图片上传成功
然后上传一个php文件显示
所以只能上传后缀为jpg/png/gif的图片把php的文件后缀改为jpg。然后上传并且用burp suite抓包
把jpg后缀去掉然后点击forward上传。
然后你打开upload-labs文件夹中的upload有你上传的php代码。
MIME绕过
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
常见的MIME类型
超文本标记语言文本 .html,.html text/html
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
TAR文件 .tar application/x-tar
MIME绕过原理
部分Web应用系统判定文件类型是通过content-type字段,黑客可以通过抓包,将content-type字段改为常见的图片类型从而绕过校验。
upload-labs第二关
用burpsuite抓包
改掉图中箭头的部分改为image/gif
上传成功在upload-labs中的upload文件夹中可以看到你上传的文件。
来源:oschina
链接:https://my.oschina.net/u/4302345/blog/4504558