Skip to content
This repository has been archived by the owner on Jan 9, 2024. It is now read-only.
/ ustc-cas-secret Public archive

利用 USTC CAS 给同学展示密信(使用场景示例:你是助教,给学生自助查分)

Notifications You must be signed in to change notification settings

yusanshi/ustc-cas-secret

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

[20231031]关于停止通配符应用认证的通知

各接入应用管理员、开发者:

统一身份认证系统将于2023年11月15日起将停止使用通配符的应用进行认证,请未登记备案的服务尽快完成备案后进行统一身份认证系统对接。

对接联系邮箱 [email protected] 或电话63601592。


USTC CAS 密信

利用 USTC CAS 给同学展示密信(使用场景示例:你是助教,给学生自助查分)。

DEMO:https://ds.yusanshi.com/

image

快速开始

在你的服务器上执行以下操作:

  1. git clone https://github.com/yusanshi/ustc-cas-secret && cd ustc-cas-secret
  2. 创建 data.json,仿照 data.sample.json 在其中写入你想要展示给每个人的数据(学号中的字母大写,数据支持 HTML);
  3. pip install fastapi "uvicorn[standard]"
  4. python backend.py
  5. 绑定域名、反向代理到 http://127.0.0.1:8088(如 Nginx 服务器使用 proxy_pass)。

原理解析

常规 CAS 认证过程

“常规”指你有一个 ustc.edu.cn 的二级域名:foobar.ustc.edu.cn。

  1. 用户访问 https://passport.ustc.edu.cn/login?service=https://foobar.ustc.edu.cn/something (这里的 service 要求其中的 host 以 ustc.edu.cn 结尾)
  2. 登录成功后,自动跳转到 service 并将在末尾 append 上 ticket:https://foobar.ustc.edu.cn/something?ticket=ST-XXXXXXX
  3. 你作为 foobar.ustc.edu.cn 所有人,可以根据拿到的 ticket 从 https://passport.ustc.edu.cn/serviceValidate 获取用户信息(GID、学号等)

Hack CAS 认证过程

显然,我们往往没有这样的二级域名,因此我们需要 hack。

思路一

利用个人 FTP 空间 home.ustc.edu.cn,下面的“致谢”的项目即是这个思路。

思路二

利用漏洞。具体来说,前文的 这里的 service 要求其中的 host 以 ustc.edu.cn 结尾 实际实现的逻辑是 if ".ustc.edu.cn/" in service,所以我们可以将 service 选为 https://example.com/www.ustc.edu.cn/https://example.com/?query=.ustc.edu.cn/。本项目用的就是这个思路。

致谢

About

利用 USTC CAS 给同学展示密信(使用场景示例:你是助教,给学生自助查分)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages