渗透测试学习(一)CDN检测与绕过方法

简介

CDN:Content Delivery Network,内容分发网络。CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问的网络中,在用户访问网站时,由距离最近的缓存服务器直接响应用户请求

CNAME 即:别名记录。这种记录允许您将多个名字映射到另外一个域名

在cdn中实现原理是:

给源站域名添加CNMAE,别名为加速节点的域名。当用户向源站发起请求时,dns服务器解析源站域名时会发现有CNMAE记录,这时dns服务器会向CNAME域名发起请求,请求会被调度至加速节点的域名。

检测

多地ping

使用各种多地ping服务,查询对应IP地址是否唯一,如果不唯一多半是使用了CDN

http://ping.chinaz.com/
http://ping.aizhan.com/

nslookup

使用nslookup命令解析域名,如果返回的结果又多个IP地址,多半是使用了CDN

gtfly@MacBook-Pro Desktop % nslookup baidu.com 
Server:        192.168.2.1
Address:    192.168.2.1#53

Non-authoritative answer:
Name:    baidu.com
Address: 220.181.38.148
Name:    baidu.com
Address: 39.156.69.79

server是本地设置的dns服务器,下面的answer是解析的ip地址

绕过CDN查询网站真实IP

查询历史DNS记录

查看IP与域名绑定的历史记录,可能会存在使用CDN前的记录

https://dnsdb.io/zh-cn/
https://x.threatbook.cn/ (微步在线)
https://viewdns.info/ (几十种工具)
https://securitytrails.com/
https://ipchaxun.com/
https://site.ip138.com/

除了过去的DNS记录,当前的记录也可能泄露原始服务器IP;

MX记录是一种常见的查找IP的方式,如果网站在与web相同的服务器和IP上托管自己的邮件服务器,那么原始服务器IP将在MX记录中

MX记录 MX(Mail Exchanger)记录是邮件交换记录,它指向一个邮件服务器

查询主域名

只让WWW域名使用cdn,二级域名不使用,为的是在维护网站时更方便,不用等cdn缓存

试着把目标网站的www去掉,ping一下看ip是不是变了

查询子域名

1.https://x.threatbook.cn/ (微步在线)

2.https://dnsdb.io/zh-cn/ (输入baidu.com type:A)

3.google (输入site:baidu.com -www,除www外的子域名)

4.fofa (输入domain="baidu.com")

查询SSL证书

Censys

Censys是一款用以搜索联网设备信息的新型搜索引擎,安全专家可以使用它来评估他们实现方案的安全性,而黑客则可以使用它作为前期侦查攻击目标、收集目标信息的强大利器。Censys搜索引擎能够扫描整个互联网,Censys每天都会扫描IPv4地址空间,以搜索所有联网设备并收集相关的信息,并返回一份有关资源(如设备、网站和证书)配置和部署信息的总体报告

查找网站漏洞

1.目标敏感文件泄露,phpinfo、Github信息泄露等

2.社工等手段拿到目标站点管理员在CDN的账号,在CDN的配置中找到网站真实IP

3.SSRF、XSS等漏洞

国内外主机解析域名

有些CDN可能只做了国内的路线,使用国外的主机直接访问可能就能获取到真实IP

通过网站icon的hash搜索

假如一个网站,打开只有一个登陆页面,没有其他任何信息,但发现它有一个icon图标,这里便可用shodan搜索出同样icon的网站,便可从其他使用了相同模板的网站来寻找突破口

1.输入ip查看shodan搜索的结果,点击选项View Raw Data,可以看到shodan存储的关于ip的所有信息的原始数据;找到data.0.http.favicon.hash这个字段(data后面的数字不一定是0,而且可能不存在这个字段)

2.接着搜索http.favicon.hash:hash值,便可找到所有带这个icon的网站

3.但如果shodan搜索不到目标ip,可以通过脚本来获取shodan搜索所需要的hash值:

1
2
3
4
5
6
7
import mmh3
import requests

response = requests.get('https://www.baidu.com/favicon.ico')
favicon = response.content.encode('base64')
hash = mmh3.hash(favicon)
print hash

其他工具

https://github.com/3xp10it/xcdn