新版畅课禁止下载无权限PPT课件?或有漏洞可以绕过权限控制

新版畅课禁止下载无权限PPT课件?或有漏洞可以绕过权限控制

请注意,本文仅供学习交流使用。任何由用户非法操作产生的版权纠纷,将由用户自行承担。一般来说老师不开放课件的下载功能就是不想让自己的课件被传上互联网,请尊重任课老师的版权,不要在未经允许的情况下泄露老师的授课课件。

前言

近期笔者发现畅课进行了一系列的更新,其中最主要的一项就是引入了阿里云的多人协作在线文档阅览系统,这个更新直接导致了原先通过IDM下载没有下载权限的PPT课件的方法失效了(之前的下载方式可以参考这篇文章:畅课(tronclass)如何下载没有权限的视频和课件 – 哔哩哔哩 (bilibili.com))。经过研究发现,阿里云多人协作在线文档的防盗版系统还是做的比较完善的,所有PPT课件内容都是由JavaScript进行渲染显示,并且加载方式也比较奇葩,它不是直接显示PPT课件的整个文档,而是将PPT课件里面的图片等内容拆分成一个个“shapes”组份,并在本地用js脚本再将这些组分重新组合排列成PPT课件本来原有的样子,如下图所示:

图一:畅课新引入的阿里云在线文档拆分了PPT内容并在本地重新组合

这个新变化加大了下载无权限课件的难度,但是也不是完全一点漏洞都没有。既然没有下载权限,那我们可以从预览API这个地方下手,通过下载系统生成的预览文件间接达到漏洞测试目的。

教程开始

首先,我们需要获取我们所需课件的“upload_id”和“reference_id”这个参数。在电脑浏览器中找到你想下载的课件的详情页,但是不要急着打开预览。我们需要按“F12”这个按键调出浏览器开发者工具,切换到“网络”选项卡,然后勾选“保留日志”。准备好以上步骤之后,刷新一下页面,我们将会抓取这一步时浏览器发出和接收到的所有HTTP请求,它包含了该章节所有附件资源的各种信息,如下图所示。

然后,找到与“activities id”相同的这个网络请求。“activities id”是畅课系统内部标记不同教学活动的一串数字,同一门课下面每一个教学活动(一般也就是每一个章节)都有一个独一无二的“activities id”。在这里,我们可能会发现有多个名字都为“activities id”的网络请求,我们需要找出请求URL为“https://****/api/activities/{activities_id}”的请求,点击它并切换到“负载”这一栏,一直往下拉找到“uploads”并一级级地打开下级被折叠起来的内容,我们可以看到第一个附件对应的“upload_id”和”reference_id清晰地显示在这里。

在计算机系统中,通常意义上的“第一个”用的是“0”来表示,所以在图三中“uploads”下一个层级里对应的“0”其实就是指网页中的第一个附件的相关信息,“1”指的是网页中的第二个附件的相关信息,并以此类推。
图二:获取所需PPT文件的“upload_id”和“reference_id”参数
图三:在预览选项卡中找到“uploads”这一级数据,并往下打开所有折叠起来的层级,就能找到我们所需的“upload_id”和“reference_id”

一般情况下,你所选的这个教学任务里面有多少个附件,“uploads”下面就有多少条信息,从0开始排序,每条都把相关附件的各种信息包含在内了,例如上传时间、附件大小、附件名称、上传人的工号ID等等,如果有视频文件也可以通过类似方法进行下载。

接着,在学校的畅课系统访问主域名后面加上一串链接:“//api/uploads/reference/document/{这里填写你刚刚获取到的reference_id,并且把花括号去掉}/url?preview=true”。举个例子,如果学校的畅课系统域名是“https://course-online.abc.edu.cn”,而获取到的“reference_id”是123456,那么最后我们得到的链接是长这个样子的:“https://course-online.abc.edu.cn//api/uploads/reference/document/123456/url?preview=true”,将这串网址输入到浏览器中打开后,我们应该会得到下面这样的一个页面:

图四:获取畅课PPT的真正下载链接

如果“status”的值为“ready”,这说明我们的PPT可以正常下载,而“url”的值就是该PPT课件的下载链接,我们只需要复制出来并粘贴到浏览器或者任意下载器中就可以得到我们的文件了。如果“status”的值是“failed”,则说明这种方法无法正常下载你想要的课件,目前暂时没有好的解决方法。

关于“upload_id”的用途解释:一般情况下我们用“reference_id“就能下载到我们想要的文件,但是也会有一些例外,如果你发现下载到的文件不是你想要的文件,那么你可以尝试使用“upload_id”来替换“reference_id“并再次下载。如果你用“reference_id“一次就能下载到你想要的文件,那么“upload_id”对于你来说就是多余的,可以不用管他

结语

这个方法目前仍然有效,经过2023年10月的实际测试,某些“reference_id”会获取到奇奇怪怪的文件,所以读者可以使用“upload_id”碰碰运气。对此还有其他可行的方法,例如取消对话框插件+不支持阿里云文档预览的旧版畅课APP+抓包可以获得真正的下载链接,不过对于普通人来说难度较高,本文不再赘述。

本文版权归作者所有,转载搬运请注明出处。本文仅供漏洞查找及分析使用,请遵守所在地区的相关法律法规。

评论

    • 博主
      廿
      Windows Edge
      4月前
      2023-10-26 15:51:09

      这两天我会再验证一下方法是否还有效,然后更新一下文章。不过基本的思路是通过审查元素分析网页的元素获取到课件对应的附件ID,然后找一个老师开放下载权限的文件,抓取下载地址后拿前面弄到的附件ID做替换大法。不过这种方法有个缺点:就是你要下载的文件必须在你学校的畅课内部系统里面存在转码好的文件,如果提示转码失败的话暂时没办法下下来。

    • 博主
      廿
      Windows Edge
      4月前
      2023-11-05 23:27:48

      文章已更新方法,欢迎交流

      • 廿
        Cloudy
        Windows Firefox
        4月前
        2023-11-06 20:09:14

        谢谢谢谢

  1. x
    Windows Edge
    3月前
    2023-11-26 16:18:18

    idm下载法失效后一直没法下载困扰许久,实在是不太能忍受在线阅读的效果。搜索后找到文章,实测有效,感谢博主。

    • 博主
      x
      Windows Edge
      3月前
      2023-11-26 23:40:14

      不客气,很高兴能帮上忙

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇