[杂项]从子域名接管到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 ...
随机推荐
- 以&#开头的是什么编码?
今天遇到了一个网页时繁体的,它的title和meta信息在浏览器中显示正常,但是查看其源码是却是"最新發"这种. 在网上找了半天资料,终于搞明白了. 以在网页中&#开头的是 ...
- Reflect.has检测对象是否拥有某个属性
Reflect.has({x: 0}, 'x'); // true Reflect.has({x: 0}, 'y'); // false // returns true for properties ...
- HTML2Canvas使用总结
1:指定要生成的DOM元素id 2: 某些图片动态赋值src的url或者base64可能不会被立即渲染:可以设置一个定时器解决 3:可以调用次方法得到的canvas元素转一下格式 png/jpg 4: ...
- (动态模型类,我的独创)Django的原生ORM框架如何支持MongoDB,同时应对客户使用时随时变动字段
1.背景知识 需要开发一个系统,处理大量EXCEL表格信息,各种类别.表格标题多变,因此使用不需要预先设计数据表结构的MongoDB,即NoSQL.一是字段不固定,二是同名字段可以存储不同的字段类型. ...
- Spring Boot-@Conditional注解以及衍生注解@ConditionalOnBean
@Conditional:判断@Conditional指定的条件是否成立,如果成立才会给容器中添加组件,配置类里面的内容才会生效 我们发现有很多的自动配置类,但是这些自动配置类都有指定的条件,必须满足 ...
- drf的基本使用、APIView源码分析和CBV源码拓展
cbv源码拓展 扩展,如果我在Book视图类中重写dispatch方法 -可以实现,在get,post方法执行之前或者之后执行代码,完成类似装饰器的效果 def dispatch(self, requ ...
- Linux curl遇到错误curl: (3) Illegal characters found in URL
服务器上执行一个脚本,在linux新建的sh,把本地编辑器的内容粘贴到文件里. 结果执行的时候报错了. 问题就是 curl:(3)Illegal characters found in URL 看着一 ...
- 机器学习基础:奇异值分解(SVD)
SVD 原理 奇异值分解(Singular Value Decomposition)是线性代数中一种重要的矩阵分解,也是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐 ...
- 【面试普通人VS高手系列】Dubbo的服务请求失败怎么处理?
今天分享的面试题,几乎是90%以上的互联网公司都会问到的问题. "Dubbo的服务请求失败怎么处理"? 对于这个问题,我们来看一下普通人和高手的回答. 普通人: 嗯- 我记得, D ...
- 真实本人亲测Elasticsearch未授权访问漏洞——利用及修复【踩坑指南到脱坑!】
如要转载请注明出处谢谢: https://www.cnblogs.com/vitalemontea/p/16105490.html 1.前言 某天"发现"了个漏洞,咳咳,原本以为这 ...