IPv6 三个访问本地地址的小Tips

最近发现家里宽带支持IPv6了,这里分享三个利用IPv6访问本地地址(内网地址)的方法。

通常来说,我们用localhost来代表本地地址 127.0.0.1 。其实在IPv6中有他自己的表示方法 ip6-localhost

另外,大家应该都知道xip.io这个服务,可以将任何IP地址用域名的形式表示,用来测试SSRF漏洞比较方便。但xip.io只支持IPv4,IPv6下也有个类似的服务,ip6.name。

比如,我们可以通过 x.1.ip6.name 访问 ::1 ,也就是本地:

再分享一个Windows下有趣的冷知识吧。

UNC Path是Windows中访问共享资源的方法,前段时间代码审计圈子里还分享过PHP利用UNC、WebDAV来包含远程文件的方法: https://t.zsxq.com/fUjiMfY

而UNC Path是不支持冒号的,所以我们没法在UNC Path中使用IPv6地址: \\[fe80::2]\share 。所以微软官方想了一个歪招,他们注册了一个域名 ipv6-literal.net ,然后在Windows系统中,将IPv6地址中的冒号换成横线作为 ipv6-literal.net 子域名,如 2408-8207-1850-2a60--4c8.ipv6-literal.net

通过这个域名即可访问到对应的IPv6目标:

这就类似于微软官方推出的一个ip6.name服务。

但是,有趣的是,这里和ip6.name、xip.io有一个很大的区别,我们访问 2408-8207-1850-2a60--4c8.ipv6-literal.net 的时候,系统是不会真正发送DNS请求的,这个域名仿佛内置在Windows操作系统中,与生俱来就存在。

所以,你会发现,其实 ipv6-literal.net 这个域名微软早就已经不续费了(现在的所有者是Godaddy),但我们仍然可以直接在浏览器里通过 0--1.ipv6-literal.net 来访问到 ::1 ,也就是我本地:

所以在SSRF等漏洞的测试中,我们不妨利用一下上述三个URL技巧,尝试绕过一些限制。

另外,SSRF测试中,即使目标没有连入IPv6网络,但本地系统、内网通常是支持IPv6的,所以不是说没有IPv6外网IP的目标就不能用IPv6的技巧进行测试。