信息收集 CDN绕过方法
CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。但在安全测试过程中,若目标存在CDN服务,将会影响到后续的安全测试过程。
1、如何判断目标存在CDN服务?
利用多节点技术进行请求返回判断
http://ping.chinaz.com/
http://ping.aizhan.com/
http://ce.cloud.360.cn/
只有一个就没有使用CDN
多个就是使用了CDN
2、CDN对于安全测试有那些影响?
cdn会隐藏服务器真实的ip地址,在结点上有目标网站的缓存,使用后门等操作是对节点上的缓存进行修改,无法对目标网站的操作系统进行渗透,但cdn站点又可以理解为是目标站点的镜像站点(大多数都是静态cdn加速),拥有相同的网站架构,且cdn服务器可与站点服务器进行交互,因此sql注入,xss等漏洞的挖掘并不受太大影响。
3、目前常见的CDN绕过技术有哪些?
子域名查询:
因为有些主站是做了CDN服务而子站是没有做CDN服务,由子站IP推算出主站的真实IP
邮件服务查询
因为邮箱大部分都是内部人在访问、而且访问的量也不是很大,一般是没有做CDN。
国外地址请求
因为很多的企业没有在国外部署CDN,要是用国外的地址请求、就容易找到他的真实地址。
遗留文件、扫描全网
如PHPinfo信息当中会遗留出ip地址
黑暗引擎搜索
fofa、傻蛋、谛听、zoomeye、censys
特定文件dns历史记录,以量打量
第三方网站检索
https://get-site-ip.com/ 这个网站是国外的利用国外地址请求即可得到真实网站(参考)
#CDN真实IP地址获取后绑定指向地址
更改本地HOSTS解析指向文件
奇淫技巧
fackcdn w8fuckcdn zmap
案例演示获取真实 ip
www.xueersi.com
超级ping:
可以看到就近选择站点,查询到许多个ip,就是 www.xueersi.com 这个域名加了CDN服务
这里用子域名查找 xueersi.com
只有两个所以真实的IP就在其中,这这个网站的管理员在添加CDN服务时只对 www.xueersi.com 进行CDN,而子域名 xueersi.com 没有这个服务,在网站查询 xueersi.com 时 游览器会自动添加www即访问的是www.xueersi.com 这个域名,而CDN 一般只对流量大的域名进行添加所以这里没有对 xueersi.com 添加。
再利用第三方网站:https://get-site-ip.com/
即120.133.71.66
查看DNS解析记录:https://x.threatbook.cn
利用这个记录和第三方查询进行对比 ,也可得到真实的IP
利用邮箱
查询www.mozhe.cn的真实IP:
超级ping,对mozhe.cn和www.mozhe.cn都是:
所以这个网站对mozhe.cn和www.mozhe.cn都有CDN
第三方:
和DNS更改记录查询:
有匹配上,但是还不是特别确定
使用邮件用FoxMail打开查询源代码
这两个有可能是真实地址
在hosts文件中加入
最终发现当只有 59.83.204.156 这个IP可以访问到,所以可以视为第三方找出的最大可能为真实地址,对这个IP进行攻击可以绕过CDN
还可以通过这个网站公司的所在地根据超级ping的CDN优先就近原则来确实
通过favicon.ico的独有hash值来得到IP值
使用python脚本得到favacon.ico 的hash值
python2
import mmh3
import requests
import base64
response = requests.get('https://www.runoob.com//favicon.ico')
favicon = base64.b64encode(response.content)
hash = mmh3.hash(favicon)
print('http.favicon.hash:' + str(hash))
http.favicon.hash:-1117518375
在https://www.shodan.io/上查找
python3
from xml import etree
import requests, base64, fire
def icohash(s):
s = (base64.b64encode(s.encode('utf-8'))).decode('utf-8')
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
}
url = "https://www.fofa.so/result?qbase64=%s" % s
r = requests.get(url=url, headers=headers)
soup = etree.HTML(r.text)
result = soup.xpath('//*[@id="q"]/@value')
for i in result:
print("http.favicon.hash:%s" % i[11:-1])
print("asdf ")
if __name__ == '__main__':
fire.Fire(icohash)
使用方法:
PS D:\Python\日常脚本> python3 ico文件hash值.py D:\游览器下载\favicon.ico
总结:
网站的cdn的绕过方法第三方工具或通过邮件的方式不一定完全靠谱还是要结合一定的社会工程学才能找到真实的IP地址。