隐藏服务和CloudFlare等其他类似的服务用于隐藏服务器的真实IP。一些简单的低级错误会暴露真实IP,使得攻击者可以直接攻击使用CloudFlare的网站(绕过WAF、速率限制、DDoS防护等等),这些低级错误甚至会暴露Tor隐藏服务运营者的身份。错误也取决于使用的服务或技术,并非所有方法都适用于每种技术(例如,Tor隐藏服务不存在MX记录)。
假如你在xyz123boot.com托管了一个灰色服务,服务器IP为136.23.63.44,DDoS防护由CloudFlare提供,WAF和其他一些服务保证普通用户无法直接触达该服务。你的web服务器支持SSL并且部署了证书,所以CloudFlare和服务器间的通信就像用户和CloudFlare间的通信一样,是加密的(即非Flexible SSL模式)。其他配置实际和安全关系不大,到现在为止看起来一切都没问题。
问题在于,当通过443端口访问你的IP(https://136.23.63.44:443),会暴露SSL证书。如果攻击者扫描0.0.0.0/0全网443端口,搜寻xyz123boot.com的有效证书,攻击者就会看到你的服务器真实IP。
Censys是一款扫描器。你唯一需要做的就是将以上描述的搜索关键词转化为实际的搜索查询语句。
xyz123boot.com证书:parsed.names: xyz123boot.com
只展示有效证书:tags.raw: trusted
可以使用简单的布尔逻辑在Censys上组合多个搜索参数。
搜索组合:parsed.names: xyz123boot.com and tags.raw: trusted
Censys会展示扫描出来的所有符合上述条件的证书。
逐个单击搜索结果,可以单击右侧的“Explore”打开多功能下拉列表。选择What's using this certificate?
> IPv4 Hosts
。
可以看到使用该证书的IPv4主机列表。其中某个可能就是你服务器的真实IP。
可以通过访问IP的443端口进行验证。是否重定向到了xyz123boot.com?是否直接显示了网站?
举个例子,假如你在FBI工作,想关闭一个托管在cheesecp5vaogohv.onion上提供儿童色情的隐藏服务。为此,你需要原始真实IP,才能调查该主机,也可能之后通过现金流追查到运营者。
隐藏服务配有SSL证书。查找使用相同证书的IPv4主机只需将其SHA1指纹(没有冒号)粘贴到Censys IPv4主机搜索中。用此方法可以轻松找到配置有误的web服务器。
在遭受多次攻击后,你决定使用CloudFlare。像Censys这样的由数据驱动的服务仍然会将历史A记录指向您的web服务器IP地址。
SecurityTrails平台有此功能,只需在搜索字段中输入网站域名,然后按Enter键即可。"Historical Data(历史数据)"可以在左侧栏中找到。
除了历史A记录,当前的DNS记录也可能泄漏真实服务器IP。例如,MX记录是查找IP的常用方法,如果在服务器同时托管网站和邮件服务,则服务器IP将会保存在MX记录中。
借助大数据平台,任何人都可以搜索海量数据,甚至可以通过比较HTTP header来查找源服务器。
特别是当服务器header信息非常特别,包含多种软件信息以及多种版本,找到真实IP会更容易。
此方法也不限于单参数搜索。如1.1小节中所说,你可以在Censys上组合多个参数。用此方法找到真实IP的可能性随着header中的key/value的独特性提高而提高。
比如说你与其他1500个web服务器共享服务器HTTP header,这些服务器发送相同的header key/value组合。你也用了一个新的PHP框架发送特殊的HTTP header(比如:X-Generated-Via: XYZ Framework)。目前约有400名网站管理员在生产环境中使用该框架。交叉比对最终找到三个服务器,接下来只需手动查一下,只需几秒钟,就能找到真实IP。
举个例子,在Censys上搜索匹配特定服务器header参数的服务器:80.http.get.headers.server:
。
查找使用CloudFlare的网站:80.http.get.headers.server: cloudflare
。
Tor隐藏服务或使用CloudFlare的网站也是普通的网站,简单渗透一下也可能找到真实IP。
像HTTP服务器header之类的header信息可用于挖掘当前正在运行的服务和版本可能存在的漏洞。当拿到服务器访问权限时,便可轻松找到IP。
另一种尝试思路是找到触发错误的边缘情况,报错信息可能会暴露敏感信息。这些信息可能只是IP本身,或者可用作其他本文介绍的方法中的参数。成功与否很大程度上取决于创造力,以及信息收集和关联能力。
渗透测试中,在信息收集阶段使用gobuster查找目标网站的文件和目录,可以找到日志、数据库转储/备份等数据。
另外,值得一试的是,是否可以让支撑网站的应用程序与其他服务进行交互。如果你并非在NSA(美国国家安全局)工作,只是调用API的话可能无法获得IP。但举个例子,也许你可以在网站上设置个头像,只提供图片的URL但不上传。如果其他服务下载了图片,请求可能就来自于运行这些服务的源服务器。现在IP就记录在你的日志中。
这里只是抛砖引玉,你可以尝试你常用的渗透方法,网站管理员可能会犯很多错误。
如果访问真实服务器IP也返回网站的内容,那么可以在网上搜索这些大量的内容数据。
浏览网站源码,查找特殊的代码。JavaScript中包含访问/标识key的第三方服务(例如Google Analytics、reCAPTCHA)是个比较好的着手点。
从HackTheBox网站获取的Google Analytics跟踪代码示例:
80.http.get.body:
参数可按body/source过滤Censys搜索结果。
但是,普通搜索字段有限制。你可以在Censys上申请科研访问权限,这样就可以通过Google BigQuery进行更强大的查询。
类似Censys的服务,Shodan,也支持http.html
搜索参数。
搜索举例:
https://www.shodan.io/search?query=http.html%3AUA-32023260-1
最后,找到Tor隐藏服务或类似CloudFlare的反向代理服务背后的真实IP需要对web有一定的了解,也需要一定的创造力。
x0rz写的保护web隐藏服务介绍了Tor隐藏服务运营者针对本文中提出的几种方法的应对策略。其中包含了一些失败对策,隐藏服务并没有做好OPSEC(操作安全),导致可以被安全研究人员定位。
你使用了隐藏服务还是CloudFlare?是否犯了上述错误?
还有哪些方法可以揭露真实IP?我很乐意了解其他的方法,我们可以做一个更全面丰富的信息聚合。
在发表文章后不久,CloudFlare的一位安全工程师留下了几条评论。我对CloudFlare表示赞赏,因为他们的安全团队似乎在新的文章和与安全相关的所有方面都及时做了更新,特别是关于他们自己的服务。
哦似乎有人没听说过Argo Tunnel
https://t.co/aVWJBMX4N5
— Higinio “w0rmer” Ochoa (@0x686967) 2018年8月19日
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2019-4-17 14:05
被SpearMint编辑
,原因: