最近发现家里宽带支持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的技巧进行测试。