【网络安全一百问-36】件上传漏洞的成因是什么?

请先 登录 后评论

3 个回答

u52663873380211
  • 服务器配置不当

    在不需要上传文件的情况下可导致任意文件上传,参考 HTTP 请求方法 PUT。

  • 本地文件上传被绕过

    只在客户端浏览器上做了文件限制而没有在远程的服务器上做限制,只需要修改上传时发送的数据包就可以轻松绕过上传限制 。

    a. 抓包看,禁用 JS 插件(这个插件用作文件上传本地验证),现上传一个恶意文件,如果是本地限制,执行过滤的就是浏览器的 js 插件,禁用后就能上传恶意文件

    b. 如果是服务器限制,先把恶意文件传给服务器,然后服务器再返回过滤结果,这个时候单单禁用本地的 js 插件没什么用

  • 过滤不严或被绕过

    有些网站使用上传黑名单过滤掉一些可执行文件脚本的后缀,但是黑名单不全或者被绕过,也可导致恶意文件上传。如果使用白名单,仅允许名单内所包含的文件格式上传会更加安全。

  • 文件解析漏洞导致文件执行

    解析漏洞是指 web 服务器因对 http 请求处理不当导致将非可执行的脚本,文件等当做可执行的脚本,文件等执行。该漏洞一般配合服务器的文件上传功能使用,以获取服务器的权限。

  • 路径截断

    上传的文件中使用一些特殊的符号,文件被上传到服务器时路径被这些符号截断,从而控制文件上传的路径。

请先 登录 后评论
TaLent_h

1、文件上传没有对后缀名进行黑名单或者是白名单的判断拦截

2、文件上传后对文件路径进行回显

3、上传的文件能够被服务器执行

请先 登录 后评论
niki

在文件上传的功能处,若服务端脚本语言未对上传的文件进行严格验证和过滤,导致恶意用户上传恶意的脚本文件时,就有可能获取执行服务端命令的能力,这就是文件上传漏洞。

1.前端检测:
主要是通过javascript代码进行检测,非常容易进行绕过。
2.后端检测_后缀名检测漏洞:
通常是针对文件的扩展名后缀进行检测,主要是通过黑白名单进行过滤检测,如果不符全过滤规则则不允许上传。
3.白名单:
白名单检测:一般有个专门的 whitelist 文件,里面会包含的正常文件:Jpg png GIF   
4.后端检测_00截断:
虽然web应用做了校验,但是由于文件上传后的路径用户可以控制,攻击者可以利用手动添加字符串标识符0X00的方式来将后面的拼接的内容进行截断,导致后面的内容无效,而且后面的内容又可以帮助我们绕过黑白名单的检测。
5.后端检测_MIME检测:
1. 什么是MIME:
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。
6.后端检测_MIME检测:
1. 什么是MIME:
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。

部分Web应用系统判定文件类型是通过content-type字段,黑客可以通过抓包,将content-type字段改为常见的图片类型,如image/gif,从而绕过校验
7.后端检测_文件头检测漏洞:
原理:
在每一个文件(包括图片,视频或其他的非ASCII文件)的开头(十六进制表示)实际上都有一片区域来显示这个文件的实际用法,这就是文件头标志。我们可以通过16进制编辑器打开文件,添加服务器允许的文件头以绕过检测。
8.后端检测_内容检测图片马绕过:
一般文件内容验证使用getimagesize函数检测,会判断文件是否是一个有效的文件图片,如果是,则允许上传,否则的话不允许上传。
    本实验就是将一句话木马插入到一个[合法]的图片文件当中,然后用webshell管理工具进行远程连接。
9.解析漏洞:
.htaccess文件解析漏洞
    web具体应用没有禁止.htaccess文件的上传,同时web服务器提供商允许用户上传自定义的.htaccess文件。
Apache解析漏洞:
     Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。比如test.php.a.b的“.a”和“.b”这两种后缀是apache不可识别解析,apache就会把test.php.a.b解析成test.php。
IIS6.0解析漏洞:
    IIS6.0解析漏洞分两种:
    1、目录解析: 以xx.asp命名的文件夹里的文件都将会被当成ASP文件执行。
    2、文件解析: xx.asp;.jpg 像这种畸形文件名在;后面的直接被忽略,也就是说当成xx.asp文件执行。
IIS7.0 | IIS7.5 | Nginx的解析漏洞:
     Nginx拿到文件路径(更专业的说法是URI)/test.jpg/test.php后,一看后缀是.php,便认为该文件是php文件,转交给php去处理。php一看/test.jpg/test.php不存在,便删去最后的/test.php,又看/test.jpg存在,便把/test.jpg当成要执行的文件了,又因为后缀为.jpg,php认为这不是php文件,于是返回Access denied。   这其中涉及到php的一个选项:cgi.fix_pathinfo,该值默认为1,表示开启。开启这一选项PHP可以对文件路径进行修理。

请先 登录 后评论

相似问题