二. 大概流程
- 入口获取:通过已获得的统一身份认证账号密码登录系统,进入目标子系统。
- 存储型XSS漏洞挖掘与利用:
- 发现附件上传功能,前端仅做了JS校验;
- 通过 Burp Suite 改包绕过前端限制,实现任意文件上传;
- 上传 HTML 文件(如 XSS payload)但无法解析 jsp;
- 通过分析前端 JS 代码发现图标资源路径,拼接出上传文件的访问 URL,成功触发 XSS。
- 未授权访问漏洞(文件删除与信息泄露):
- 使用工具(如 findsomething、LoveJS)提取 JS 中的接口,并配合手工审计;
- 发现
/detail?id= 接口存在未授权遍历,可获取敏感文件信息;
- 发现
/delete?id= 接口存在未授权删除风险(未实际测试);
- 发现工单查询接口未授权泄露用户学号、姓名、手机号等敏感信息。
- 未授权访问漏洞(任意用户登录):
- 通过泄露的手机号,调用
/getUserByPhone?phone= 接口未授权获取用户密码(明文或可逆加密);
- 结合泄露的学号、手机号及密码,实现任意用户登录。
- JS逆向获取超管权限:
- 发现子系统独立登录口(非 CAS 集成),但统一账号无法直接登录;
- 分析登录请求中的加密参数,通过 JS 逆向获取加密逻辑;
- 使用 Burp 插件(如 cloudx)实现自动化加密,对账号密码进行爆破;
- 成功爆破出管理员账号密码,登录后台并发现多处 XSS 漏洞。
三. 正文
之前的证书站好久没发货了,所以想挖点其他的证书,顺便上上 rank,于是有了这篇文章。
拥有某大学的统一身份认证权限(账号密码)后,进入门户发现系统众多,逐一测试。最终,在一个子系统中发现了漏洞链条,这个渗透过程值得在云栈社区与各位安全爱好者分享探讨。
存储型 XSS
子系统下存在一个附件上传点。

前端 JS 做了文件类型校验,上传 PNG 后使用 Burp Suite 改包,发现存在任意文件上传漏洞。由于该系统基于若依框架二次开发,上传的 Webshell 无法解析,因此转为利用 XSS。
POST /xxx/uploadImg HTTP/1.1
Host: xx.xx.edu.cn
Cookie:
Content-Length: 211
Sec-Ch-Ua-Platform: "Windows"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36
Sec-Ch-Ua: "Not;A=Brand";v="99", "Google Chrome";v="139", "Chromium";v="139"
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary1NKotycTLlciokiM
Sec-Ch-Ua-Mobile: ?0
Accept: */*
Origin:
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer:
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Priority: u=1, i
Connection: keep-alive
------WebKitFormBoundary1NKotycTLlciokiM
Content-Disposition: form-data; name="file"; filename="hack2.html"
Content-Type: image/html
<script>alert(1)</script>
------WebKitFormBoundary1NKotycTLlciokiM--

文件虽然上传成功,但响应未返回具体访问路径。尝试拼接多个常见路径均无效。此时需要从前端静态资源入手寻找线索。幸运的是,在审计 JS 代码时发现了一个图标资源的引用路径:

最终推导出文件下载地址的基本格式:
https://xxx.xxx.edu.cn/xxxx/xxx/24102xxxx.svg
将文件名替换为上传的 HTML 文件后,成功触发 XSS 弹窗:
https://xxx.xxx.edu.cn/xxxx/xxx/250821220651263926.html

未授权访问 1 (文件信息泄露)
初步信息收集使用了 findsomething 和 LoveJS V1.2 等工具提取 JS 接口。


用 Burp Suite 对提取到的 GET/POST 接口进行批量测试,未发现明显信息泄露。于是转向手动审计 JS 代码,发现了两个关键接口:

/xxx/xxx/delete?id= # 删除接口
/xxx/xxx/detail?id= # 详情接口
使用 Burp Intruder 对 detail 接口的 id 参数进行遍历:

成功遍历出系统内的文件信息,证实该接口存在未授权访问漏洞:

同理,delete 接口极有可能存在同样的未授权删除风险,鉴于其敏感性,未进行实际测试。
未授权访问 2 (任意用户登录)
继续审计 JS,发现大量接口使用 ?id 参数。重点关注后,发现一个可未授权获取他人提交工单的接口:


该接口会返回工单提交者的学号、姓名、手机号等敏感信息。
仅泄露信息危害有限,但结合之前发现的多个未授权接口,可以推断系统整体权限控制存在缺陷。既然已获得用户的学号 (xh) 和手机号 (phone),便尝试搜索相关参数的接口。最终发现一个高危接口:
/xxx/xxxxx/getUserByPhone?phone=
使用上面泄露的手机号访问此接口:

成功获取了对应用户的密码。至此,结合泄露的学号、手机号和密码,即可实现任意用户登录。
JS 逆向获取超管权限
最初是通过 CAS 单点登录进入该系统。退出后发现其存在独立的登录入口,未与 CAS 集成。但统一身份认证的账号在此无法登录,提示账号不存在。
https://xxx.xxx.edu.cn/login
推测可能存在弱口令或默认账号。抓取登录包发现请求参数被加密:

虽然之前的漏洞已足够换取证书,但出于学习目的,决定对加密逻辑进行 JS 逆向分析。

分析确认加密方式为 AES-CBC,密钥(key)为 1478523,偏移量(iv)为 QAZXSWED。使用在线工具验证加解密逻辑无误:

接下来,在 Burp Suite 中配置 cloudx 插件,自动化处理登录请求的加密过程:



配置好加解密规则后,将请求发送到 Intruder 模块进行账号密码爆破:

成功爆破出管理员账号密码,登录系统后台:


在后台中也发现了多处新的 XSS 漏洞。
四. 总结
最终成功用挖掘的漏洞兑换了证书:

本次渗透测试整体难度不高,需要一些耐心进行 JS 接口审计,也带有一点运气成分。攻击路径从存储型 XSS 开始,串联起未授权文件信息泄露、未授权敏感信息泄露,最终通过 JS 逆向突破独立登录口,获取系统最高权限,形成了一个完整的链式攻击。这种对后端 & 架构中权限校验缺失的深入利用,是提升渗透深度的关键。