挖洞经验 | 从Avast杀毒软件发现价值5000美金的反射型XSS
字数 1724 2025-08-18 11:39:08
反射型XSS漏洞分析与利用:以Avast杀毒软件为例
漏洞概述
本教学文档详细分析Avast杀毒软件中发现的反射型XSS漏洞(CVE-2019-18653 & CVE-2019-18654),该漏洞存在于Avast的网络接入提示功能中,攻击者可通过构造恶意SSID名称实现XSS攻击。
漏洞基本信息
- 漏洞类型:反射型跨站脚本(XSS)
- 影响产品:
- Avast Internet Security 19.3.2369 (build 19.3.4241.440)
- Avast Free Antivirus Premiere版本
- AVG Internet Security 19.3.3084 (build 19.3.4241.440)
- CVE编号:
- CVE-2019-18653 (Avast)
- CVE-2019-18654 (AVG)
- 漏洞奖励:$5000
漏洞原理
当用户设备连接到一个新的无线网络时,Avast的网络接入提示(Avast Network Notification)会显示该网络的SSID名称。由于该功能未对SSID字段进行适当的过滤和转义,攻击者可以在SSID中嵌入恶意XSS Payload,当用户连接到该网络时,Payload会被执行。
漏洞复现步骤
-
环境准备:
- 安装受影响版本的Avast杀毒软件
- Windows 10操作系统
-
构造恶意SSID:
- 创建一个无线网络,SSID名称包含XSS Payload
- SSID长度限制为32个字符,需使用短XSS Payload技术
-
触发漏洞:
- 让目标设备连接至构造的恶意无线网络
- 等待Avast网络接入提示弹出
- 观察XSS Payload执行情况
短XSS Payload构造技术
由于SSID长度限制为32字符,需使用特殊技术构造短Payload:
-
Brute Logic的技术:
- 参考:最短反射型XSS可能
- 示例:
"><svg/onload=alert(1)>(19字符)
-
s0md3v的技术:
- 参考:AwesomeXSS
- 使用事件处理程序和最短属性名
-
优化技巧:
- 省略引号和括号
- 使用最短的事件处理程序
- 利用HTML5的宽松解析规则
攻击场景分析
-
攻击流程:
- 攻击者设置恶意SSID的无线热点
- 受害者设备自动连接或手动连接至该热点
- Avast弹出网络接入提示
- XSS Payload被执行
-
潜在危害:
- 伪造登录页面窃取凭据
- 执行任意JavaScript代码
- 窃取本地存储数据
- 发起进一步攻击
漏洞利用进阶
-
绕过字符限制:
- 使用URL短链接服务
- 利用JavaScript动态加载外部脚本
-
持久化攻击:
- 针对经常自动连接的公共热点
- 结合其他漏洞提升攻击效果
-
社会工程学结合:
- 设置诱人的SSID名称吸引用户连接
- 模仿常见热点名称(如"Free_WiFi")
防御措施
-
用户防护:
- 避免连接不可信的无线网络
- 及时更新杀毒软件
-
开发者修复:
- 对SSID输入进行严格过滤
- 实现输出编码
- 添加内容安全策略(CSP)
-
企业防护:
- 监控异常SSID名称
- 教育员工安全连接意识
漏洞报告时间线
- 2019.3.21:漏洞发现
- 2019.3.22:向Avast提交漏洞
- 2019.3.25:Avast确认漏洞
- 2019.5.24:Avast确认修复进度
- 2019.6.12:确认奖励金额
- 2019.10.30:分配CVE编号
相关研究资源
-
Deral Heiland在BLACK HAT 2013的演讲:
- 《Practical Exploitation Using A Malicious Service Set Identifier (SSID)》
-
短XSS Payload技术:
- Brute Logic博客
- s0md3v的AwesomeXSS项目
-
其他类似漏洞研究:
- 各种网络管理软件对SSID的处理方式
总结
本案例展示了即使安全软件也可能存在XSS漏洞,强调了输入验证和输出编码的重要性。同时,32字符的限制并非绝对防御,通过精巧的Payload构造仍可实现攻击。这提醒开发者在设计功能时需考虑所有可能的输入向量,包括看似无害的SSID名称。