挖洞经验 | 从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会被执行。

漏洞复现步骤

  1. 环境准备

    • 安装受影响版本的Avast杀毒软件
    • Windows 10操作系统
  2. 构造恶意SSID

    • 创建一个无线网络,SSID名称包含XSS Payload
    • SSID长度限制为32个字符,需使用短XSS Payload技术
  3. 触发漏洞

    • 让目标设备连接至构造的恶意无线网络
    • 等待Avast网络接入提示弹出
    • 观察XSS Payload执行情况

短XSS Payload构造技术

由于SSID长度限制为32字符,需使用特殊技术构造短Payload:

  1. Brute Logic的技术

  2. s0md3v的技术

    • 参考:AwesomeXSS
    • 使用事件处理程序和最短属性名
  3. 优化技巧

    • 省略引号和括号
    • 使用最短的事件处理程序
    • 利用HTML5的宽松解析规则

攻击场景分析

  1. 攻击流程

    • 攻击者设置恶意SSID的无线热点
    • 受害者设备自动连接或手动连接至该热点
    • Avast弹出网络接入提示
    • XSS Payload被执行
  2. 潜在危害

    • 伪造登录页面窃取凭据
    • 执行任意JavaScript代码
    • 窃取本地存储数据
    • 发起进一步攻击

漏洞利用进阶

  1. 绕过字符限制

    • 使用URL短链接服务
    • 利用JavaScript动态加载外部脚本
  2. 持久化攻击

    • 针对经常自动连接的公共热点
    • 结合其他漏洞提升攻击效果
  3. 社会工程学结合

    • 设置诱人的SSID名称吸引用户连接
    • 模仿常见热点名称(如"Free_WiFi")

防御措施

  1. 用户防护

    • 避免连接不可信的无线网络
    • 及时更新杀毒软件
  2. 开发者修复

    • 对SSID输入进行严格过滤
    • 实现输出编码
    • 添加内容安全策略(CSP)
  3. 企业防护

    • 监控异常SSID名称
    • 教育员工安全连接意识

漏洞报告时间线

  • 2019.3.21:漏洞发现
  • 2019.3.22:向Avast提交漏洞
  • 2019.3.25:Avast确认漏洞
  • 2019.5.24:Avast确认修复进度
  • 2019.6.12:确认奖励金额
  • 2019.10.30:分配CVE编号

相关研究资源

  1. Deral Heiland在BLACK HAT 2013的演讲:

    • 《Practical Exploitation Using A Malicious Service Set Identifier (SSID)》
  2. 短XSS Payload技术:

    • Brute Logic博客
    • s0md3v的AwesomeXSS项目
  3. 其他类似漏洞研究:

    • 各种网络管理软件对SSID的处理方式

总结

本案例展示了即使安全软件也可能存在XSS漏洞,强调了输入验证和输出编码的重要性。同时,32字符的限制并非绝对防御,通过精巧的Payload构造仍可实现攻击。这提醒开发者在设计功能时需考虑所有可能的输入向量,包括看似无害的SSID名称。

反射型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名称。