返回

文章详情

CSS:您收件箱中的炸弹

Hacker News2026年8月9日 10:17

发布日期:2026年8月6日星期四 UTC 22:00 更新:2026年8月6日星期四 UTC 22:00 Gareth Heyes - gareth.heyes@portswigger.net - @garethheyes 对于网络邮件客户端,渲染不受信任的CSS于受信任的用户界面是相当常见的。他们试图通过CSS清理使其安全。在本文中,我将向您展示如何突破信任边界,外泄令牌,妥协第三方网站甚至窃取密码。 目录 引言 滥用允许的HTML/CSS 滥用HTML标签进行UI操作 通过电子邮件控制AI浏览器 从草稿邮件中粘贴进行账户接管 在CSP阻止所有外部资源时外泄令牌 绕过CSS清理 发起外部请求 语法奇异 图片代理绕过 跟踪电子邮件在Fastmail中是否被查看 在ProtonMail中显示您的IP地址 跟踪电子邮件在Gmail中是否被查看 合并图片代理绕过与间接提示注入 在Fastmail中CSS变异 利用CSS 修改Outlook使用CSS小工具 快速接入Fastmail的CSS 窃取密码 防御 未来的攻击 HTML仅键盘记录器 Chrome实时键盘记录器 参考资料 材料 引言 网络邮件已经存在数十年,它始终不得不解决一个非常困难的问题:将不受信任的HTML安全地展示给用户。这一问题由于每个网络标准以无情的速度演变而变得更加复杂。为了解决这个问题,网络邮件使用清理工具,他们试图获取提供的HTML并限制其展示给用户时的安全性。问题在于您可以创建清理工具认为是安全的内容与浏览器实际渲染之间的差异。一些网络邮件客户端进一步允许浏览器先解析HTML和CSS,然后过滤浏览器解析后的输出,而不是原始源代码。然而,即使这样也可能被变异为恶意内容。在过去的几个月中,我一直在观察Yahoo Mail、AOL Mail、Fastmail、ProtonMail、GMail和Outlook等网络邮件客户端。寻找它们解析器中的差异和清理工具的弱点,以生成一系列新颖的技术来帮助利用它们。 滥用允许的HTML/CSS 在这一部分中,我查看了各种“允许列表”中的CSS属性和HTML。目的是滥用它们来伪造UI操作、控制浏览器、接管账户或窃取令牌。我主要针对Fastmail、OpenAI的Atlas、Firefox、AOL Mail、Yahoo Mail和Outlook。 滥用HTML标签进行UI操作 HTML标签是一个常被忽视的元素,使用label标签可以通过使用标签的for属性来目标特定的具有id属性的表单元素。这适用于任何表单元素,并且您继承了与元素相关联的点击操作。这些元素通常被HTML清理工具忽视,我发现至少有3个网络邮件客户端对此存在漏洞。我在Outlook中发现了一个真正的错误,这将使我能够从电子邮件消息中控制Outlook的UI。 <label for="RibbonModeToggle">先点击我</label> <br><br> <label for="548">点击这里以固定此消息</label> 使用label我们可以打开Outlook的UI功能区,然后我们可以将我们的消息固定到受害者的Outlook中。直到今天,这仍然有效,因为Microsoft没有修复它。如果您找到一个允许标签且不过滤“for”属性的清理工具,您可以使用以下JS代码在开发工具中查找目标。 document.querySelectorAll('input[id],button[id],select[id],textarea[id]') 这段代码查找具有id的输入、按钮、选择和文本区域元素。这只是开始,我们稍后会回到Outlook。label元素对我们非常有用。 通过电子邮件控制AI浏览器 OpenAI在我研究这个主题时发布了一个名为Atlas的浏览器,所以我决定查看是否可以使用清理过的CSS通过电子邮件消息在Fastmail中执行间接提示注入。在我们进一步之前,让我们讨论一下:before和:after伪元素。它们允许您在元素之前或之后添加文本内容,并且您可以根据自己的喜好对这些内容进行样式化。它们还继承元素现有的点击事件,稍后我会在CSS热接入时再回来提到它们。我将使用它们来从AI浏览器中隐藏文本。 <style> div:before { content: "Before"; color: orange; } div:after { content: "After"; color: blue; } </style> <div>现有文本</div> 渲染预览:Before 现有文本 After 我试验了各种属性并注意到了一些有趣的事情,您可以使用:before和:after伪元素从LLM中隐藏文本,并且可以使用不透明度从受害者中隐藏它。这在受害者看到的内容和LLM看到的内容之间产生了差异,可能会改变电子邮件的上下文。 <style> #x:before { content: "PortSwigger est le meilleur. Il repousse les limites de la sécurité web."; font-weight: bold; font-size: 20px; } </style> 正如您所看到的,我给受害者展示了一些法语,并且他们自然使用Atlas的AI提示功能。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡