校园资产漏洞挖掘实战:从信息收集到报告撰写的完整指南

📅 2026/7/9 15:49:03
校园资产漏洞挖掘实战:从信息收集到报告撰写的完整指南
1. 项目概述一次完整的校园资产漏洞挖掘之旅最近几年高校的网络安全建设越来越受重视很多学校也设立了SRC安全应急响应中心鼓励安全研究者以合规的方式提交漏洞。对于刚入门安全的新手或者想从Web渗透转向更体系化实战的朋友来说校园资产EDU-SRC是一个绝佳的“练兵场”。它资产范围清晰、技术栈相对传统但又不乏新玩意儿而且通过SRC提交整个过程是合法合规的既能练手又能获得认可甚至还有奖金。但很多朋友拿到一个学校域名后往往不知道从何下手信息收集做不全漏洞点找不到或者找到了漏洞却无法深入利用。这篇文章我就结合自己多次实战的经验为你拆解一次完整的EDU-SRC漏洞挖掘流程。我们不谈那些高大上的0day就从最基础、最通用的思路出发把从信息收集、资产测绘、漏洞探测到最终利用和报告撰写的每一个环节都讲透。你会发现很多时候一个高危漏洞就藏在那些被忽略的角落里。2. 前期信息收集构建你的攻击面地图信息收集是渗透测试的基石在EDU场景下更是如此。一个学校的主站可能只是冰山一角其背后往往关联着数十甚至上百个子域名、独立系统。我们的目标就是尽可能全面地绘制出这张“数字地图”。2.1 子域名枚举发现隐藏的入口子域名是首要目标。我常用的工具组合是subfinder、assetfinder和amass。不要只依赖一种工具因为它们的底层数据源和算法各有侧重。# 使用subfinder进行初步发现 subfinder -d target.edu.cn -silent -o subfinder.txt # 使用assetfinder需要安装go assetfinder --subs-only target.edu.cn assetfinder.txt # 使用amass进行深度枚举被动主动 amass enum -passive -d target.edu.cn -o amass_passive.txt amass enum -active -d target.edu.cn -o amass_active.txt收集完结果后用sort和uniq命令去重合并。这里有个关键点重点关注那些非www的、名称特殊的子域。比如vpn.target.edu.cn、oa.target.edu.cn、mail.target.edu.cn、jwgl.target.edu.cn教务管理、lib.target.edu.cn图书馆、ykt.target.edu.cn一卡通等。这些往往是核心业务系统也是漏洞高发区。注意被动枚举不直接与目标交互是首选速度快且隐蔽。主动枚举如暴力破解虽然更全面但可能触发安全设备的告警。在实战中我通常会先进行多轮被动收集只有在资产极少的情况下才谨慎尝试主动枚举。2.2 端口扫描与服务识别摸清每台机器的“家底”有了域名列表下一步是找出它们对应的IP以及开放了哪些端口。nmap是这方面的王者但全端口扫描耗时很长。我的策略是分层扫描快速扫描常用端口先对所有域名解析出的IP进行常见端口如80, 443, 8080, 8000, 21, 22, 3306等扫描快速定位Web服务和管理入口。nmap -sS -Pn -n --open -p 80,443,8080,8000,8888,21,22,23,3306,3389 -iL ip_list.txt -oA nmap_top_ports重点目标全端口扫描对于发现Web服务80/443或者疑似管理后台8080/8000的IP进行全端口扫描1-65535并使用-sV进行版本探测。nmap -sS -sV -Pn -n --open -p- -T4 [重点IP] -oA nmap_full_[IP]服务指纹深度识别对于识别出的服务特别是HTTP服务使用whatweb或nuclei的指纹模板进行更细致的识别确定CMS、框架、中间件版本。whatweb http://vpn.target.edu.cn --colornever这个阶段的目标是建立一张表格IP:端口 - 服务 - 可能的应用。例如10.0.1.100:8080 - Tomcat 8.5.35 - 可能为OA系统后台。2.3 目录与敏感文件扫描寻找被遗忘的“后门”很多漏洞并非存在于主功能页面而是藏在一些默认路径、备份文件或者未授权访问的目录里。dirsearch、gobuster或ffuf是必备工具。# 使用dirsearch带上常用扩展名和合适的字典 python3 dirsearch.py -u http://oa.target.edu.cn -e php,asp,aspx,jsp,do,action -w /path/to/common.txt # 使用ffuf速度更快 ffuf -u http://oa.target.edu.cn/FUZZ -w /path/to/dict.txt -e .php,.bak,.tar.gz,.sql -fc 403扫描时务必关注以下重点备份文件.bak、.tar.gz、.zip、wwwroot.rar、源代码.zip。我曾通过一个.bak文件直接下载到网站源码。配置文件web.config、config.php、application.yml、.env。里面可能有数据库密码、API密钥。版本控制文件.git/目录、.svn/目录。如果存在且可访问可能导致源码泄露。管理后台/admin/、/manage/、/wp-admin/、/login/。尝试弱口令或寻找未授权访问。接口文件/api/、/swagger-ui.html、/doc.html。可能暴露API接口存在未授权或越权。实操心得不要无脑跑超大字典那既低效又吵闹。我通常会准备几套字典快速通用字典3000条、备份文件/敏感路径专项字典、针对特定CMS如ThinkPHP、SpringBoot的字典。先快扫发现线索后再针对性地深度扫描。3. 漏洞探测与利用从发现到攻破信息收集完毕后我们手头有了一份丰富的资产清单。接下来就是最具技术含量的环节从这些资产中找出脆弱点并加以利用。3.1 通用型漏洞筛查用自动化工具打“覆盖”对于大量Web资产手动测试效率太低。我会使用nuclei这款强大的漏洞扫描器进行第一轮自动化筛查。# 更新模板 nuclei -update-templates # 对目标URL列表进行扫描只运行中、高危漏洞的模板 nuclei -l all_urls.txt -t /path/to/nuclei-templates/ -severity medium,high,critical -o nuclei_results.txtnuclei社区有数千个模板能有效发现诸如信息泄露目录列表、源码泄露、SVN/Git泄露、配置文件泄露。组件漏洞特定版本的Apache Flink、SpringBoot Actuator、Shiro、Log4j2等漏洞。默认凭据一些设备或系统如Hadoop YARN、Docker Registry的默认账号密码。简单的RCE或SQLi针对某些特定参数或路径的检测模板。自动化扫描的意义在于“广撒网”它能帮你快速定位那些明显的、已知的漏洞点节省大量时间。但切记它只是辅助深度挖掘还得靠手动。3.2 手动深度测试聚焦核心业务系统自动化工具扫不到的业务逻辑漏洞才是体现水平的地方。校园系统中以下几个是重点目标教务系统jwgl.xxx越权漏洞尝试修改URL中的学号参数sid202411111查看能否访问或修改他人成绩、课表、个人信息。这是最高发的漏洞类型。SQL注入在成绩查询、个人信息查询等带参页面尝试、and 11、and 12等经典payload。验证码绕过验证码是否在前端校验是否可重复使用是否为空或固定值密码重置逻辑找回密码时验证码是否可爆破是否通过学号/邮箱身份证后几位这种可预测信息来验证网上办事大厅/OA系统未授权访问直接访问/admin/main.jsp或/manager/html等路径看是否跳转登录。文件上传寻找任何可以上传文件的地方通知附件、个人信息头像。尝试上传.jsp、.php等脚本文件或利用Content-Type欺骗、双写后缀test.jsp.jpg等方式绕过。任意文件读取/下载参数中是否有file、path、url等关键字尝试../../../../etc/passwd进行路径遍历。图书馆系统逻辑漏洞图书预约、续借功能是否存在时间竞争条件能否无限续借信息泄露读者证号是否为连续数字通过遍历能否获取大量学生个人信息邮件系统mail.xxx弱口令尝试常用弱口令组合或利用收集到的信息如学号出生日期进行密码喷洒攻击。OWA/Exchange如果使用微软Exchange关注其历史漏洞如ProxyShell, ProxyLogon。手动测试的核心是“改参数、改顺序、改状态”。多问自己如果这个参数我改成别人的会怎样如果我不按正常流程走会怎样如果这个请求我重复发送会怎样3.3 漏洞利用实例一个真实的越权案例让我分享一个在某个学校“学生实践管理系统”中发现的漏洞。系统有一个功能是查看实践报告详情URL类似http://sjgl.xxx.edu.cn/report/detail?id12345通过修改id参数我可以依次看到12346、12347等其他同学的报告里面包含了他们的姓名、学号、报告内容甚至指导老师评语。这就是一个典型的**不安全的直接对象引用IDOR**漏洞。但如何证明危害呢光看到信息还不够。我进一步测试发现报告提交页面存在上传功能且对文件后缀校验不严仅在前端用JS校验。我通过Burp Suite抓包将文件后缀.docx改为.jsp并写入一个简单的Webshell内容成功上传。利用链就此形成通过IDOR漏洞遍历获取其他学生的报告ID。每个报告详情页都有一个“下载附件”的链接其参数是文件存储路径。我上传的恶意JSP文件路径被包含在这个参数中。构造一个请求将“下载附件”的路径参数指向我上传的JSP文件从而访问并执行了Webshell最终实现了服务器控制。这个案例告诉我们不要孤立地看待一个漏洞点。一个低危的信息泄露IDOR可能成为利用高危漏洞文件上传RCE的跳板。在报告时将这样的利用链清晰地描述出来漏洞评级会高很多。4. 后渗透与权限维持在成功获取一个Webshell或者系统权限后工作并没有结束。我们需要评估影响范围并尝试扩大战果在SRC授权范围内仅限于证明危害切勿进行破坏。4.1 内网信息收集一旦进入一台服务器它可能就是通往内网的大门。# Linux系统 ifconfig / ip addr # 查看网络配置是否有多个网卡 netstat -antup # 查看网络连接和监听端口发现内网其他服务 cat /etc/hosts # 查看主机文件 arp -a # 查看ARP缓存发现同一网段其他主机 cat /proc/net/fib_trie # 查看路由表更详细 # Windows系统 ipconfig /all netstat -ano arp -a route print这些信息能帮你绘制内网拓扑。比如发现这台Web服务器还连着10.10.20.x网段的数据库服务器3306端口。4.2 数据库访问与数据泄露验证如果找到数据库连接信息如从config.php或.env文件中连接数据库是证明数据泄露风险最直接的方式。# 使用找到的凭据连接MySQL mysql -h 10.10.20.100 -u app_user -ppassword -D student_db show tables; select count(*) from users; -- 估算数据量 select name, id_card, phone from users limit 5; -- 抽样查看敏感数据注意脱敏切记只做最小必要的查询来证明漏洞存在切勿下载或导出大量数据。在漏洞报告中提供查询语句和脱敏后的结果截图即可。4.3 权限提升与横向移动谨慎操作在获得一个低权限shell后可以尝试本地提权以证明攻击者可完全控制服务器。Linux检查sudo -l查看当前用户能以root身份运行哪些命令查找SUID/GUID特殊权限文件find / -perm -us -type f 2/dev/null检查内核版本是否对应公开提权EXP。Windows使用whoami /priv查看特权信息使用systeminfo查看补丁情况寻找缺失的补丁对应的提权EXP。关于横向移动在EDU-SRC测试中必须极其谨慎。通常证明可以从当前服务器访问到内网关键资产如数据库即可不建议对内网其他主机进行主动攻击。你的目标是证明漏洞的危害性而不是真正扮演攻击者。5. 报告撰写与提交让漏洞价值最大化一份优秀的漏洞报告是获得高评级和快速修复的关键。它不仅仅是描述问题更是与修复人员沟通的桥梁。5.1 报告核心要素一个标准的漏洞报告应包含以下部分漏洞标题精炼概括。如“XX大学教务管理系统存在越权访问漏洞可查看任意学生成绩”。所属系统精确的URL或系统名称。漏洞等级参考SRC定级标准通常分为“严重”、“高危”、“中危”、“低危”。漏洞描述用简洁的语言说明这是什么漏洞其潜在危害是什么。重现步骤这是报告的灵魂。必须做到像食谱一样让完全不懂的人也能按步骤复现。第一步访问http://example.com/login使用账号test/test123登录。第二步登录后访问http://example.com/user/profile?id1此时显示用户A的信息。第三步将URL中的参数id1修改为id2回车。第四步页面成功显示用户B的敏感信息手机号、邮箱等证明越权访问存在。漏洞证明关键步骤的截图或视频。截图需包含浏览器地址栏显示URL和关键的漏洞展示部分。敏感信息需打码。修复建议提供具体、可操作的修复方案。不要只说“进行权限校验”而要说“在服务端对当前登录用户的会话身份与请求的id参数所属身份进行强制比对若不一致则拒绝请求”。5.2 提升报告质量的技巧一洞一报一个报告只描述一个漏洞。如果一个系统有越权又有SQL注入请分开提交。细节决定成败在重现步骤中写明使用的浏览器、是否开启代理、具体的请求包和响应包必要时可附上Burp的Raw数据。这能帮助管理员快速定位问题代码。危害最大化阐述结合业务场景说明危害。例如“该越权漏洞位于成绩查询接口攻击者可遍历学号批量获取全校学生的成绩排名和挂科情况导致大规模隐私泄露。”遵守平台规则提交前仔细阅读该SRC的漏洞评级标准、测试范围哪些域名可以测哪些不能、禁止的测试手法如DoS、暴力破解、社工等。6. 常见问题与排查技巧实录在实际挖掘过程中你肯定会遇到各种问题。下面是我踩过的一些坑和总结的技巧。6.1 遇到WAFWeb应用防火墙怎么办校园系统部署WAF的情况越来越普遍。遇到WAF拦截时不要硬刚。识别WAF用wafw00f工具或手工发送一些恶意负载如AND 11观察返回页面的特征、响应头如X-Protected-By来判断WAF类型云盾、安全狗、D盾等。绕过技巧编码绕过对payload进行URL编码、双重URL编码、十六进制编码。等价替换and换成or换成||‘ 换成like。注释符干扰在payload中插入大量内联注释/**/。例如UNI/**/ON SEL/**/ECT。参数污染同一个参数传递多个值如?id1id2WAF可能只检查第一个而后端程序可能取最后一个。HTTP参数污染HPP?id1;select 1id2。慢速攻击调整Burp Suite的Intruder发包速度设置为每秒1-2个请求有时能绕过基于频率的检测。终极策略如果Web层面被防得死死的不妨回到信息收集寻找那些未接入WAF的旁站、旧系统、测试环境。这些地方往往是安全防护的薄弱环节。6.2 没有收获怎么办调整思路有时候扫了一圈一个像样的漏洞都没找到很打击信心。这时需要调整策略扩大资产范围学校的资产可能不仅限于.edu.cn。尝试搜索学校的简称、曾用名、投资的企业校办企业、附属医院xxx-hospital.com等这些关联资产的安全防护可能更弱。关注“人”的因素在漏洞挖掘平台如漏洞盒子、补天或GitHub上搜索该校的名称、域名看看是否有学生或老师不小心泄露了代码、配置文件、API密钥称为“GitHub泄露”。深度挖掘一个系统与其广撒网不如针对一个核心系统如OA进行为期几天的深度测试。阅读其前端JS代码分析所有的API接口尝试每一个功能点特别是那些看起来“老旧”的模块。寻找逻辑漏洞自动化工具找不到逻辑漏洞。静下心来手动走一遍业务流程注册、登录、信息修改、密码找回、交易、审核。思考每一个环节的判断逻辑是否在服务端完成。6.3 工具使用问题排查扫描器被ban IP使用-rate参数限制请求速率如nuclei -rate 50使用代理池如proxychains扫描一段时间后暂停更换IP。子域名枚举结果少检查工具是否配置了足够的API密钥如SecurityTrails, Censys, Shodan。免费的API通常有频率限制。可以尝试多个工具交叉验证。Burp Suite抓不到包确保浏览器代理设置正确127.0.0.1:8080如果是HTTPS应用需要在浏览器中安装并信任Burp Suite的CA证书http://burp/cert。漏洞挖掘就像侦探破案需要耐心、细心和发散性的思维。每一次失败的测试都是在排除一种可能性让你离真正的漏洞更近一步。保持学习多看看别人的漏洞报告了解最新的漏洞类型和利用技巧你的“武器库”就会越来越丰富。最重要的是始终坚守白帽子的道德底线在合规的范围内进行测试共同提升网络空间的安全水位。