Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
rbndr — 简单 DNS 重新绑定服务 | Kitploit
工具/GitHubGitHub/taviso/rbndr
漏洞分析Web应用程序漏洞利用渗透测试DNS 分析
GitHubtaviso/rbndr

rbndr

简单 DNS 重新绑定服务

查看仓库
75588238年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

rbndr

简单的 DNS 重新绑定服务

rbndr 是一个非常简单的、非标准化的名称服务器,用于测试软件是否存在 DNS 重新绑定漏洞。该服务器通过从主机名中指定的地址中随机选取一个,并以极低的 TTL 值作为答案返回,来响应查询。

https://en.wikipedia.org/wiki/DNS_rebinding

DNS 重新绑定是一种 TOCTOU(检查时间与使用时间)漏洞。如果你有一个服务错误地使用“预检”检查来修改安全属性,那么你就可以使用它。例如,考虑一个(虚构的)浏览器插件,它有一个如下所示的 API:

AllowUntrustedAccess("foobar.com");
SendArbitraryRequests("foobar.com");

而 AllowUntrustedAccess() 只是向主机发送一个预检 HTTP 请求:

GET /CanIDisableSecurity HTTP/1.1

如果服务返回 200,那么插件就允许主机页面完全访问该主机名。这可能是一个安全漏洞,因为你可以指定一个 rbndr 主机名,它会在你控制的主机和不受你控制的主机之间切换。插件可能会允许完全访问一个任意 IP 地址(例如内部服务或本地主机),即使该服务通常不会允许预检检查。

这听起来可能不切实际,但这正是 Adobe Flash、Oracle Java 以及许多其他产品过去的工作方式,而且许多其他产品至今仍然如此。

阅读 Adobe 如何在 Flash 中尝试解决此问题的文章,请访问 https://www.adobe.com/devnet/flashplayer/articles/fplayer9_security.html

对于容易受到此类攻击的软件,rbndr 是一种简单的测试方式,无需修改 /etc/hosts 或搭建自己的名称服务器。如果软件将结果仅与 主机名 关联,而不与主机名和 IP 地址关联,那么你就可以授予自己对任何 IP 地址的访问权限。

主机名的格式很简单:

<以16进制表示的IPv4>.<以16进制表示的IPv4>.rbndr.us

但如果你愿意,也可以使用这个网站从点分十进制格式进行转换:

https://lock.cmpxchg8b.com/rebinder.html

例如,要在 127.0.0.1 和 192.168.0.1 之间切换,你可以将它们编码为双字,然后使用:

7f000001.c0a80001.rbndr.us

我们来测试一下:

$ host 7f000001.c0a80001.rbndr.us
7f000001.c0a80001.rbndr.us has address 192.168.0.1
$ host 7f000001.c0a80001.rbndr.us
7f000001.c0a80001.rbndr.us has address 192.168.0.1
$ host 7f000001.c0a80001.rbndr.us
7f000001.c0a80001.rbndr.us has address 192.168.0.1
$ host 7f000001.c0a80001.rbndr.us
7f000001.c0a80001.rbndr.us has address 127.0.0.1
$ host 7f000001.c0a80001.rbndr.us
7f000001.c0a80001.rbndr.us has address 127.0.0.1
$ host 7f000001.c0a80001.rbndr.us
7f000001.c0a80001.rbndr.us has address 192.168.0.1
$ host 7f000001.c0a80001.rbndr.us
7f000001.c0a80001.rbndr.us has address 127.0.0.1
$ host 7f000001.c0a80001.rbndr.us
7f000001.c0a80001.rbndr.us has address 127.0.0.1
$ host 7f000001.c0a80001.rbndr.us
7f000001.c0a80001.rbndr.us has address 192.168.0.1

如你所见,服务器随机返回其中一个地址。你可以做类似这样的事情(伪代码):

// 持续调用 api,直到它解析为你控制的地址并且你获得访问权限
while (AllowUntrustedAccesss("7f000001.c0a80001.rbndr.us") != true)
  ;

// 访问已授权,现在等待它重新绑定
while (ConnectToPort("7f000001.c0a80001.rbndr.us", 123) != true)
 ;
 
 // 现在你可以访问 localhost:123,即使 localhost 并未选择降低安全级别。
SomethingEvil();
下载工具