15、网络安全中的子域名接管与竞态条件漏洞解析

网络安全中的子域名接管与竞态条件漏洞解析

子域名接管漏洞概述

子域名接管可能带来多种安全风险。若攻击者控制了如 test.<example>.com 这样的子域名,他们可能会窃取访问该恶意子域名的目标用户的 <example>.com 饼干(cookies)。另外,即使饼干没有以这种方式被作用域限制,恶意攻击者仍可以在子域名上创建一个模仿主域名的网站。如果攻击者在子域名上设置了登录页面,就有可能诱使用户提交他们的凭证。

查找子域名接管漏洞可以通过查看网站的 DNS 记录来实现。使用 KnockPy 工具是一个很好的方法,它可以枚举子域名并搜索像 S3 这样的服务中常见的与子域名接管相关的错误消息。KnockPy 自带了一份常见子域名列表用于测试,你也可以提供自己的子域名列表。GitHub 仓库 SecLists(https://github.com/danielmiessler/SecLists/)在其众多与安全相关的列表中也列出了常见的子域名。

子域名接管案例分析
案例名称 难度 URL 来源 报告日期 赏金 漏洞原因
Ubiquiti 子域名接管 http://assets.goubiquiti.com/ https://hackerone.com/reports/109699/ 2016 年 1 月 10 日 $500 Ubiquiti 创建了 CNAME 记录指向 S3 存储桶,但未注册该存储桶或移除存储桶后未删除 CNAME 记录
Scan.me 指向 Zendesk http://support.scan.me/ https://hackerone.com/reports/114134/ 2016 年 2 月 2 日 $1000 Scan.me 所有者创建 CNAME 记录指向 Zendesk,被 Snapchat 收购后释放子域名但未删除 CNAME 记录
Shopify Windsor 子域名接管 http://windsor.shopify.com/ https://hackerone.com/reports/150374/ 2016 年 7 月 10 日 $500 Shopify 的 CNAME 记录指向的域名未被其拥有,可被注册
Snapchat Fastly 接管 http://fastly.sc-cdn.net/takeover.html https://hackerone.com/reports/154425/ 2016 年 7 月 27 日 $3000 Snapchat 域名的 CNAME 记录指向的 Fastly 子域名配置错误
Legal Robot 接管 https://api.legalrobot.com/ https://hackerone.com/reports/148770/ 2016 年 7 月 1 日 $100 Modulus 服务存在漏洞,允许通配符子域名覆盖更具体的子域名
Uber SendGrid 邮件接管 https://em.uber.com/ https://hackerone.com/reports/156536/ 2016 年 8 月 4 日 $10000 Uber 在 SendGrid 的 Inbound Parse Webhook 配置缺失

下面以 Ubiquiti 子域名接管为例详细说明:
Amazon Simple Storage(S3)是亚马逊网络服务(AWS)提供的文件托管服务。S3 上的账户是一个存储桶,你可以使用以存储桶名称开头的特殊 AWS URL 访问它。亚马逊为其存储桶 URL 使用全局命名空间,这意味着一旦有人注册了一个存储桶,其他人就不能再注册它。

在这个案例中,Ubiquiti 为 assets.goubiquiti.com 创建了 CNAME 记录并指向 S3 存储桶 uwn-images ,该存储桶可通过 uwn-images.s3.website.us-west-1.amazonaws.com 访问。但 Ubiquiti 要么没有注册该存储桶,要么在从其 AWS 账户中移除该存储桶时没有删除 CNAME 记录。因此,访问 assets.goubiquiti.com 仍会尝试从 S3 提供内容。结果,一名黑客认领了该 S3 存储桶并向 Ubiquiti 报告了该漏洞。

graph TD;
    A[用户访问 assets.goubiquiti.com] --> B[根据 CNAME 记录指向 S3 存储桶 uwn-images];
    B --> C{存储桶是否可用};
    C -- 不可用 --> D[黑客认领存储桶];
    C -- 可用 --> E[正常访问存储桶内容];
    D --> F[黑客报告漏洞];
竞态条件漏洞概述

竞态条件是指两个进程基于一个初始条件进行竞争以完成任务,但在进程执行过程中该初始条件变得无效。一个经典的例子是银行账户之间的资金转移:
1. 你的银行账户中有 500 美元,你需要将全部金额转移给一个朋友。
2. 使用你的手机,你登录到你的银行应用程序并请求将 500 美元转移给你的朋友。
3. 10 秒后,请求仍在处理中。所以你在笔记本电脑上登录到银行网站,看到你的余额仍然是 500 美元,并再次请求转移。
4. 笔记本电脑和手机上的请求在彼此的几秒钟内完成。
5. 你的银行账户现在为 0 美元。
6. 你的朋友给你发消息说他收到了 1000 美元。
7. 你刷新你的账户,你的余额仍然是 0 美元。

虽然这是一个不现实的竞态条件示例,但它代表了一般概念。第 2 步和第 3 步中转移的条件是你在账户中有足够的钱来发起转移。但你的账户余额仅在每个转移过程开始时进行验证。当转移执行时,初始条件不再有效,但两个进程仍然完成。

竞态条件案例分析 - 多次接受 HackerOne 邀请

难度:低
URL: hackerone.com/invitations/<INVITE_TOKEN>/
来源:https://hackerone.com/reports/119354/
报告日期:2016 年 2 月 28 日
赏金:Swag

在 2016 年 2 月,测试 HackerOne 时,邀请功能引起了注意。当时,HackerOne 通过电子邮件发送的邀请是唯一链接,且与收件人电子邮件地址无关。任何人都可以接受邀请,但邀请链接本应只被接受一次并由单个账户使用。

推测 HackerOne 应用程序的工作流程是:在数据库中查找令牌,根据数据库条目添加账户,然后更新令牌记录,使链接不能再次使用。这种工作流程可能导致竞态条件的原因有两个:
1. 查找记录并使用编码逻辑对记录进行操作的过程会产生延迟。查找是启动邀请过程必须满足的前置条件。如果应用程序代码运行缓慢,两个近乎即时的请求可能都会进行查找并满足执行条件。
2. 更新数据库记录会在条件和修改条件的操作之间产生延迟。例如,更新记录需要遍历数据库表以找到要更新的记录,这需要时间。

为了测试是否存在竞态条件,创建了三个 HackerOne 账户(用户 A、B 和 C)。用户 A 创建了一个程序并邀请用户 B。用户 B 收到邀请邮件并登录账户,用户 C 在另一个私密浏览器中打开相同的邀请。将两个浏览器和邀请接受按钮排列在一起,尽可能快地同时点击两个接受按钮。第一次尝试失败,第二次成功。

graph TD;
    A[用户 A 创建程序并邀请用户 B] --> B[用户 B 收到邀请邮件];
    B --> C[用户 B 登录账户准备接受邀请];
    B --> D[用户 C 在另一个浏览器打开相同邀请];
    C --> E{同时点击接受按钮};
    D --> E;
    E -- 第一次尝试 --> F[失败];
    E -- 第二次尝试 --> G[成功触发竞态条件];

通过这些案例可以看出,无论是子域名接管还是竞态条件漏洞,都需要我们在网络安全工作中保持警惕,及时发现和修复潜在的安全隐患。

网络安全中的子域名接管与竞态条件漏洞解析

子域名接管总结与防范建议

子域名接管可能仅仅是由于一个未被认领的 DNS 条目指向第三方服务而引起的。本章中的示例涉及 Heroku、Fastly、S3、Zendesk、SendGrid 以及未注册的域名等,但其他服务也可能存在此类漏洞。

可以使用诸如 KnockPy、crt.sh 和 censys.io 等工具来查找这些漏洞,同时附录 A 中也介绍了其他相关工具。在处理子域名接管时,可能需要一些额外的技巧,例如 Rosen 认领通配符域名以及 Rijal 注册自定义 Webhook。

以下是一些防范子域名接管的建议:
1. 关注 DNS 条目 :留意指向第三方服务(如 S3)的 DNS 条目,发现此类条目时,确认公司是否正确配置了该服务。
2. 持续监控 :除了对网站的 DNS 记录进行初始检查外,还可以使用像 KnockPy 这样的自动化工具持续监控条目和服务,以防公司移除子域名但忘记更新 DNS 记录。
3. 关注公司变动 :注意公司的收购情况,因为这可能会改变公司提供服务的方式。在收购过程中,一些子域名可能会被删除,如果公司不更新 DNS 条目,就可能导致子域名接管。
4. 探索第三方服务功能 :当目标网站使用第三方服务时,要探索这些服务提供的所有功能。可以参考 EdOverflow 维护的易受攻击服务列表(https://github.com/EdOverflow/can-i-take-over-xyz/),但即使列表中显示某个服务受保护,也需再次确认或寻找替代方法。
5. 提供非侵入性证明 :如果发现子域名接管漏洞,在提供漏洞证明时,最好使用非侵入性的方式,避免让被报告的公司感到尴尬。

竞态条件总结与防范建议

竞态条件在网络应用中可能会导致严重的安全问题,如多次接受邀请、资金异常转移等。在测试和开发过程中,需要特别关注那些依赖特定条件执行的操作。

以下是一些防范竞态条件的建议:
1. 关注条件依赖操作 :在进行安全测试时,注意那些依赖特定条件执行的操作,尤其是涉及数据库查找、应用逻辑处理和数据库更新的操作。
2. 优化代码逻辑 :尽量减少查找记录和更新记录过程中的延迟,避免因延迟导致竞态条件的发生。
3. 增加验证机制 :在关键操作中,增加额外的验证机制,确保操作的唯一性和正确性。例如,在邀请系统中,可以增加对邀请链接使用次数的严格验证。

综合案例对比分析
漏洞类型 案例名称 难度 影响 防范关键
子域名接管 Ubiquiti 子域名接管 黑客可控制子域名,窃取用户信息 正确配置 DNS 记录,及时更新
子域名接管 Scan.me 指向 Zendesk 子域名被恶意利用 关注公司变动,及时更新 DNS
子域名接管 Shopify Windsor 子域名接管 子域名被他人注册 定期检查子域名状态
子域名接管 Snapchat Fastly 接管 可能向用户提供恶意文件 检查服务配置,确认域名所有权
子域名接管 Legal Robot 接管 子域名被控制 关注第三方服务安全性
子域名接管 Uber SendGrid 邮件接管 可能拦截邮件 深入了解第三方服务功能,正确配置
竞态条件 多次接受 HackerOne 邀请 邀请可被多次使用 优化代码逻辑,增加验证机制
结论

网络安全是一个复杂且不断发展的领域,子域名接管和竞态条件漏洞只是其中的一部分。通过对这些漏洞的分析和案例研究,我们可以认识到在网络安全工作中需要保持高度的警惕性,不断学习和掌握新的安全技术和方法。

无论是开发者、安全测试人员还是企业管理者,都应该重视网络安全问题,采取有效的防范措施,及时发现和修复潜在的安全隐患,以保障网络系统的安全稳定运行。同时,要积极关注行业动态,不断提升自身的安全意识和技能水平,共同营造一个安全可靠的网络环境。

智慧医药系统(smart-medicine)是一款采用SpringBoot架构构建的Java Web应用程序。其界面设计简洁而富有现代感,核心特色在于融合了当前前沿的生成式人工智能技术——具体接入了阿里云的通义千问大型语言模型,以此实现智能医疗咨询功能,从而增强系统的技术先进性实用价值。该系统主要定位为医学知识查询辅助学习平台,整体功能结构清晰、易于掌握,既适合编程初学者进行技术学习,也可作为院校课程设计或毕业项目的参考实现。 中医舌诊作为传统医学的重要诊断手段,依据舌象的颜色、形状及苔质等特征来辨析生理状况病理变化。近年来,随着计算科学的进步,人工智能技术逐步渗透到这一传统领域,形成了跨学科的研究应用方向。所述的中医舌诊系统正是这一方向的实践产物,它运用AI算法对舌象进行自动化分析。系统以SpringBoot为基础框架,该框架依托Java语言,致力于简化Spring应用程序的初始化开发流程,其突出优势在于能高效构建独立、可投入生产的应用,尤其契合微服务架构云原生环境,大幅降低了开发者在配置方面的负担。 系统中整合的通义千问大语言模型属于生成式人工智能范畴,通过海量数据训练获得模拟人类语言的能力,可在限定领域内生成连贯文本,为用户提供近似专业医生的交互式咨询。该技术的引入有助于提升诊断过程的自动化水平结果一致性。 在设计体验层面,本系统强调逻辑明晰操作简便,旨在降低用户的学习门槛,尤其适合中医知识的入门教学。整体交互模式接近百科全书式查询,功能模块精炼聚焦,因而非常适用于教育场景,例如学术项目展示或毕业设计答辩。通过直观的实践界面,使用者能够更深入地理解中医舌诊的理论方法。 此外,系统界面遵循简约大气的设计原则,兼顾视觉美感交互流畅性,以提升用户的专注度使用意愿。结合AI的数据处理能力,系统可实现对舌象特征的快速提取实时分析,这不仅为传统诊断方法增添了客观量化维度,也拓展了中医知识传播的途径。借助网络平台,该系统能够突破地域限制,使更多用户便捷地获取专业化的中医健康参考,从而推动传统医学在现代社会的应用普及。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
【掺铒光纤放大器(EDFA)模型】掺铒光纤放大器(EDFA)分析模型的模拟研究(Matlab代码实现)内容概要:本文介绍了掺铒光纤放大器(EDFA)分析模型的模拟研究,并提供了基于Matlab的代码实现方案。通过对EDFA的工作原理、增益特性、噪声系数等关键性能指标进行数学建模仿真分析,帮助研究人员深入理解其在光通信系统中的作用机制。文档还列举了多个相关科研方向的技术支持内容,涵盖智能优化算法、路径规划、无人机应用、通信信号处理、电力系统管理等多个领域,展示了Matlab在科学研究工程仿真中的广泛应用能力。此外,文中附带网盘链接,便于获取完整的代码资源开发工具包。; 适合人群:具备一定光学通信或电子信息背景,熟悉Matlab编程,从事科研或工程仿真的研究生、高校教师及技术研发人员。; 使用场景及目标:①用于光通信系统中EDFA性能的理论分析仿真验证;②支持科研人员快速构建和测试EDFA模型,提升研究效率;③为教学实验、毕业设计及学术论文复现提供可靠的技术参考代码基础。; 阅读建议:建议读者结合光通信基础知识,按照文档结构逐步运行并调试Matlab代码,重点关注模型参数设置仿真结果分析,同时可利用提供的网盘资源拓展学习其他相关课题,深化对系统级仿真的理解。
基于数据驱动的Koopman库普曼算子谱分析(Matlab代码实现)内容概要:本文介绍了基于数据驱动的Koopman库普曼算子谱分析方法,并提供了相应的Matlab代码实现。该方法通过构建非线性动力系统的线性近似模型,利用观测数据提取系统的关键动特征,实现对复杂系统的有效建模预测。文中重点展示了如何运用Koopman算子理论进行谱分析,包括动分解(DMD)等相关技术的应用,适用于处理高维、非线性的时序数据。此外,文档还列举了多个相关科研方向及配套资源链接,涵盖优化算法、机器学习、信号处理、电力系统等多个领域,突出其在实际工程科研中的广泛应用价值。; 适合人群:具备一定数学基础和Matlab编程能力,从事自动化、控制工程、信号处理、动力系统建模等领域的研究生、科研人员及工程师。; 使用场景及目标:①研究非线性动力系统的数据驱动建模特性分析;②实现Koopman算子谱分析DMD方法的Matlab编程复现;③应用于电力系统、机器人控制、流体力学等领域的系统辨识预测任务; 阅读建议:此资源以Matlab代码实现为核心,强调理论实践结合,建议读者在掌握基本动力系统线性代数知识的基础上,结合所提供的代码和网盘资料进行动手实践,深入理解Koopman算子的数学原理及其在实际问题中的应用方式。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值