[杂项]从子域名接管到Subtaker
子域名接管安全性分析及落地化
能说只是为了学Go嘛?33333
Github项目直通车
简介
子域名接管,主要原因归结于
失效dns记录未删除。譬如,一条指向
test.sec.com的CNAME记录未被删除,而test.sec.com已被注销,这个时候,如果攻击者如果注册了该域名,那么该子域名就会指向一个可控的主机或者域名上。CNAME记录是最常被利用的,但其实A记录,NS记录等其他DNS记录也存在被接管的可能。
那么子域名在实战中又能发挥哪些作用?
记得红队钓鱼时有一个钓鱼网站的操作,而往往为了更逼真,获取更高的可信度,往往将域名设置为一个和原域名很相似的域名。而如果能直接接管子域名中的CNAME记录,那岂不是很nice。所以子域名接管的利用主要就是为了高度伪造目标站点,提供高伪装性。
DNS
DNS主要就是将好记得域名解析为不好记的IP地址
从1034到1035新增了几个记录,当下共有16中DNS记录,简要介绍其中和当前分析有关的几个记录类型:
- A 记录域名指向的主机ip
- NS 域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析
- CNAME 别名记录,允许您将多个名字映射到同一台计算机
- MX 邮件交换记录,它指向一个邮件服务器
DNS记录与子域名接管
从上面几个DNS记录来看,如果是A记录,由于ip的可控性很低,虽然也存在类似的服务,例如弹性公网ip申请之类的,所以暂不考虑A记录的接管。而如果记录是指向一个域名的话,则往往可控性更高,可利用性也就更高。
Subtaker项目
有了上面的知识,现在就开始落地化了。
项目需求
- 判断记录是否被注销,可被重新申请注册
- 记录指向是否间接可控,例如github page
设计思路
- 读取字典,遍历子域名的CNAME,MX记录
- 对收集到的记录进行分别判断其是否可注册
- 继续对CNAME记录进行指纹识别,看是否为间接可控
- 输出结果
存在的问题或者关键点
- CNAME链解决(这里也许有什么CNAME->MX记录,但实战中存在的可能性较低,相反工具的性能降低,所以只对CNAME记录链进行处理)
- 线程控制实现方法:采用了信号量+锁的方式
- 高并发性的同时,怎么确保域名查询注册接口进行有效反馈?随机切换查询API+状态码判断
- 单个子域名对应多个记录,go中的net解析时被当作CNAME记录
- 奇奇怪怪的域名解析处理:CNAME解析最后一直返回同样的记录!MX记录进行CNAME记录查询解析竟然也会返回CNAME记录--》调换了MX记录和CNAME记录的判断顺序,但无疑会影响解析速度
- 部分页面例如Github是属于外网,访问速度很慢,或者干脆不能访问,这直接影响结果的准确率--》你们懂的
https://github.com/EdOverflow/can-i-take-over-xyz,这个仓库里还有很多可间接接管的指纹,但由于不常见,没有完全添加进去,感兴趣,可以自己添加进去试试。
项目展示


[杂项]从子域名接管到Subtaker的更多相关文章
- ubuntu进行子域名爆破
好记性不如烂笔头,此处记录一下,ubuntu进行子域名的爆破. 先记录一个在线的子域名爆破网址,无意中发现,很不错的网址,界面很干净,作者也很用心,很感谢. https://phpinfo.me/do ...
- ★Kali信息收集~3.子域名系列
★3.1Netcraft :子域名查询 官网:http://searchdns.netcraft.com/ 输入要查询的域名,即可得知子域名 3.2Fierce :子域名查询 概述: fierce ...
- 使用python处理子域名爆破工具subdomainsbrute结果txt
近期学习了一段时间python,结合自己的安全从业经验,越来越感觉到安全测试是一个体力活.如果没有良好的coding能力去自动化的话,无疑会把安全测试效率变得很低. 作为安全测试而言,第一步往往要通过 ...
- 浅谈ThinkPHP3.2的子域名部署和路由优化(一)
前言:建立一个网站系统,往往包含多个子网站,例如PC官网,移动端官网,后台管理,数据源自一个相同的数据库,整个架构上,从ThinkPHP来看,可以大体理解为Model(M)是一样的,Controlle ...
- 利用.htaccess绑定子域名到子目录(亲测万网可用)
http://www.xmgho.com/archives/783.html 利用.htaccess绑定域名到子目录,前提你的空间服务器必须支持apache的rewrite功能,只有这样才能使用.h ...
- 将子域名请求路由到MVC区域
写了个扩展,分享给需要的朋友. 0x01 使用方法 在mvc区域中的{xxxx}AreaRegistration.cs文件中,如ProjectsAreaRegistration.cs <pre& ...
- cookie 子域名可以读父域名中的cookie
cookie 子域名可以读父域名中的cookie 如在 .ping.com域下注入cookie,则该子域下的网页如p1.ping.com.p2.ping.com 都能读取到cookie信息 path的 ...
- Laravel 5 中间件、路由群组、子域名路由、 权限控制的基本使用方法
创建控制器: php artisan make:controller Admin/IndexController 创建Middleware: php artisan make:middleware T ...
- [LeetCode] Subdomain Visit Count 子域名访问量统计
A website domain like "discuss.leetcode.com" consists of various subdomains. At the top le ...
随机推荐
- Java设计模式——抽象工厂模式
抽象工厂模式也是创建模式,可以把它理解成创建工厂的工厂,这种模式也是我们经常使用的.在抽象工厂中的接口是用来创建工厂的,每个生成的工厂又都可以按照工厂模式创建其他对象. 举例说明: 创建Shape接口 ...
- 算法题——Cantor表
题目介绍 描述 现代数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1, 1/2 , 1/3, 1/4, 1/5, - 2/1, 2/ ...
- 2.Docker容器学习之新生入门必备基础知识
0x02 Docker 核心概念 描述:Docker的三大核心概念镜像/容器和仓库, 通过三大对象核心概念所构建的高效工作流程; 1.镜像 [image] 描述:images 类似于虚拟机镜像,借鉴了 ...
- 2021.12.06 P2511 [HAOI2008]木棍分割(动态规划)
2021.12.06 P2511 [HAOI2008]木棍分割(动态规划) https://www.luogu.com.cn/problem/P2511 题意: 有n根木棍, 第i根木棍的长度为 \( ...
- 2021.07.26 P1022 计算器的改良(字符串)
2021.07.26 P1022 计算器的改良(字符串) 改进: 如果是我出题,我一定把未知数设为ab.buh.bluesky之类的长度不只是1的字符串! 题意: 一个一元一次方程,求解. 分析: 1 ...
- Promise的then和catch如何影响状态的变化
记住两句话: 1.then正常返回resolved,里面有报错返回reject 1 const p1 = Promise.resolve().then(()=>{ 2 console.log(1 ...
- k8s入门之Service(六)
将一组pod公开为网络服务,通过service代理,可以实现负载均衡 一.ClusterIP 此方式只能在集群内访问 1.使用命令暴露已存在的pod (1)继续使用前面章节的案例,查看名称为nginx ...
- Mybaitis入门基础(一)MyBatis的概念引入及工作原理
阅读目录 一:对原生态JDBC问题的总结 二:MyBatis框架 三:mybatis入门程序 四:mybatis和Hibernate的本质区别与应用场景 五:小结 一:框架前言的那些事 良将难求 胜铁 ...
- HashMap源码理解一下?
HashMap 是一个散列桶(本质是数组+链表),散列桶就是数据结构里面的散列表,每个数组元素是一个Node节点,该节点又链接着多个节点形成一个链表,故一个数组元素 = 一个链表,利用了数组线性查找和 ...
- xpath & csv文件读写
原理:拿到网页源代码并且进行分析 关键词:etree .xpath a[@href="dapao"] a/@href text() impo ...