[杂项]从子域名接管到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 ...
随机推荐
- this和super的区别和应用
A:this和super都代表什么 * this:代表当前对象的引用,谁来调用我,我就代表谁 * super:代表当前对象父类的引用B:this和super的使用区别 * a:调用成员变量 * th ...
- px,rem,em 通过媒体查询统一的代码
@media only screen and (max-width: 1080px), only screen and (max-device-width:1080px) { html,body { ...
- Python入门-变量与命名
在上一篇中,我们定义了很多变量,变量格式是啥?变量名字可以随意么?有啥命名规范么?下面细讲 变量格式 变量名称 = 常量 把常量赋值给变量的过程,就是定义变量. 定义变量 Python中的变量不需要声 ...
- Java对象和多态
Java对象和多态 (面向对象) 面向对象基础 面向对象程序设计(Object Oriented Programming) 对象基于类创建,类相当于一个模板,对象就是根据模板创建出来的实体(就像做月饼 ...
- 一键智能Mock,你值得拥有
大家好呀,我是一名苦逼的前端开发工程师,为啥苦逼呢,这不,项目下周就要上线了,但是后端还没给我接口,没有接口我就无法调试,工作停滞不前,我也只能坐着干着急. 我报告给了我的老板山哥: 老板,这后端 ...
- Vim 中进行文本替换
Vim 中进行文本替换 格式 用法 :[range]s/from/to/[flags] tips: [] 表示该内容可选 参数 from 需要替换的字符串(可以是正则表达式) to 替换后的字符串 r ...
- Linux中,MySQL的常用命令
我的博客 登录 mysql -u用户名 -p -- 然后在下面输入密码,Linux的密码不会显示出,盲打就可以 mysql -u用户名 -p密码 -- 这种方式将直接登录 开关 开启数据库 servi ...
- 聊聊Lock接口的lock()和lockInterruptible()有什么区别?
lock()和lockInterruptible()都表示获取锁,唯一区别是,当A线程调用lock()或lockInterruptible()方法获取锁没有成功而进入等待锁的状态时,若接着调用该A线程 ...
- vue build 指定环境
前言 其实很简单的东西,搜索时很是费劲,特此记录下来.网上有很多资料,但都是五花八门,特此记录 使用 项目根目录中创建环境变量使用文件 .env #所有环境都会加载 .env.development ...
- [笔记] 2-sat
定义 简单的说就是给出 \(n\) 个集合,每个集合有两个元素,已知形如选 \(a\) 则必须选 \(b\) 的若干个条件, 问是否存在从每个集合选择一个元素满足条件的方案,通常可以题目只要求任意一种 ...