现在越来越多的网站都启用了 HTTPS,而启用 HTTPS 需要首先申请证书,证书签发需要指定域名,有的是通配符域名,比如 *.xazlsec.com,这类证书可以用于该域名下的所有的子域,还有些是单域名,信安之路使用的就是在阿里云申请的免费单域名证书,一年有效期,每年都可以申请,单域名证书信息中包含的只有单个子域。

查看证书信息中包含的域名也比较简单,使用浏览器打开证书的基本信息即可,如图:

接下来,我有一些开放了 443 端口的 IP,我想知道这些 IP 上运行的网站是属于哪些公司,或者说配置了哪些域名证书,改如何做?

今天来分享一个小工具,工具地址:

https://github.com/glebarez/cero

使用 go 语言编写,安装也比较简单,一条命令搞定:

go install github.com/glebarez/cero@latest

接下来指定一个目标 IP 即可获取该 IP 的 443 端口(不一定只是 HTTPS 的服务,部署证书的其他服务也可以,比如 POP3s )上部署证书的域名信息:

如果我们有大量的目标 IP 需要测试,可以将 IP 保存在一个文件中,然后使用命令:

cat host.txt | cero

获取所有 IP 指定端口的域名信息:

这种针对 IP 端口提取域名的工作已经有不少平台完成了全网信息收集,无需我们自己操作,比如 crt.sh:

这是收集目标相关子域名的一种方式,如果人家设置的证书是通配符的,那么对于我们收集子域名来说是一个障碍,因为收集到的大量域名都是 *.xazlsec.com,不太具有参考意义,不过,毕竟通配符证书比较贵,像我们这些小网站,申请点免费证书用用就可以了。

除了这个,censys 也可以搜索证书内容,如图:

随着证书的普及,这种网站收集的方式可能会越来越好用。