如何用短信完成XSS?

Posted FreeBuf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用短信完成XSS?相关的知识,希望对你有一定的参考价值。

Verizon Messages(Message+)是Verizon推出的一款开放跨平台信息交换应用程序,它允许用户在更多的无线设备中交换和共享信息。目前,该软件客户端支持跨平台使用,包括移动设备、桌面设备和Web端,并提升了VZW文字短信的用户体验度。 

但是这款应用除了SMS短消息之外,还提供了一些其他的额外功能,而这些功能是我非常感兴趣的。

在我安装好android端App并完成注册之后,我又登录了Web端App并开始使用这款应用。使用了一段时间之后,我发现该应用会通过Web端和移动端的接口显示包含链接的消息预览通知。这些链接支持图片和视频等资源,但我更感兴趣的是应用将会如何解析这些链接。

我感觉从Web端App着手会比较容易一些,所以我自己给自己发送了一些测试链接。

正如你所看到的,响应信息中包含UI界面预览信息图片所对应的Open Graph属性。请注意,上面的“imageUrl”实际上是Verizon的服务器所返回的代理图片(并非来自外部服务器),而这种代理技术可以让服务商更好地控制显示在用户浏览器中的图片内容。

由于预览属性“attachment”是异步获取的(内容呈现在客户端),因此我决定在这里用DOMXSS攻击向量尝试一下,因为开发人员有可能会忽略这个影响因素。接下来,我又给自己发送了一些测试链接,这一次的链接中包含一些特殊字符,我想看一看这一次WebApp将如何处理和呈现这些内容。我在测试链接的查询字符串中插入了一些单引号,此时我突然发现我貌似可以利用单引号来破坏上述锚点元素的href属性。下面是一个简单的Payload示例:

如何用短信完成XSS?

下面是网页解析的结果:

通过让锚点以內联的形式强制覆盖用户的整个屏幕,我们可以利用“onmouseover”事件在打开消息的一瞬间触发代码执行:

这也就意味着,攻击者可以利用一个精心制作的文字短信来控制目标用户的整个页面,这将导致攻击者完全控制用户的会话以及所有相关的功能,包括伪造用户身份发送和接收SMS消息。

因为我的PoC已经可以正常工作了,所以我开始分析应用的javascript源码并尝试找到导致该问题出现的原因。

注意其中“href”属性的值都被单引号包裹起来了,虽然现在也有几种方法能够解决这个问题,但在这里最合适的方法应该是使用DOMAPI。

如何用短信完成XSS?

如何用短信完成XSS?
披露

我将PoC以及问题的测试截图/视频发送给了Verizon,与往常一样,Verizon的技术人员迅速给我提供了回复,并感谢我将漏洞及时上报给他们,然后迅速修复了这个问题。

更新

貌似Verizon最终还是选择了使用DOM API来解决这个问题。

* 参考来源:randywestergren, FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

以上是关于如何用短信完成XSS?的主要内容,如果未能解决你的问题,请参考以下文章

如何用颤振的 URL_launcher 包发送短信?

如何用我的录音完成闹钟或通知

如何用阿里云ecs服务器搭建自己的个人网站

如何用Java实现短信自动发送功能

NSTouchBar:如何用“完成”按钮替换“Esc”

如何用jmeter 完成http请求