给定来自 Stack Overflow 答案的易受攻击的 JavaScript 片段,我如何才能便宜地找到作者复制并粘贴它的网站?

信息安全 javascript 源代码 网络扫描仪
2021-08-28 15:02:52

通常,Stack Overflow 对 JavaScript 问题的回答包含 XSS 漏洞(或其他类型的漏洞)。例如,这个关于解码 HTML 实体的问题的 420 次投票和 25 万次浏览的答案如果用于不受信任的输入,可能会导致 XSS 漏洞。

鉴于答案的受欢迎程度,我们可以有把握地假设有几十个(可能是成百上千个)网站使用这个易受攻击的代码片段。发现这些对于黑帽(其中一个站点可能恰好是值得黑客攻击的东西)和想要告知这些应用程序所有者有关漏洞的白帽感兴趣。

然而,找到这样的网站并不是一个小问题。谷歌不索引 JavaScript,所以我们不能简单地谷歌搜索片段并找到易受攻击的网站。搜索 GitHub会发现一些片段被复制和粘贴的实例,但大多数网站的来源并未公开托管在 GitHub 上。当然,我自己爬取整个互联网并搜索网络上的所有 JavaScript 是一种理论上的可能性——但我(或大多数人)没有资源去做。

那么普通人有什么实用的机制来搜索复制粘贴代码片段的地方呢?

2个回答

没有简单而强大的方法来批量扫描给定的代码。

我能想到的大多数可能性都已经写出来了,但我会尝试将它们恢复为完整的答案。此外,我的回答将适用于所有片段,而不仅仅是来自 Stack Overflow 的片段。

  • 搜索上下文:这可能是搜索源代码的最有效方式。您是否正在寻找 CMS(Wordpress、Joomla、e107)上的漏洞?他们中的大多数都有特定的上下文,例如Proudly powered by ...你可以谷歌。这似乎不适用于您链接我们的问题,但有时您还可以猜测代码将执行的上下文,这可以帮助您在传统搜索引擎上找到它们。

  • 使用源代码搜索引擎:尽管它们不如传统的搜索引擎,但您仍然可以获得一些最流行的网站的结果。它们有很多:nerdydataglobalogiqpublicwwwsearchcode ...

  • 使用代码共享平台:正如您的问题中所放弃的那样,您可以使用源代码共享平台来查找易受攻击的代码并追溯到网站。Github有一个有效的,但你也可以尝试pastebin

  • 抓取网站:这可能是最糟糕且缓慢的选择,但它确实有效。

如果您对自己的安全性更感兴趣,您还可以:

  • 使用插件:插件会查看您访问的页面的源代码,并检查它是否可以找到与您搜索的代码之一匹配的内容。

当然,还有其他强大的方法,例如使用僵尸网络、您分发的软件……但它们需要时间或非法问题,因此不在问题范围内。

  1. 与其抓取 Internet 上的所有站点,不如直接克隆我们认为有趣的单个站点的副本,然后抓取这些片段的 JS 源代码?示例 - 克隆 example.com,然后审核源。

  2. 使用https://searchcode.com/之类的服务为我们完成工作。

  3. 编写一个蜘蛛来抓取目标域。正如你所说,这可能只是一个理论——大多数人没有资源来做这件事——使用 1。