jQuery-File-文件上传-三个有不为人知的事 | 申博官网
登录
  • 欢迎进入Sunbet!
  • 如果您觉得Sunbet对你有帮助,那么赶紧使用Ctrl+D 收藏Sunbet并分享出去吧
  • 您好,这里是Sunbet!

jQuery-File-文件上传-三个有不为人知的事

Sunbet_人物事迹 申博 403次浏览 已收录 0个评论

github上第二受欢迎的JavaScript项目有两个远程命令实现bug,第三受欢迎的JavaScript项目可以通过jquery-file-upload删除任何上传的文件。后者是经过深思熟虑的,我们的平安小组成员警告他们,他们的私人内容很容易被外部人员审查,这是对用户隐私的不尊重。Detectify Crowdsource在jquery-file-upload中发现了三个安全漏洞,这些漏洞是安全研究人员提交给我们社区的,我们已经在自己的漏洞检测工具Detectify中完成了测试。正如我们的研究人员所发现的那样,在各种平台上,jquery文件上传是普遍存在的,其中许多平台的配置都不准确。以下是cve-2018-9206的poc:未经授权的任意文件上传漏洞和基于ImageTragick的远程执行漏洞。以下是三个漏洞的声明

CVE-2018-9206 未受权恣意文件上传漏洞

第一个漏洞在2015年的时刻就已被发明了。然则,在2018年的时刻才被分派cve编号,而且经由过程《Thousands of Applications were vulnerable to RCE via jQuery File Upload》才被人人所熟知。jQuery-File-Upload是一个开源的文件上传组件,在github上是星数第二多的JavaScript项目,星数第一多的项目是jQuery JavaScript。CVE-2018-9206的中心题目在于服务器设置装备摆设和php的组件手艺,不是JavaScript的题目。固然,这个题目末了成为JavaScript的漏洞让人以为有点难以想象,但若是这个是php的文件就不会让人觉得惊奇。这个漏洞依赖于Apache服务器中.htaccess的设置装备摆设。这个设置装备摆设文件会限定文件的上传或许文件的实行。

# The following directives prevent the execution of script files
# in the context of the website.
# They also force the content-type application/octet-stream and
# force browsers to display a download dialog for non-image files.
SetHandler default-handler
ForceType application/octet-stream
Header set Content-Disposition attachment

# The following unsets the forced type and Content-Disposition headers
# for known image files:
<FilesMatch "(?i)\.(gif|jpe?g|png)$">
ForceType none
Header unset Content-Disposition
</FilesMatch>

<...>

上面是jQuery-File-Upload的.htaccess文件,而且存在于9.22.0版本之前,为了提防文件上传漏洞。.htaccess能够设置MIME的范例为application/octet-stream,从而让浏览器下载服务器上的文件而不是去实行它们。这就意味着Query-File-Upload 许可恣意文件上传,然则不能在服务器上实行它们,由于它们信托web服务器对此做了搜检。修补以后,背面的版本搜检了文件的上传范例。但是题目是,在Apache的2.3.9版本中,Apache默许不再支撑.htaccess了。若是没有被明白的开启的话,这个珍爱措施是无效的。若是运用了另一种web容器的话(好比Nginx),那末基于.htaccess文件的珍爱则完整无效。攻击者能够上传恣意文件到服务器中,然后掌握这台服务器。若是攻击者上传一个后缀为php的文件,那末就能够实行它了。

————————————-

申博网络安全巴士站

申博-网络安全巴士站是一个专注于网络安全、系统安全、互联网安全、信息安全,全新视界的互联网安全新媒体。

————————————-

基于ImageTragick的长途敕令实行

jQuery-File-Upload的第二个漏洞在黑客社区中被广为所知,这个漏洞一向没有被公然,由于CVE-2018-9206的涌现,这个漏洞才被人人所存眷,以后越来越多的人最先研讨jQuery-File-Upload的代码库。由于代码运用了ImageMagic,攻击者能够运用GhostScript来实行恣意代码(CVE-2016-3714 AKA ImageTragick)。这里有个演示视频。攻击者会把下面的GhostScript生存成后缀为PNG, GIF 或许JPG的文件,然后再把他们上传到服务器中。

%!PS
userdict /setpagedevice undef
save
legal
{ null restore } stopped { pop } if
{ legal } stopped { pop } if
restore
mark /OutputFile (%pipe%ping example.com) currentdevice putdeviceprops

服务器会实行ping example.com这个指令,注重,在分歧的操作系统中GhostScript能够看着会有一些分歧,然则ping指令能够运行在大多数的情况中,如许就能够应用自动化的手腕来发明存在的漏洞。注重,这个漏洞是jQuery-File-Upload库运用的题目,不是代码自身的题目。

一个有意为之的漏洞

第三个也是末了一个漏洞是不平安的工具援用,或许称之为 IDOR vulnerability,一个站长申报过这个题目,然则issue中明白写着这是一种“有意的功用”,然则许多jQuery-File-Upload 用户不知道这一特征,也不知道这一特征的风险。这就是为何:向文件上传接口发送get要求,服务器就会返回一组json数据,内里包罗一切之前上传的文件。这就会袒露文件的称号,上传的途径,缩略图途径另有就是能够会形成文件的删除。返回报文就像下面如许:

{"files":[{"name":image.jpg","size":68549,"url":"http:\/\/example.com\/image.jpg","thumbnailUrl":"http:\/\/example.com\/thumbnail\/image.jpg","deleteUrl":"http:\/\/example.com\/server/php?file=image.jpg","deleteType":"DELETE"}

经由过程返回报文,用户就能够经由过程url字段的内容看到之前上传过的文件。也能够经由过程发送DELETE要求来删除一切的文件,发送的要求就像下面如许:

curl -X DELETE http://example.com/server/php?file=image.jpg

当我们看到网站运用jQuery-File-Upload时,就能够有意的去接见这个“有意的漏洞”了。若是这个网站是一个约会网站,用户肯定会很天然的上传本身的图片。经由过程发送如许的要求,我们就能够看到一切用户上传的图片了。另一个例子是若是这个网站经由过程上传用户的身份证或许护照来考证用户身份的话,我就能够用如许的要求来取得一切的图片。我已联络过 Sebastian Tschan了(jQuery-File-Upload的重要维护者),而且一切的网站都发明了如许的漏洞。

修复

两个最常提到的漏洞已经在稍后版本的jquery文件上传中修复。我鼓励每个人都赶紧升级到最新的版本。要修复最后一个错误,您应该严格限制文件上传接口(通常在server/ PHP /index.php中),并且任何上传的文件都不应该公开可见。您在网站上安装了jquery文件上传吗?你不确定你的网站代码是安全的。那你现在就应该来尝尝。


Sunbet|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明jQuery-File-文件上传-三个有不为人知的事
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址