原文:https://websec.ca/publication/Blog/Three-Non-Web-based-XSS-Injections

前些天,我跟老友Chris Navarrete进行了一次深入的交流,当谈及为什么选择这个职业时,我给出的理由是:

我们喜欢让事物以迥异于初衷的方式运作,例如利用缓冲区溢出来改变执行流程的方向、将JavaScript代码注入到不该注入的地方。

对于大部分Web安全方面的教程来说,都是教我们如何以非常简单的方式来测试XSS漏洞 "XSS漏洞"):在反射或存储Web请求中的数据输入时,没有进行严格的安全过滤处理,从而导致反射型XSS或存储型XSS漏洞。

通常情况下,当讨论应用程序的安全性时,我们都知道“永远不要信任任何数据输入”这道圣谕;遗憾的是,并非所有开发人员都透彻地理解了“任何数据输入”的真正含义,因此,攻击者总有许多可乘之机。下面,我们举例进行说明:

PowerDNS Recursor


在我们的讨论中,Chris曾经提到曾在一个流行的DNS软件中发现了一个不同寻常的XSS漏洞,所以,我决定以它为例,让读者意识到Web并非唯一的攻击向量。

PowerDNS Recursor是一款高端、高性能的名称解析服务器,至少可以为1亿用户提供DNS解析服务。该产品的设计初衷,主要就是将其用于DNS解析服务器。

有一篇文章详细展示了如何使用命令行工具dig通过DNS查询注入XSS有效载荷的过程:

之后,我们会在Web UI中看到:

Symantec SSL Toolbox


这是三年前我在赛门铁克的SSL Certificate Tester中找到的一个漏洞,在我提交后,目前该漏洞已经得到了修复。这个免费在线服务用于从给定URL的x509 SSL证书中提取和显示相应的值,由于它完全信任这些内容,所以没有对各个字段中的数据进行安全过滤。

因此,我创建了一个SSL证书,使其不同的字段中值都为<script>alert(document.cookie);</script>,并将其安装在Web服务器的前端:

所以,这个免费服务解析该证书的时候,就会执行JavaScript代码:

RATS(Rough Auditing Tool for Security)


RATS由CERN计算机安全部门开发一款非常优秀的静态代码分析工具。我个人非常喜欢这款工具,并且已经用了许多年了。然而,该工具已经于2013年12月停止更新,估计现在已经没有人在维护该项目了,但具体情况我也拿不准。

去年的时候,由于坐火车时很无聊,为了打发时间,竟然在该软件中找到了一个XSS漏洞。RATS需要接收一个包含源代码的文件夹,并创建一个包含分析结果的HTML报告,其中还包括所分析文件的名称,因此,攻击向量也就非常明显了。我在其名称中创建了一个包含JavaScript代码的文件:

分析完成之后,注入的JavaScript代码将在报告中呈现:

如果我是一名开发人员,并且知道自己repos中的代码肯定会进行安全审查的话,那么,我肯定会在文件名中加入相关代码来“搞”安全审计人员。

小结


  • 数据输入并不一定来自HTTP请求。
  • 考虑所有可能的数据输入:从文件系统到数据库、用户名、时间戳、日志,不要放过任何可能性。
  • 开发人员不要信任任何数据输入,在后端使用这些数据之前,一定要对接收到的数据以及发回给用户的数据进行彻底的安全过滤。

感谢各位的阅读!

点击收藏 | 0 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖