在获得授权的前提下,对一款校园官方App进行了安全测试,发现了多处严重的安全漏洞。本次测试主要围绕信息泄露、权限绕过等问题展开,以下是详细的分析与复现过程。
1. 敏感信息泄露
在App首页进行刷新操作并拦截数据包,发现响应中包含了当前用户的userId。

通过对该userId参数进行遍历,可以获取到大量其他学生和老师的个人信息。


泄露的数据包括学号、专业、宿舍地址、人脸照片等,总计约19000条。这些敏感信息为后续的渗透测试攻击提供了基础。
2. 水平越权(平行越权)
测试发现,通过修改请求中的userId,可以越权查看他人账号的所有信息。
在首页刷新后,从数据包中获取到userid。

将其修改为其他用户的ID(测试范围为:学生1-14590,老师14590-15000),然后放行数据包。

随后在App界面点击相关功能模块,即可进入对应用户的详情页,成功查看到他人的通行记录、人脸信息、宿舍、班级、姓名等所有敏感数据,这属于典型的水平越权漏洞。

3. 垂直越权
在首页数据包中,通过前置信息收集获取到的管理员账户特征(如persontype),修改普通用户的请求参数。

修改后,普通用户界面出现了“考勤改签”等原本仅管理员可见的功能入口。


此漏洞允许低权限用户获得高权限功能接口的访问能力,存在垂直越权风险。
4. 越权修改他人人脸信息
此漏洞结合了信息泄露与权限缺陷。核心思路是:在登录账号A的前提下,截获修改人脸信息的请求,保留合法的Authorization请求头,但将请求体中的userid和personId替换为目标用户B的ID,同时替换base64图片数据。
具体复现步骤:
- 通过遍历
userId,确定目标账号B的userId=6299,personId=6297。

- 登录账号B,确认其原始人脸照片。

- 使用账号A抓取修改人脸的数据包,将
Authorization头(从其他请求中获取)和userid/personId/base64数据替换为B的信息。

- 发送篡改后的数据包,提示修改成功。

- 再次登录账号B验证,发现其人脸照片已被替换为账号A上传的图片,证实存在越权修改漏洞。
5. 存储型XSS
在App的“宿舍考勤记录 -> 申请改签”功能中,存在一个图片上传点。

选择图片后会自动上传。通过抓包,将上传文件的filename改为.svg后缀,并将文件内容替换为包含恶意JavaScript代码的SVG矢量图。

上传成功后,响应中返回了文件的存储路径。

虽然App端无法直接触发,但通过分析数据包中的Host字段,发现了对应的Web管理后台。使用App的账户密码可成功登录。在后台页面中,用户头像的加载链接格式为:https://host/evo-apigw/evo-oss/[文件路径]?token=[TOKEN]。

将链接中的[文件路径]部分替换为之前上传的恶意SVG文件路径,访问该链接即可成功触发存储型XSS。

本文涉及的所有漏洞均在授权测试后发现,并已提交给相关方完成修复。安全研究应始终在合法授权的范围内进行。
|