如何获取真实IP

一.验证是否存在CDN
1.很简单,使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 网站有:
http://ping.chinaz.com/
(http://ce.cloud.360.cn/
http://ping.aizhan.com/

2.使用 nslookup 进行检测,原理同上,如果返回域名解析对应多个 IP 地址多半是使用了 CDN。
1)有 CDN 的示例:
www.163.com
服务器: public1.114dns.com
Address: 114.114.114.114
非权威应答:
名称: 163.xdwscache.ourglb0.com
Addresses: 58.223.164.86

125.75.32.252
Aliases: www.163.com
www.163.com.lxdns.com
2)无 CDN 的示例:
xiaix.me
服务器: public1.114dns.com
Address: 114.114.114.114

非权威应答:
名称: xiaix.me
Address: 192.3.168.172

二.绕过 CDN 查找网站真实 IP

1.查询历史DNS记录

查看 IP 与 域名绑定的历史记录,可能会存在真实IP信息,相关查询网站有:

    ip138查询:https://site.ip138.com/   (推荐)

    iphistory:https://viewdns.info/iphistory/  (国外)

    DNS查询:https://dnsdb.io/zh-cn/   (注册账号机制)

    微步在线:https://x.threatbook.cn/  (注册账号机制)

    SecurityTrails:https://securitytrails.com/  (注册账号机制,历史信息一般,比较适合用来快速搜集子域名)


2.查询子域名

站点管理员可能只对部分网站部署了CDN等措施,因此可以通过搜集子域名尝试发现泄露的真实IP,同时搜集子域名也有助于下一环节的信息发现

可以使用一些的在线网站或者子域名收集工具:

    站长之家:http://tool.chinaz.com/subdomain/

    SecurityTrails:https://securitytrails.com/  

    subDomainBrute:https://github.com/lijiejie/subDomainsBrute

    OneForAll:https://github.com/shmilylty/OneForAll
3.使用国外主机解析域名

一些CDN可能只做了国内的线路,所以使用国外主机可以获取到真实IP,直接使用多地Ping即可:

    站长之家:http://ping.chinaz.com/

    check-host:https://www.site24x7.com/ping-test.html

4.网络空间搜索引擎

网络空间搜索引擎会对整个互联网进行扫描,因此有可能会收录有服务器真实IP的相关信息,我们可以通过比对网站特征值以此确定真实IP,相关搜索引擎:

    zoomeye:https://www.zoomeye.org/

    fofa:https://fofa.so/

    shadon:https://www.shodan.io/

    censys:https://censys.io/

以fofa为例,只需输入:title:“网站的title关键字”或者body:“网站的body特征”就可以找出fofa收录的有这些关键字的ip域名,很多时候能获取网站的真实ip.

我们在实际的探查中可以利用的特征值基本有如下几种
①.使用SSL证书信息;证书颁发机构(CA)必须将他们发布的每个SSL/TLS证书发布到公共日志中,SSL/TLS证书通常包含域名、子域名和电子邮件地址。因此SSL/TLS证书成为了攻击者的切入点。假如你在xyz123boot.com上托管了一个服务,原始服务器IP是136.23.63.44。 而CloudFlare则会为你提供DDoS保护,Web应用程序防火墙和其他一些安全服务,以保护你的服务免受攻击。为此,你的Web服务器就必须支持SSL并具有证书,此时CloudFlare与你的服务器之间的通信,就像你和CloudFlare之间的通信一样,会被加密(即没有灵活的SSL存在)。这看起来很安全,但问题是,当你在端口443(https://136.23.63.44:443)上直接连接到IP时,SSL证书就会被暴露。

此时,如果攻击者扫描0.0.0.0/0,即整个互联网,他们就可以在端口443上获取在xyz123boot.com上的有效证书,进而获取提供给你的Web服务器IP。

如果服务器开放了443端口,我们就可以获取其暴露的SSL证书(通过它可以激活SSL协议,实现数据信息在客户端和服务器之间的加密传输,可以防止数据信息的泄露,保证了双方传递信息的安全性)信息来进行网站比对

cert="example.com"   FOFA
ssl:example.com     ZoomEye
https://censys.io/certificates?q=example.com   Censys(这里的参数值也可以是SSL证书指纹)  

在Censys中查询到了SSL证书后可以点击右侧Explore,往下找到What's using this certificate可以找到使用该证书的网站和IP使用响应头中的特征值

 

②.分析网站的HTTP响应头数据,对其中比较特殊的字段进行搜索

header="abc"   FOFA
abc    ZoomEye 直接输入
使用响应内容的特征值

 标题网络上常见的请求头

1、X-Forwarded-For

X-Forwarded-For 是一个 HTTP 扩展头部。

HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入。如今它已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用。只有在通过了 HTTP 代理或者负载均衡服务器时才会添加该项。X-Forwarded-For 请求头格式非常简单:

X-Forwarded-For: client, proxy1, proxy2

一般情况下,第一个ip为客户端真实ip,后面的为经过的代理服务器ip。

2、Proxy-Client-IP:这个一般是经过apache http服务器的请求才会有,用apache http做代理时一般会加上Proxy-Client-IP请求头,而WL- Proxy-Client-IP是他的

3、WL- Proxy-Client-IP:weblogic插件加上的请求头头

4、HTTP_CLIENT_IP:有些代理服务器会加上此请求头

5、X-Real-IP:nginx代理一般会加上此请求头

5.利用网站本身缺陷

    目标敏感文件泄露,例如:phpinfo之类的探针、GitHub信息泄露等。

    一些公用SMTP服务在发信时邮件头会带上发件者IP,因此我们可以诱使网站向我们发送邮件,以此探查真实IP。

    利用一些图片上传点,上传链接图片,促使网站访问泄露IP。

    通过社会工程学手动获取目标网站相关信息,如管理员的CDN账号等。

    利用XSS,SSRF,命令执行反弹shell等。

6.扫描全网

很多教程里有提到这种方法,扫描工具可以使用这两种:

    masscan:https://github.com/robertdavidgraham/masscan

    Zmap:https://github.com/zmap/zmap

但是只要限制对真实IP端口的连接,此种方式就是白费功夫了,还是使用搜索引擎更好


7.利用负载均衡自身的信息泄露缺陷

当服务器使用F5 LTM做负载均衡时,通过对set-cookie关键字的解码真实ip也可被获取,例如:Set-Cookie: BIGipServerpool_8.29_8030=487098378.24095.0000,先把第一小节的十进制数即487098378取出来,然后将其转为十六进制数1d08880a,接着从后至前,以此取四位数出来,也就是0a.88.08.1d,最后依次把他们转为十进制数10.136.8.29,也就是最后的真实ip。

8.网站的邮件头信息:

比如说,邮箱注册,邮箱找回密码、RSS邮件订阅等功能场景,通过网站给自己发送邮件,从而让目标主动暴露他们的真实的IP,查看邮件头信息,获取到网站的真实IP。


防范措施

对于渗透测试的防范措施其实很简单,对真实IP服务器访问流量进行限制即可,

比如使用白名单策略仅允许特定IP访问,

这样即使获取到了真实IP也无法进行下一步渗透利用

验证是否真实IP地址?
把收集到的IP地址访问,如果可以访问就是真实的。

猜你喜欢

转载自blog.csdn.net/weixin_40602516/article/details/113049116