本项目针对 北京信息科技大学 (BISTU) 的校园网(基于 Dr.COM 计费系统),进行了一次深度的底层架构分析与网络测绘。 本项目包含了一份关于无线网络 (WLAN) 防火墙策略漏洞的详细披露报告,以及一套专为该校复杂网络环境打造的工业级自动化认证守护进程 (Daemon)。
免责声明 (Disclaimer) 本项目及报告仅供计算机网络安全学术研究与教育目的使用。公开此漏洞的目的是为了引起学校信息网络中心的重视并协助修复。请勿滥用本文提到的漏洞进行非法牟利。开发者对使用本工具产生的任何后果不承担责任。
在近期的端点探测与源码审计中,我们发现 BISTU 校园网实际上是由两套物理隔离且策略完全不同的“平行宇宙”组成的:有线网络 (lan) 与 无线网络 (wlan)。
- 域名:
lan.bistu.edu.cn - 网络特性:纯 IPv4 网络,未下发 IPv6 路由。
- 防御机制:执行了极其严苛的访问控制列表 (ACL)。
- HTTP (80端口):被深信服/AC网关全面拦截,并 302 重定向至认证页。
- HTTPS (443端口):实施了中间人攻击 (MITM) 级别的拦截。网关会强行阻断目标握手,并塞入伪造的校园网证书,导致浏览器报“证书不安全”错。
-
漏洞等级:High (高危)
-
漏洞描述: 相较于有线网的严防死守,新建的无线网络 (
wlan.bistu.edu.cn) 启用了 IPv4/IPv6 双栈网络,但在防火墙配置上出现了严重的“端口放行盲区”与“过度授权”。1. 443 端口审查缺失: 网关仅对 80 端口(HTTP)进行了强制拦截跳转,却对 IPv6 下的 443 端口(HTTPS/QUIC)缺乏深度包检测(DPI)与阻断机制。
2. 特权级 IP 白名单(以腾讯云为例): 探测表明,部分特定企业的 IP 网段(如
cloud.tencent.com,bilibili.com)被加入了核心交换机的“绝对免流白名单”。(推测是为了保障未登录状态下的微信消息推送、网费扫码支付等基础服务)。 -
漏洞利用 (Proof of Concept): 攻击者只需在未登录无线网的状态下(即未认证状态),利用这一白名单盲区即可实现零成本、不限速的全网免流访问:
- 傻瓜式方案:使用 Cloudflare WARP,将其 Endpoint(目标地址)强行修改为 Cloudflare 的 IPv6 泛播地址,建立纯 IPv6 的 WireGuard 隧道。
- 极客级方案:购买一台分配了公网 IPv6 的腾讯云/阿里云服务器,在服务器上部署 VLESS/Xray 代理,将监听端口设为
443,并利用cloud.tencent.com作为 SNI 伪装。本地计算机连接该节点后,所有流量将被网关视为“合法的腾讯系加密服务”而直接放行。
本项目附带了一个多线程的自动化网络资产测绘工具:scanpro.py。
用途:用于在未登录校园网的状态下,并发扫描自定义域名/IP 字典,侦测 HTTP (80) 劫持与 HTTPS (443) MITM 证书劫持状态,精准绘制出校园网防火墙的免流白名单地图。
==================================================
Dr.COM 白名单嗅探探针
==================================================
🔍 开始探测: cloud.tencent.com
[DNS] 解析成功 (IPv4 + IPv6) -> 116.196.150.210
[HTTP 80] 🟢 正常跳转 | 目标服务器自身跳转 -> https://cloud.tencent.com/[HTTPS 443] 🟢 绝对畅通 | 直连目标服务器 (HTTP 200)
🔍 开始探测: aliyun.com
[DNS] 解析成功 (仅 IPv4) -> 106.11.249.99
[HTTP 80] 🔴 302拦截 | 网关踢至认证页: http://lan.bistu.edu.cn[HTTPS 443] 🟡 证书劫持 | 证书不匹配,网关 MITM 拦截
(扫描结果为 🟢 绝对畅通 的目标,即可作为搭建免流穿透隧道的 Endpoint。)
由于有线网 (LAN) 不存在上述漏洞,必须进行合法的 Web 认证。针对复杂的网络切换和认证掉线痛点,本项目提供了一个极度强健的 Python 守护进程:bistu_drcom_daemon.py。
- 代理穿透机制 (Egress Binding) 在底层 Socket 级别强制绑定真实物理网卡 IP。完美兼容 Clash / Sing-box 的 TUN (虚拟网卡) 模式,彻底解决开启代理软件后脚本误判为断网的“死锁”Bug。
- 苹果级环境探针 (Captive Portal Probing)
摒弃不可靠的 Ping 测试。采用苹果官方的
captive.apple.com进行 200 OK 嗅探,毫秒级感知网关 302 劫持与网络断开。 - 动态域名嗅探 (Domain Failover)
通过捕获网关未登录时的 302 劫持
Location,脚本会自动判断当前处于有线 (lan) 还是无线 (wlan),实现自动纠错与接口切换,拒绝“对有线发无线包”的假死现象。 - 防抢跑与自我愈合 (Resilience Engineering) 针对网关防火墙权限下发的延迟,设计了“认证 -> 等待 6s -> 二次验证”的防欺骗逻辑。遇到欠费等情况采用指数退避算法(Exponential Backoff)休眠,缴费后脚本自动满血复活。
在脚本同级目录下创建 config.json,填入你的校园网账号和密码:
{
"username": "你的学号(注意是否需要 @dx / @lt 运营商后缀,一般不用)",
"password": "你的密码",
"check_interval": 15
}直接运行脚本,它将在后台默默守护你的网络。拔插网线、切换 WiFi,瞬间自动秒连。
python bistu_drcom_daemon.py(Windows 用户可将文件后缀改为 .pyw 并放入系统启动文件夹,实现开机无感静默自启。)
呼吁学校信息网络中心尽快采取以下措施:
- 统一双栈策略:对齐有线网与无线网的访问控制列表 (ACL),对未认证设备的 IPv6 HTTPS (443) 和 UDP/QUIC 流量进行严格拦截与管控。
- 收紧白名单策略:精细化配置免流 IP 段,避免粗暴地将大型 CDN 节点或整个云服务商网段加入白名单。
欢迎各位同学与开发者提交 Issue 和 Pull Request 来共同完善本项目的代码适配!