前言

类似备忘录形式记录一下,这里结合了几篇绕过CDN寻找真实IP的文章,总结一下绕过CDN查找真实的IP的方法

介绍

CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。

域名解析过程

  • 传统访问:用户访问域名-->解析IP-->访问目标主机

  • 简单模式:用户访问域名-->CDN节点-->真实IP-->目标主机

  • 360网站卫士:用户访问域名-->CDN节点(云WAF)-->真实IP-->目标主机

注:目前场面上大多数CDN服务商都提供了云WAF的配置选项,内置了多种安全防护策略,可对SQL注入、XSS跨站、Webshell上传、后门隔离保护、命令注入、恶意扫描等攻击行为进行有效拦截。

CDN配置方法

  • 1、将域名的NS记录指向CDN厂商提供的DNS服务器。

  • 2、给域名设置一个cname记录,将它指向CDN厂商提供的另一个域名。

绕过方法总结

CDN检测方法

检测

1.利用“全球Ping”快速检测目标网址是否存在CDN,如果得到的IP归属地是某CDN服务商,或者每个地区得到的IP地址都不一样则说明可能存在CDN,可用以下几个网站检测!

https://wepcc.com
http://ping.chinaz.com
https://ping.aizhan.com/
https://asm.ca.com/en/ping.php

注:全球Ping有一定机率可以得到目标服务器真实IP地址,因为CDN服务商没有某些地区CDN节点。

2.Win下使用nslookup命令进行查询,若返回域名解析结果为多个ip,多半使用了CDN,是不真实的ip。

3.使用在线网站判断

https://tools.ipip.net/cdn.php
https://www.ipip.net/ip.html
http://www.cdnplanet.com/tools/cdnfinder/

验证

1-找到IP后,扫描其c段查看相应的资产是否与目标相关

2-IP反查询:查IP的信息,whois是否与目标公司吻合

phpinfo等探针找到真实IP

通过l.php、phpinfo.php等探针类文件即可得到真实IP地址,phpinfo.php搜索SERVER_NAME。

注:我认为这样的比较少,一般有安全意识的站点,不会留有探针信息,也不失为一种方法

网站根域或子域找到真实IP

先收集站点子域名,可以通过一些工具,subDomainsBrute、Sublist3r、Google hack或者直接通过一些在线网站,这里不举列了

大部分CDN服务都是按流量进行收费的,所以一些网站管理员只给重要业务部署CDN,也有很多人忘了给“根域”部署CDN,所以我们可以尽可能的多搜集一些子域名来尝试得到真实IP地址。

注:有时多个子域名可能不会解析到同一台服务器,而是根据公司业务的重要与非重要性将子域名解析在内网或外网的不同服务器中,需要一定的分析能力。

利用邮件服务器找到真实IP

Web跟Email服务属同服务器的情况下可以通过Email来查询目标真实IP地址,但如果Web跟Email属不同服务器,那么我们通过Email得到的可能只是邮件服务器的IP地址,所以在hosts文件中即使绑定IP后无法访问目标网站也属正常现象。常见发送邮件的功能有:注册用户、找回密码等等。

域名历史解析记录找到真实IP

查询目标域名历史解析记录可能会找到部署CDN前的解析记录(真实IP地址),可用以下几个网站查询。

https://domain.8aq.net    //基于Rapid7 Open Data
https://x.threatbook.cn
https://webiplookup.com
https://viewdns.info/iphistory
https://securitytrails.com/#search
https://toolbar.netcraft.com/site_report

网络空间搜索殷勤找到真实IP

利用“FOFA网络空间安全搜索引擎”搜索网站源代码中的title标签内容即可得到真实IP地址

title="*** ***** – Multi Asset Fund"

通过这些公开的安全搜索引擎爬取得历史快照,主要得一些特征总结如下:

特有的http头部(如server类型、版本、cookie等信息)、

特定keyword(如title、css、js、url等)、

特定的IP段搜索(如fofa支持C段搜索),

有些时候爬取的时候不一定含有上面那些特征,但是我们仍然需要仔细排查。

Censys查询SSL证书找到真实IP

利用“Censys网络空间搜索引擎”搜索网站的SSL证书及HASH,在https://crt.sh上查找目标网站SSL证书的HASH,然后再用Censys搜索该HASH即可得到真实IP地址

443.https.tls.certificate.parsed.extensions.subject_alt_name.dns_names:***trade.com

自建CDN节点服务器找到真实IP

这篇笔记当时没有记录下来,其实就是MS17-010刚出来时很多机器都还没打补丁,批量过程中打了一台别人自建的CDN节点服务器,然后在里边发现很多解析到这边的IP地址,其实这些IP地址就是某些网站的真实IP,所以说这种方法也算是一种思路吧,但是得先拿到这台CDN节点服务器的权限。

注:一些免费或自建CDN流量都不会很多,可以用DDOS攻击将其流量耗尽后即可显示出真实IP地址。(不推荐)

分析目标C段来简单判断真实IP

这种方法得看目标有多少子域名吧,如果子域够多,且又有多台服务器(同段),找一个没有部署CDN的子域名,然后扫描整个C段查找与目标站Title一致的即可得到它的真实IP地址!

网站域名

真实IP地址

CDN节点IP地址

111.test.com(目标)

192.168.1.10

8.8.8.8

222.test.com

192.168.1.11

9.9.9.9

333.test.com

192.168.1.12

没有CDN

假如目标站111.test.com解析在192.168.1.10,title:90sec社区,通过查询333.test.com这个子域名得到333的真实IP地址192.168.1.12,然后扫描192.168.1.x 整个C段,扫到192.168.1.10这个IP后发现一个title为“90sec社区”的网站,域名也是111.test.com后就能确定192.168.1.10是它的真实IP地址了,虽然这种方法没有实践过,但肯定是有这种情况的,在遇到时可以尝试一下?

Zmap全网扫描及F5 LTM解码法

Zmap全网扫描:http://bobao.360.cn/learning/detail/211.html

F5 LTM:https://www.secpulse.com/archives/58730.html

如何防御CDN被绕过

这里引用Bypass师傅一文

当攻击者发现目标站点存在CDN防护的时候,会尝试通过查找站点的真实IP,从而绕过CDN防护。
我们来看一个比较常见的基于公有云的高可用架构,如下:
CDN(入口层)->WAF(应用层防护)-> SLB(负载层)-> ECS(源站) -> RDS(数据库)
即对应关系为:域名 cname CDN,CDN-→WAF,WAF-→ SLB,SLB-→ ECS。

我们重点来关注一下CDN-→WAF-→SLB-→ECS这几层服务的关系。
假设,攻击者知道SLB的真实IP地址,就可以直接访问SLB的ip地址,从而轻易绕过CDN+WAF的安全防护。

如何防止CDN被绕过呢?
这里分享一个CDN防护技巧,通过中间件配置只允许域名访问,禁止ip访问。
这样处理的话,所有直接访问站点真实IP的请求都会被拒绝,任何用户只能通过域名访问站点,通过预先设定的网络链路,从DNS→CDN→waf防护→源站,所有的访问请求都必须经过WAF检测。

Nginx参考配置:

#添加一个server,在原server里绑定域名
server {
listen 80 default;
server_name _;
return 403;
}
server {
listen 80;
server_name www.demo.com;
.........

Apache参考配置:

#在httpd.conf最后面加上
<VirtualHost 此处填写IP>
ServerName 此处填写IP
<Location />
Order Allow,Deny
Deny from all
</Location>
</VirtualHost>
<VirtualHost 此处填写IP>
DocumentRoot /var/www/html
ServerName 此处填写域名
</VirtualHost>

其实还是存在缺陷,如果绑定hosts和ip,通过本地hosts,不经过DNS解析,直接访问的话,一样可以绕过CDN。本来bypass师傅blog上说这种方式是可以阻止hosts和ip绑定,其实不行,后面公众号上改了。这里我也看了一些文章和评论,看到Charmd5的一篇文章绕过CDN的魅力一文中,看到如下评论

呢么,web端反代使用了白名单,也就是仅接受cdn过来的请求,请问如何梭

还有bypass师傅那篇文章下的公众号评论,也可以看到,如果在负载均衡的服务器上设置ip白名单,就是只允许cdn访问,但是这里也有一个难度,就是cdn的节点ip的维护和更新问题。

参考文章:

https://mp.weixin.qq.com/s/_qHGB3l58KU01tBOki5uag

https://mp.weixin.qq.com/s/7wpQXujqKk03GghPbmiwMw

https://mp.weixin.qq.com/s/dhGlp-jiQWvrHUauzJyTLQ

[转载]绕过CDN查找真实IP方法总结的更多相关文章

  1. 绕过CDN查找真实IP方法总结

    CDN的全称是Content Delivery Network,即内容分发网络.CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡.内容分发.调度等功能模 ...

  2. [信息收集]11种绕过CDN查找真实IP方法【转载】

    今天在看一些有关CDN的文章的时候,发现一篇写的蛮好的文章,故转载过来. 原文链接:https://www.cnblogs.com/qiudabai/p/9763739.html 0x01 验证是否存 ...

  3. 11种绕过CDN查找真实IP方法

    0x01 验证是否存在CDN 方法1: 很简单,使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 网站有: http://ping.chin ...

  4. 绕过CDN查找真实IP方法

    0x01 验证是否存在CDN 方法1: 很简单,使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 网站有:http://ping.china ...

  5. 绕过CDN查找真实IP的方法

    正常情况下,通过cmd命令可以快速找到域名对应IP,最常见的命令如ping.nslookup.但很多站点出于用户体验和安全的角度,使用CDN加速,将域名解析到CDN,这时候就需要绕过CDN来查找真实I ...

  6. 绕过CDN查找真实 IP 姿势总结

    返回域名解析对应多个 IP 地址,网站可能部署CDN业务,我们就需要bypass CDN,去查找真正的服务器ip地址 0x01.域名搜集 由于成本问题,可能某些厂商并不会将所有的子域名都部署 CDN, ...

  7. 绕过CDN找到真实IP

    现在很多大型企业都会使用CDN内容分发网络,因为CDN存在多个缓存服务点,而且会根据用户IP地址,将用户请求导向到最近的服务点上进行相应,所以得不到主服务站点的ip地址,总结学习一下绕过CDN找到真实 ...

  8. 绕过CDN查找网站真实ip

    在渗透测试过程中,经常会碰到网站有CDN的情况.CDN即内容分发网络,主要解决因传输距离和不同运营商节点造成的网络速度性能低下的问题.说的简单点,就是一组在不同运营商之间的对接点上的高速缓存服务器,把 ...

  9. 绕过CDN查找网站真实IP方法收集

    方法1很简单,使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 网站有: http://ping.chinaz.com/ http://pi ...

随机推荐

  1. PyTorch专栏(二)

    专栏目录: 第一章:PyTorch之简介与下载 PyTorch简介 PyTorch环境搭建 第二章:PyTorch之60min入门 PyTorch 入门 PyTorch 自动微分 PyTorch 神经 ...

  2. MFC之登录框的问题处理

    1.在做登录框的时候,把登录框做成模态对话框,并且放在 主界面程序所在窗口打开之前.也就是放在主界面类的InitInstance()里.这样做就会在弹出主界面之前被登录框弹出模态框出来阻塞住. 1.但 ...

  3. Python python 五种数据类型--元组

    # 定义一个元组 var1 = ('Hello','Python') var2 = tuple() print(type(var1)) #<class 'tuple'> print(typ ...

  4. Redis调用lua生成验证码

    场景: ​ 通过微信公众号拿验证码在APP上绑定,为了防止重复,尝试使用reids-lua的方法实现此功能 以下是 php 调用 redis.eval 方法传入的 lua 方法,当然这只是修改后的,保 ...

  5. ES6全面讲解

    写在之前.讲解了比较常用的ES6知识点,可以快速的入门.有两个比较复杂的知识点(promise,generator)则是留在了其他文章中,在里面详细讲解. 介绍 1.历史 ​ 1.ECMAScript ...

  6. iOS pch

    Xcode6 之前会在 Supporting Files 文件夹下自动生成一个"工程名-PrefixHeader.pch"的预编译头文件,pch 头文件的内容能被项目中的其他所有源 ...

  7. C# 便捷实现可迭代对象间的赋值

    目录 都是迭代,为啥我一定要用foreach 如果换成是字典呢? 关于 foreach 都是迭代,为啥我一定要用foreach ​ 问题起源于本人的一个练手的扑克牌程序:洗完牌之后要发给场上的三人. ...

  8. JS烟花案例

    html代码部分 <!DOCTYPE html> <!-- * @Descripttion: * @version: * @Author: 小小荧 * @Date: 2020-03- ...

  9. 不可被忽视的操作系统( FreeRTOS )【2】

    本文章总结基于官方FreeRTOS手册,测试系统为ESP32的IDF 4.0 本篇续上一篇<不可被忽视的操作系统( FreeRTOS )[1]> 其中上一篇主要内容为: FreeRTOS介 ...

  10. 使用 nodejs 对文件进行批量重命名

    0. 前言 从B站下载了一点视频,硕鼠自动将标题添加到了每个文件名的前面,导致文件名过长,不方面查看文件的具体内容. 虽然只有二十几个文件,但是手动删除前缀还是个不小的工作量,还有可能删除错误.考虑到 ...