[杂项]从子域名接管到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 ...
随机推荐
- MySQL 中的 SQL 语句详解
@ 目录 总结内容 1. 基本概念 2. SQL列的常用类型 3. DDL简单操作 3.1 数据库操作 3.2 表操作 4. DML操作 4.1 修改操作(UPDATE SET) 4.2 插入操作(I ...
- 关于json对象的使用小结!
json是前后端数据交互的关键.后端提供的接口中的数据几乎都是通过json来表现的,所以,需要对这个json做一些小结: 这里要推进谷歌的插件Fehelp前端助手,这个可以清楚的看到json的数据: ...
- MySql各版本
Mysql 各个版本区别: 1.MySQL Community Server 社区版本,开源免费,但不提供官方技术支持. 2.MySQL Enterprise Edition 企业版本,需付费,可以试 ...
- 帝国cms输出 自增数字 方法大全
帝国cms输出 自增数字 方法大全 1.帝国cms中调用序号 万能标签调用 使用:[!--no.num--] 标签模板: <li><span>[!--no.num--]< ...
- Blazor Bootstrap 组件库浏览器通知组件介绍
通知组件 通过浏览器API发送通知信息 , 桌面浏览器表现为右下角系统提示框弹出消息, 移动浏览器表现为弹窗或者到消息列表, blazor页面不在前台也可以通过本组件提醒用户. DEMO https: ...
- 『现学现忘』Git对象 — 15、blob对象介绍
目录 (一)Git对象的存放目录 (二)Git中对象类型 (三)blob对象 1.blob对象说明 (1)blob对象定义 (2)blob对象说明 (3)blob对象存储的方式 (4)查看blob对象 ...
- HashMap源码理解一下?
HashMap 是一个散列桶(本质是数组+链表),散列桶就是数据结构里面的散列表,每个数组元素是一个Node节点,该节点又链接着多个节点形成一个链表,故一个数组元素 = 一个链表,利用了数组线性查找和 ...
- Java 线程池四种拒绝策略
jdk1.5版本新增了 JUC 并发包,其中一个包含线程池. 四种拒绝策略: 拒绝策略类型 说明 1 ThreadPoolExecutor.AbortPolicy 默认拒绝策略,拒绝任务并抛出任务 2 ...
- 【链表】【leetCode高频】: 19. 删除链表的倒数第 N 个结点
1.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 2.算法分析 知识补充: . 分析: 题目要求是删除链表中倒数第N个结点.可以使用两个指针slow,fast. 重点是 ...
- php 迭代器的学习
在PHP中有一些预定义的类,比如迭代器类,有SPL提供.常用的几个类: Iterator------最基本的迭代器 IteratorAggregate --------可以提供一个迭代器的对象,但它本 ...