近期更新:
新 (2025-11-25):Chrome 版本 142 新增了本地网络访问(LNA)功能,可阻止 Singularity 中实现的 DNS 重绑定攻击技术。Singularity of Origin 的 来自非安全上下文的 LNA 分支实现了对非安全上下文的本地网络访问试用 的支持。这会临时允许从非安全上下文访问本地网络上的资源,从而让您在使用 Chrome 时能再试验 DNS 重绑定攻击一段时间(直至 2026 年 5 月 18 日)。
新 (2025-05-19):我们的演示站点 rebind.it 已升级以支持 IPv6 (commit 3c5ee9a)。由于 DNS 查询格式已修改,这对手动查询(在 Singularity Manager UI 之外)是一次破坏性变更。请参考如何创建对 Singularity of Origin 的手动 DNS 请求获取详细说明。此外,我们会定期添加新的攻击载荷,请务必查看。
(2023-04-27) 查看我们关于2023 年 4 月 DNS 重绑定状态的博客文章。我们描述了本地网络访问(一种新的 W3C 草案规范,目前已在一些浏览器中实现,旨在防止 DNS 重绑定),并展示了绕过这些限制的两种方法。我们还讨论了 WebRTC IP 地址泄露缓解措施以及 DNS Bit 0x20 对 DNS 重绑定攻击的影响。
(2020-03-30) 新的博客文章研究了 DoH 对 DNS 重绑定攻击的影响。TL;DR:DoH(基于 HTTPS 的 DNS)对重绑定攻击没有影响,提供商宣传的保护措施可以被绕过。
查看我们的 DEF CON 27 视频 和 BSidesLV 演示文稿 DNS 重绑定状态:攻击与防御技术及 Singularity of Origin。
Singularity of Origin 是一个执行 DNS 重绑定 攻击的工具。
它包含必要的组件,可将攻击服务器 DNS 名称的 IP 地址重新绑定到目标机器的 IP 地址,并提供攻击载荷以利用目标机器上的易受攻击的软件。
它还附带多个示例载荷,用于利用多个易受攻击的软件版本,从简单的首页抓取到远程代码执行。它旨在提供一个框架,方便利用易受 DNS 重绑定攻击的软件,并提高人们对这些攻击的工作原理及防护方法的认识。
详细文档请查看 wiki 页面。



设置 Singularity 需要一个您可以编辑自己的 DNS 记录的 DNS 域名,以及一台运行它的 Linux 服务器。 请参阅 设置 Singularity wiki 页面获取详细说明。
文档位于 wiki 页面。 以下是一些入门指南:
一个用于演示的测试实例可在 http://rebind.it:8080/manager.html 访问。
Singularity 已在以下浏览器中测试,在最佳条件下可在 3 秒内 完成攻击:
Singularity 支持以下攻击载荷:
simple-fetch-get.js):此示例载荷向根目录 ('/') 发起 GET 请求,并使用 fetch API 显示服务器响应。
此载荷的目的是作为一个请求示例,使得后续贡献尽可能简单。automatic):此载荷自动尝试检测已知服务,并使用本节中列出的其他载荷或用户开发并添加到 Singularity 的载荷对其进行利用。exposed-chrome-devtools.js):此载荷演示了 Microsoft VS Code(已在 1.19.3 版本修复)中的远程代码执行 (RCE) 漏洞。
此载荷可改造以利用在 localhost 上暴露 Chrome DevTools 的任何软件。etcd.js):此载荷从 etcd 键值存储中获取键和值。pyethapp.js):利用以太坊客户端 Pyethapp 的 Python 实现,获取所拥有的以太坊地址列表并检索第一个以太坊地址的余额。rails-console-rce.js):对 Rails Web Console 执行远程代码执行 (RCE) 攻击。aws-metadata-exfil.js):强制无头浏览器将 AWS 元数据(包括私钥)外泄到给定主机。查看载荷内容以了解设置攻击的更多详细信息。duplicati-rce.js):此载荷利用 Duplicati 备份客户端并执行远程代码执行 (RCE) 攻击。
要使此攻击生效,必须将文件 中的参数 更新为指向包含实际 RCE 载荷(一个 shell 脚本)的有效 Duplicati 备份。| 浏览器 | 操作系统 | 利用时间 | 重绑定策略 | 抓取间隔 | 目标规范 |
|---|
多个答案 (快速) | |||||
多个答案 (快速) | |||||
| Firefox | Windows 10 | ~3秒 | 多个答案 (快速) | 1秒 | 127.0.0.1 |
| Chromium | Ubuntu | ~3秒 | 多个答案 (快速) | 1秒 | 0.0.0.0 |
| Firefox | Ubuntu | ~3秒 | 多个答案 (快速) | 1秒 | 0.0.0.0 |
| Chrome | macOS | ~3秒 | 多个答案 (快速) | 1秒 | 0.0.0.0 |
| Firefox | macOS | ~3秒 | 多个答案 (快速) | 1秒 | 0.0.0.0 |
| Safari | macOS | ~3秒 | 多个答案 (快速) | 1秒 | 0.0.0.0 |
payload-duplicati-rce.htmltargetURLwebpdb.js):一个通用 RCE 载荷,用于利用通过 WebSocket 暴露的 Python 调试器 PDB。hook-and-control.js):劫持目标浏览器,并使用它们从您自己的浏览器或其他 HTTP 客户端访问无法直接访问的资源。您可以在 Singularity 管理器主机的 "soohooked" 子域(默认端口 3129)上获取已钩取的浏览器列表,例如 http://soohooked.rebinder.your.domain:3129/。要进行身份验证,请提交 Singularity 服务器启动时输出到控制台的 secret 值。jenkins-script-console.js):此载荷利用 Jenkins 脚本控制台 并显示存储的凭据。docker-api.js):此载荷利用 Docker API 并显示 Docker 主机的 /etc/shadow 文件。ollama-exfil.js):从运行 Ollama(一个用于运行和管理大型语言模型 (LLM) 的开源系统)的主机中外泄文件。请参阅博客文章。html/payloads)。