bugbounty:应用文件上传 MIME嗅探到存储型XSS | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

bugbounty:应用文件上传 MIME嗅探到存储型XSS

申博_新闻事件 申博 115次浏览 已收录 0个评论

bugbounty:运用文件上传 MIME嗅探到存储型XSS

媒介

在私有顺序上查找破绽时,我能够或许经由过程文件上传功用找到存储的XSS破绽。由于滥用IE/Edge处置惩罚文件的体式格局,我能够或许绕过文件范例搜检

并将歹意HTML文件建立为GIF。我还分解了文件上传过滤器,并在运用它时我会举行相应的思索。

第一步:FUZZ探测

当我最先检察新顺序时,我老是喜好的一件事是FUZZ一下文件上传的点。文件上传中的破绽一般会给你带来高严重性毛病,而且开发人员好像

很难珍爱它们。简朴的FUZZ这个私家顺序,我注重到它有一个联络支撑的功用。在此联络表单中,您能够上传附件。我注重到的第一件事是,

当我上传图片时,它将其上传到统一个域名下。

示例:文件上传要求

bugbounty:应用文件上传 MIME嗅探到存储型XSS

要求上传文件

示例:相应

{"result":true,"message":"/UploadFiles/redacted/redacted/3021d74f18ddasdasd50abe934f.png,"code":0}

这马上引起了我的注重。一般,存储用户信息,能够在统一地位/域名下上传的文件并非一个很好的做法,由于它能够致使异常大的破绽,包罗长途代码实行破绽。

过滤1:Bypass

接下来我们须要弄清楚,为了运用这个,是怎样上传歹意文件。我实验的第一件事就是将文件扩大名更改成.html。固然,这不起作用,我们取得:

{"result":false,"message":"That file type is not supported.","code":0}

我们能够得出结论,文件扩大名有一个过滤器。我们能够疾速找到许可哪些文件的要领是经由过程Burp Intruder爆破扩大。

SecLists有一个很好的文件扩大名单,我们能够运用。不幸的是,端点具有速度限定,在几十个要求以后,我们的IP地点会停息。

切换VPN服务器,我返来后最先手动测试一些扩大。我注重到只接收了网页运用:jpg,jpeg,png和gif。我还实验了一切能够想到的扩大,

比方nullbytes,unicode编码等。在第一个实例之前的任何事情“.”被疏忽,由于运用顺序建立了本身独一的文件名。然则,

我注重到搜检扩大中的特别字符时,个中的特别字符未被删除,但在搜检时期被疏忽。比方,运用文件名badfile.”gif被接收,然则,badfile.foo”gif 并没有。

发送以下要求:

-----------------------------6683303835495
Content-Disposition: form-data; name="upload"; filename="badfile.''gif"
Content-Type: image/png

GIF89a
@HackerOn2Wheels
-----------------------------6683303835495--

相应信息:

{"result":true,"message":"/UploadFiles/redacted/redacted/3021d74f18f649f5ac943ff50abe934f.''gif","code":0}

以是文件扩大名过滤器好像按以下体式格局事情:

1. 在末了一个`“.”`实例以后从[filename]猎取扩大名。
1. 删除一切非字母数字字符(不是a-z A-Z 0-9)。
1. 从扩大中取得的白名单(gif,png,jpg,jpeg)。
1. 若是文件扩大名在列表中,请从第一步猎取扩大名并建立文件。

我们将在一点点看到为何这是风险的。

过滤2:疏忽 Bypass

Web运用顺序也在存眷的另外一件事是文件署名,或许某些人称之为“把戏字节”。因而,若是我只是实验上传一个包罗随机数据的文件,比方:

-----------------------------6683303835495
Content-Disposition: form-data; name="upload"; filename="badfile.''gif"
Content-Type: image/png

foobar
@HackerOn2Wheels
-----------------------------6683303835495--

相应信息:

{"result":false,"message":"That file type is not supported.","code":0}

然则,文件上传过滤器异常罕见的一点是它们只检察文件署名的前4个字节。这些是文件上载功用一般在每种图象范例中查找的字节:

JPEG  - FF D8 FF DB - ÿØÿÛ 
GIF   - 47 49 46 38 - GIF8
PNG   - 89 50 4E 47 - ‰PNG

因而,只需我在文件内容中有个中一个,我们的文件就会胜利上传。然则,遗憾的是,这还不足以提防歹意文件。大多数浏览器“寻觅”现实的完全文件署名头,而其他浏览器(IE/Edge)基础不体贴。比方,关于GIF和PNG文件,署名不仅仅是4个字节。完全署名是:

GIF - 47 49 46 38 39 61 - GIF89a ( or GIF87a )
PNG - 89 50 4E 47 0D 0A 1A 0A  - .PNG....

https://en.wikipedia.org/wiki/List_of_file_signatures

我将在帖子的#TakeAways局部细致引见这一点。

胜利绕过

好吧那我们怎样现实运用这个呢?我们须要做的就是上传一个带有毛病扩大名的文件来“ 殽杂”浏览器,并将奇异的GIF8字节增加到文件的开首。

终究payload

-----------------------------6683303835495
Content-Disposition: form-data; name="upload"; filename="badfile.''gif"
Content-Type: image/png

GIF8
<html><script>alert('XSS is easy');</script></html>
-----------------------------6683303835495--

返回:

{"result":true,"message":"/UploadFiles/redacted/redacted/5060bddf6e024def9a8f5f8b9c42ba1f.''gif","code":0}

如今,若是我们 运用Microsoft Edge或Internet Explorer接见https://redacted.com/UploadFiles/redacted/redacted/5060bddf6e024def9a8f5f8b9c42ba1f." gif(以下有更多内容),我们将取得:

bugbounty:应用文件上传 MIME嗅探到存储型XSS

如何利用机器学习创建恶意软件检测系统

在这篇文章中,我们将讨论我喜欢的两个主题,这些主题是过去7年中我(私人)研究的核心要素:机器学习和恶意软件检测。 我受过相当经验性和绝对非学术性的教育,我知道一个热情的开发人员想要接近机器学习并努力理解正式定义,线性代数和诸如此类的东西。因此,我将尽可能保持这种实用性,以便即使是受过较少教育的读者也能理解并可能开始使用神经网络。 此外,大部分资源都集中在众所周知的问题上,例如MNIST数据集上的手写数字识别(机器学习的“hello world”),同时让读者想象更复杂的工程系统应该如何工作。通常是指如何处理非图像的输入。 TL; DR:我不擅长数学,MNIST很无聊,检测恶意软件更有趣:D 我还将这个用作ergo的一些新功能的示例用例,一个我和chiconara不久前开始的项目,用于自动化机器学习模型创建,数据编码,GPU培训,基准测试和大规模部署。 与这篇文章相关的源代码可以在这里找到。 重要说明:仅此项目不构成商业防病毒的有效替代品。 问题定义和数据集 传统的恶意软件检测引擎依赖于签名的使用 ——恶意软件研究人员手动选择的唯一值用以识别

TakeAways – 为何如许做?

我们起首须要问本身的是:浏览器怎样现实运作?

让我们相识浏览器怎样显现文件让我们建立一些示例文件举行测试。我建立了三个GIF文件。第一个文件只包罗四个字节的GIF

图象署名(“GIF8”),第二个文件包罗完全的GIF图象署名(“GIF89a”),第三个文件没有任何GIF文件署名,但它确切具有“.gif“扩大。

bugbounty:应用文件上传 MIME嗅探到存储型XSS

GIF只要4字节署名

bugbounty:应用文件上传 MIME嗅探到存储型XSS

带全署名的GIF

bugbounty:应用文件上传 MIME嗅探到存储型XSS

GIF没有署名但具有准确的扩大名

若是我们在Linux中运用文件东西,我们能够看到怎样辨认这些文件。

bugbounty:应用文件上传 MIME嗅探到存储型XSS

正如我们在这里看到的,运用文件前两个文件基于文件署名被辨认为GIF,包罗仅具有4字节署名的文件,而且仅具有扩大名的末了一个文件被标识

为HTML。然则,若是我们在浏览器中翻开这3个文件,我们能够看到它以分歧体式格局处置惩罚这些文件。

比方,Edge和IE好像基础不体贴GIF文件署名头。它将显现HTML而不会跳过一个节奏。

bugbounty:应用文件上传 MIME嗅探到存储型XSS

bugbounty:应用文件上传 MIME嗅探到存储型XSS

但它确切体贴文件扩大名。感谢MICROSOFT!

bugbounty:应用文件上传 MIME嗅探到存储型XSS

事实上,IE和Edge默许是“vulnerable”,称为MIME嗅探/内容嗅探。简而言之,Edge和IE将“搜检”它实验接见的文件内容,并依据它设置

内容范例。因而,当我们建立一个 “badfile.”gif”时,它将起首读取它的内容并将内容范例设置为text/html,由于我们在内容中

有符号。你能够在这里浏览更多相干信息。

这是它风趣的处所。Firefox和Chrome确切体贴扩大和署名。然则,它现实上只斟酌了完全的署名。比方,在Firefox中翻开四字节署名与完全署名将显现得异常分歧。

bugbounty:应用文件上传 MIME嗅探到存储型XSS

具有完全署名且无扩大名的文件

bugbounty:应用文件上传 MIME嗅探到存储型XSS

文件只要4字节署名,没有扩大名

正如我们从上图中看到的那样,只是简朴地具有GIF文件署名的前四个字节就不会使Firefox(也不是Chrome)将其衬着为GIF文件。

然则,较新版本的Firefox和Chrome确切会对文件内容增加预包装,如上所示,这会损坏html实行。如今能够突破这个吗?或许转变这类行动?

我还不晓得。若是你如许做,请告诉我!然则,由于我们的文本显现,我们能够会运用它来交际工程师我们的受害者禁用about:config中的

预包装功用。但是,它确切使得可运用性变得越发难题,由于它须要大批的用户交互,而且在当时能够说它将是自我XSS的状况。

总之,若是你曾面临一个图象文件上传,让你用特别字符“损坏”GIF/PNG文件扩大名或建立没有扩大名的文件,你能够经由过程MIME/内容嗅探在Edge和IE中实行JS和html 。


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

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

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