雨课堂考试异常检测绕过分析

雨课堂考试异常检测绕过分析

刚好前几天有一场考试,之前就听说过雨课堂好像搞了作弊检测什么的。但之前没有测试账号,但是考试的时候又不敢直接去开控制台调试。所以我就用Charles做了一份流量镜像,考完试之后再复盘分析的。分析的过程中还顺手挖到了雨课堂的存储XSS,哈哈。

先说结论:雨课堂的这个JS真的很辣鸡,绕过思路也很简单。

下面是我格式化之后的完整js,感兴趣的小伙伴可以自行研究一下。

https://zgao.top/download/yuketang.js

用的是Vue,直接分析关键部分的JS代码。

异常检测仅有定义的onchange这么一个方法就没了,而且是基于document.hidden来判断的,来看它的定义。

document.hidden属性:

bool型,表示页面是否处于隐藏状态。页面隐藏包括页面在后台标签页或者浏览器最小化。

那么哪些情况下会触发呢?

  • 浏览器最小化。
  • 浏览器没有最小化,但是当前页面切换到了其他标签页。
  • 浏览器将要卸载(unload)页面。
  • 操作系统触发锁屏屏幕。

上面的代码中有两层判断,虽然无法从代码中看出e.onlineProctor做了哪些操作,但是只要触发了document.hidden的值为true就会截图上传。所以为了不给监考老师留下任何证据,我们可以拦截掉异常上报的请求。

跟进e.uploadUnnormal(12)分析代码。

uploadUnnormal: function(t) {
	var e = this;
	this.$axios.post(API.feed_add, {
		exam_id: this.exam_id,
		action: t
	}).then(function(t) {}).catch(function(t) {
		e.$message.error("发生错误")
	})
}

其中axios就是一个http库,就是用来发送请求的。参数t的值为12,而API.feed_add的定义并在当前js,不过分析后发现是/online_proctor/stu/monitor/feed/add这个路径。也就是切换标签页会post一个action为12的包给后端。

总结:

只要不最小化浏览器以及在同一个浏览器中切换标签页
其他情况都不会被检测。

本来还想写个简单的插件来搞定,但是雨课堂的检测实在太辣鸡了,完全没必要,那就这样吧。

另外发现提交答案发包的时候是提交的上传的图片url标签,而这个参数又是我们可控那么也可以往里面插xss,例如这个样子

我在自己建的试卷里面测试,确实可以弹窗。同理老师在查看这份试卷的时候也是可以触发执行的。

至于做什么,大家就可以自行发挥了,哈哈。

7月14日补充:

刚好今天有老师让我们帮他测试一下,雨课堂的考试系统。我就趁机试了一下。开启Charles抓包,先切出页面触发js上报异常。

分析流量

同时老师那边会显示我考试异常。

从图中可以看到会记录切出和切回页面。根据分析,是用action的值决定的,12是切出,16是切回。

因为截图是先上传到七牛云,然后再把链接发送给后端,所以直接拦截七牛云的域名也可行。

所以直接拦截一下url即可以绕过检测了。

  • https://upload-z1.qiniup.com/
  • https://examination.xuetangx.com/online_proctor/stu/monitor/feed/add
  • https://examination.xuetangx.com/online_proctor/stu/photograph/add

浏览器上可以安装广告插件来拦截url,比如 block site 这个插件。

此时任何操作都可以了,监考端也没有任何的异常记录了。

赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。

11条评论

DPOR 发布于9:42 下午 - 12月 28, 2022

我想问一下,现在说是雨课堂可以截屏。但网页版的雨课堂有权限截我的整块屏幕吗?还是说只能截浏览器窗口。另外就是英语考试,用edge自带的网页翻译,它是截取翻译过的还翻译前的?

匿名 发布于9:02 下午 - 12月 17, 2022

雨课堂能检测出使用两个电脑屏幕吗

Shiina 发布于1:51 下午 - 12月 10, 2022

老哥的分析很棒

匿名 发布于3:27 下午 - 11月 25, 2022

有一个小问题吧,这个检测系统好像还设置了定时截屏上传(看b站有人测试是这样的),也就是没有异常也得有图片,那这样把上传给锁了,那可能一张图片都没有了(当然,老师大概率会以为是bug,谁能想到竟然给系统使绊子了呢。

    匿名 发布于1:51 下午 - 11月 28, 2022

    接续:雨课堂有一个证件比对功能,我使用广告过滤后,多次上传未成功,说明此思路仍然可行,只要雨课堂上传截图的路径没变,此方法理应一直有效

匿名 发布于9:53 下午 - 6月 29, 2022

现在还能防检测吗

    Zgao 发布于2:23 下午 - 7月 6, 2022

    毕业就没用过这玩意了,应该不行了吧。

匿名 发布于5:59 下午 - 7月 14, 2021

把listener删了就行

匿名 发布于10:12 下午 - 11月 7, 2020

这本来就不是为了防信科院的

匿名 发布于11:39 下午 - 9月 29, 2020

6666

避坑指南 发布于6:01 下午 - 7月 18, 2020

虽然看不懂,但是丝毫不妨碍膜拜

回复 DPOR 取消回复