zoukankan      html  css  js  c++  java
  • 子域名劫持

    0x00 前言

    前几个月,关于子域名劫持的安全报告数量激增,去看了几篇报告,感觉这也是一个现在较为广泛存在的问题,就写出来共享一下。

    0x01 子域名与域名解析

    先来介绍一下子域名和域名解析的一些相关知识。

    子域名

    我们通常在域名提供商购买的域名如 baidu.com,并不是只能解析一个服务器,我们可以在它的基础上增加很多的子域名,比如 test.baidu.com,smtp.baidu.com,image.baidu.com,talent.baidu.com 等等,它们可以分别解析到不同的服务器。

    域名解析

    域名解析的记录类型很多:

    • A记录:地址记录,用来指定域名的IPv4地址,如果需要将域名指向一个IP地址,就需要添加A记录。

    • CNAME: 如果需要将域名指向另一个域名,再由另一个域名提供ip地址,就需要添加CNAME记录。

    • TXT:在这里可以填写任何东西,长度限制255。绝大多数的TXT记录是用来做SPF记录(反垃圾邮件)。

    • NS:域名服务器记录,如果需要把子域名交给其他DNS服务商解析,就需要添加NS记录。

    • AAAA:用来指定主机名(或域名)对应的IPv6地址(例如:ff06:0:0:0:0:0:0:c3)记录。

    • MX:如果需要设置邮箱,让邮箱能收到邮件,就需要添加MX记录。

    • 显性URL:从一个地址301重定向到另一个地址的时候,就需要添加显性URL记录(注:DNSPod目前只支持301重定向)。

    • 隐性URL:类似于显性URL,区别在于隐性URL不会改变地址栏中的域名。

    • SRV:记录了哪台计算机提供了哪个服务。格式为:服务的名字、点、协议的类型

    我们最常用的是A记录与CNMAE记录,分别是将域名指向ipv4地址或另一个域名。

    0x02 漏洞原理

    子域名劫持产生的原因一般都是网站开启了很多子域名,这些子域名其中又有很多cname解析来解析到其他的网站,然后在某一天,这些被指向的网站废弃了,然后又没有去删除解析记录。

    这些被废弃的网站原本的域名被攻击者注册或通过其他手段获得,然后定向到攻击者的服务器并在上面部署钓鱼网站,或者劫持cookie的代码,当用户再次访问这些子域名就会解析向钓鱼网站,或者被盗取cookie而丢失账号。

    0x03 漏洞利用

    我们可以用实例来证明一下,假设现在我们有一个域名 uuzdaisuki.com ,其中有一个解析记录 test.uuzdaisuki.com 原本指向我们另外一个域名 www.sbwyfdsmjb.tk ,但是有一天,我们废弃了这个功能,将第二个域名注销了,却忘记删掉这条解析记录。

    如果这个解析被攻击者发现了(通过扫描之后的报错界面),然后攻击者抢 大专栏  子域名劫持注了这个已经被废弃的域名 sbwyfdsmjb.tk,这个时候攻击者就可以将域名解析向自己的服务器,我这里以github页面证明一下。

    可以看到,test.uuzdaisuki.com解析到了最终由攻击者可控的github页面。

    这个时候从包括第二个域名及其之后的东西全部都是我们可控了,这个时候可以用来做些什么,相信大家心里都有数了。

    我来举两个常见的例子:

    钓鱼网站

    我们在第二个域名中,使用A记录解析到一台自己的匿名服务器,然后在服务器上部署web服务,根据第一个域名所在公司的业务类型,写一个相似的前端登陆界面然后发送链接出去,就可以实施钓鱼,被攻击者一般看到这个域名的确是所登陆业务的域名,也就不会有疑心了,钓鱼成功率大大增加。

    提供一个qq邮箱的完整前后端钓鱼代码: https://github.com/echohun/tools/tree/master/%E9%92%93%E9%B1%BC/qq%E9%82%AE%E7%AE%B1%E9%92%93%E9%B1%BC%E5%89%8D%E7%AB%AF%2B%E5%90%8E%E7%AB%AF%E5%85%A8%E4%BB%A3%E7%A0%81/mailqq

    效果如下,可以达到以假乱真:

    csrf

    我们目前可以控制的子域名和对方业务属于同一个顶级域名,那同源策略就限制不了我们了,只需要在这个子域构造一个恶意的页面,跳转对这个顶级域名下其他业务发起请求,很容易造成跨站请求伪造。

    详细可以参考这个案例: https://hackerone.com/reports/172137

    cookie盗取

    同样的,既然我们控制的子域和对方业务属于同一个顶级域名,那么cookie的作用域,我们也是共享的,只需要在这个子域名增加代码将cookie保存起来,之后就可以利用cookie登陆这些被攻击用户的账号,造成cookie劫持。

    具体方法和xss进行cookie盗取一样。

    0x04 应对

    造成子域名劫持根本的原因是运维人员的粗心大意,没有及时关闭掉废弃的dns解析,只需要及时关闭,就可以避免这个问题。但是不幸的是这个问题现在广泛的存在于各个企业之中,每周都能看到非常多关于子域名劫持的安全报告。

    其他案例:

    https://hackerone.com/reports/32825

    https://hackerone.com/reports/38007

    https://hackerone.com/reports/175070

  • 相关阅读:
    使用Lua编写Wireshark插件解析KCP UDP包,解析视频RTP包
    开源自己用python封装的一个Windows GUI(UI Automation)自动化工具,支持MFC,Windows Forms,WPF,Metro,Qt
    2019 WebRtc AudioMixer混音流程
    记录一次定位视频通话 音视频卡顿的原因分析过程。
    C++标准库里自带的数值类型和字符串互相转换函数
    C++ raw string literal
    使用multiprocessing解决PyMuPDF不支持多线程加载导致的界面卡死无响应问题,及一个PyQt5实现的简易PDF阅读器例子
    使用ctypes调用系统C API函数需要注意的问题,函数参数中有指针或结构体的情况下最好不要修改argtypes
    使用python uiautomation从钉钉网页版提取公司所有联系人信息
    使用python UIAutomation从QQ2017(v8.9)群界面获取所有群成员详细资料,
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12284237.html
Copyright © 2011-2022 走看看