第35天:WEB攻防-通用漏洞&XSS跨站&反射&存储&DOM&盲打&劫持
一、夸张系列菜单一00:07
1. 课程要点00:54
2. XSS跨站脚本攻击原理02:16
1)跨站脚本攻击概述02:21
- XSS简介02:28

- 全称: Cross Site Scripting(跨站脚本攻击),简称XSS
- 本质: 前端漏洞,主要利用JavaScript代码执行
- 产生原因: 网站对用户输入过滤不足,导致恶意脚本在页面显示并执行
- XSS原理02:53

- 核心机制:
- 输入输出特征: 必须存在数据交互的输入输出点
- 执行条件: 服务器未严格过滤用户输入的恶意脚本
- 触发方式: 浏览器直接执行注入的JavaScript代码
- 典型场景:
- 数据交互点:GET/POST参数、HTTP Headers
- 输出点:用户资料页、关键词标签、富文本编辑器等
- XSS分类03:43

- 主要类型:
- 反射型(非持久型): 恶意脚本通过URL参数即时触发
- 存储型(持久型): 恶意脚本存储在服务器端持续影响
- DOM型: 完全在客户端完成攻击,不经过服务器
- 特殊类型:
- mXSS(突变XSS)
- UXSS(通用XSS)
- Flash XSS
- UTF-7 XSS
- XSS危害04:40

- 基本危害:
- 信息窃取: 盗取用户Cookie、会话凭证
- 身份冒用: 利用被盗身份执行操作
- 恶意传播: 对访问者进行病毒侵害
- 扩展危害:
- 权限维持: 结合其他漏洞实现持久控制
- 钓鱼攻击: 伪造登录界面诱导用户
- 浏览器劫持: 控制用户浏览器行为
- 理论边界: 任何JavaScript可实现的功能,XSS理论上均可实现
3. 夸张分类和原理06:46
1)XSS攻击原理与示例演示06:54
- XSS攻击基本概念

- 本质:通过网页开发漏洞注入恶意指令代码到网页
- 执行方式:用户加载并执行攻击者构造的恶意网页程序
- 攻击媒介:不仅限于JavaScript,还包括Java、VBScript、ActiveX、Flash等
- 攻击后果:获取更高权限、窃取私密内容、会话和cookie等敏感信息
- XSS漏洞产生原理

- 关键条件:
- 输入点:网页接受用户输入(如搜索框)
- 输出点:将输入内容直接输出到页面源代码中
- 攻击过程:
- 将正常输入(如"xss")替换为JS代码
- 浏览器渲染时会将JS代码识别并执行
- 示例:搜索关键词显示在页面源代码中,若替换为则会被执行
- 本地漏洞演示

- 反射型XSS示例:
code=code =code=
_GET['x'];
echo$code; - 漏洞表现:通过URL参数直接输出未过滤内容
- 测试方法 :
xss.php?x=123会输出123,改为xss.php?x=<script>alert(1)</script>则执行弹窗 
- DOM型XSS示例:
javascript
function domxss() {
var str = document.getElementById("text").value;
document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?";
}
- 闭合技巧 :通过构造
'><img src="" onmouseover="alert('xss')">等payload实现攻击 - 防御要点:需要对输出内容进行HTML实体编码
- XSS攻击本质
- 核心原理:
- 攻击者构造恶意JS代码
- 受害者访问包含恶意代码的页面
- 浏览器解析执行恶意代码
- 攻击扩展:
- 获取cookie:通过document.cookie
- 窃取信息:通过XMLHttpRequest发送数据到攻击者服务器
- 钓鱼攻击:伪造登录表单
- 类型区分:
- 反射型:通过URL参数即时触发
- 存储型:恶意代码存储在服务器端
- DOM型:纯前端脚本触发的漏洞
- 核心原理:
2)应用案例25:42
- 反射型实例演示

- 漏洞原理:通过修改User-Agent头注入恶意JS代码,当服务器将UA值直接输出到页面时执行
- 危害评估:
- 实际危害较低,因为需要受害者主动修改UA头才能触发
- 无法通过简单URL诱导实现攻击
- 现代浏览器有XSS过滤机制
- 利用限制:
- 必须手动修改请求头才能利用
- 无法通过钓鱼链接传播
- 属于非持久性反射型漏洞
- 演示过程:
- 正常UA显示:Mozilla/5.0...
- 修改为后触发弹窗
- 但需要攻击者本地修改请求头

- 利用难点:
- 需要精准定位管理员
- 需通过社交工程发送攻击链接
- 管理员需使用未防护的浏览器
- 三点缺一不可导致实际利用率低
- 存储型实例演示26:01

- 核心区别:
- 恶意代码会持久化存储到数据库
- 所有访问受影响页面的用户都会触发
- 不需要定向诱导特定用户
- 实际危害:
- 可窃取大量用户cookie
- 可能传播XSS蠕虫
- 常被黑产用于挂马攻击
- 厂商态度:
- 普遍认定为高危漏洞
- 漏洞赏金计划重点收储类型
- 修复优先级通常为紧急
- DOM型实例演示26:27

- 独特特征:
- 完全在客户端执行不依赖服务端
- 常见于JS动态操作DOM的场景
- 传统扫描器难以检测
- 检测技巧:
- 关注document.write()等危险函数
- 检查URL参数直接拼接进HTML
- 使用#片段标识符测试
- 修复方案:
- 避免使用innerHTML
- 对动态内容进行HTML编码
- 使用textContent替代

- 常见利用方式:
- Cookie窃取:通过document.cookie
- 会话劫持:接管用户登录态
- 结合CSRF:发起敏感操作
- 传播蠕虫:自传播恶意代码
- 高级利用:
- 配合BeEF框架进行渗透
- 内网探测
- 键盘记录
- 钓鱼伪造
二、存储型XSS36:00
1. 订单查询功能36:39

- 典型场景:演示使用老旧的订单系统作为案例,该系统具有订单查询功能,是典型的存储型XSS攻击面
- 攻击原理:当用户在订单信息中注入恶意代码后,管理员查看订单时会触发代码执行
- 数据交互点:订单查询、留言板等用户输入数据最终会被管理员查看的页面都是潜在攻击点
2. 营销手段与商品展示37:03

- 常见目标:药品(如三七)、成人用品、保健品等特殊商品营销页面
- 输入点特征:通常包含"立即购买"、"获取资料"等表单提交功能
- 数据收集方式:要求用户填写称呼、电话等联系信息,这些字段可能未做充分过滤
3. 招商网站示例37:33

- 典型结构:包含项目资料领取功能,需要用户提交个人信息
- 攻击向量:在"联系方式"或"具体要求"等字段中插入XSS payload
- 后台交互:招商专员查看用户提交信息时会触发恶意代码执行
4. 信息提交与后台查看38:05

- 攻击流程:
- 攻击者在订单/留言中插入恶意脚本
- 管理员登录后台查看新订单
- 恶意脚本在管理员浏览器中执行
- 利用条件:需要管理员查看用户提交数据的页面未做输出过滤
5. XSS攻击演示准备39:14

- 测试步骤:
- 在订单"具体要求"字段插入测试payload
- 提交订单等待管理员查看
- 观察后台反应验证漏洞存在
- 基础payload:使用简单的进行初步验证
6. 弹窗代码示例39:39

- 攻击效果:管理员查看订单时触发弹窗
- 代码分析:演示使用的是基础的alert弹窗,实际攻击中会替换为窃取cookie的恶意代码
- 空白显示:payload执行后对应字段可能显示为空白,这是存储型XSS的典型特征
7. 恶意代码植入与执行40:37

- 攻击升级:将弹窗代码替换为窃取cookie的脚本
- 会话劫持:获取管理员cookie后可直接登录后台
- 防御措施:
- 输入输出过滤
- 设置HttpOnly标志
- 内容安全策略(CSP)
三、叉SS平台40:58
1. 平台演示与操作41:09
1)XSS平台使用演示

- 平台选择:演示使用sars平台进行XSS测试,建议选择差评平台进行演示
- 账号注册:网上有免费平台可用,但需注意信息可能被平台所有者获取
- 隐私风险:使用第三方平台时,获取的所有信息都可能被平台方看到
2)平台搭建建议

- 自建优势:
- 完全掌控数据安全
- 避免信息泄露风险
- 适合隐蔽性要求高的项目
- 第三方使用场景:
- 适合学习测试用途
- 操作简单快捷
- 无需维护服务器
3)平台功能说明

- 核心功能:
- 支持http/https协议
- 提供Tor网址访问
- 支持邮箱收信功能
- 特色服务:
- 自动生成测试网址
- 提供备用域名突破屏蔽
- 开通TG交流频道处理BUG
- 注意事项:
- 仅限安全测试用途
- 数据量大时需考虑服务器性能
- 平台依赖捐赠维持运营
2. 平台使用与功能42:01

- 平台资源:该平台提供大量打点教程资源,但实际教学中不重点讲解打点技术
- 平台搭建:从零开始搭建个人XSS平台完全可行,且操作简单
- 商业陷阱:需警惕部分培训机构以"赠送平台/邀请码"为噱头的营销手段,实际价值有限
3. 平台项目创建与配置42:35

- 命名规范:建议使用"测试日期+用途"的命名方式(如rrr_test表示2023年测试)
- 模块选择:
- 默认模块:用于获取固定代码模板
- 公共模块:包含基础认证钓鱼等常见功能
- 操作流程:
- 点击"创建项目"
- 输入项目名称(示例:xss_test)
- 选择默认模块
- 进入代码生成界面
4. 平台代码获取与利用43:06

- 代码类型:
- HTTPS代码(默认)
- HTTP代码(需转换)
- 备用域名代码(用于突破屏蔽)
- 核心原理:通过诱导目标触发预设代码实现攻击
- 实施步骤:
- 复制生成的攻击代码
- 注入到存在XSS漏洞的输入点(如留言板)
- 提交触发代码执行
- 在平台查看返回结果

- 典型应用:
- 图片探测系统:记录referer、IP等信息
- 后台地址探测:通过外部图片调用实现
- 注意事项:
- 需注意代码转义问题
- 备用域名可用于规避360等安全软件的拦截
- 实际测试时应遵守法律法规
5. 平台测试与效果展示
1)BeEF平台部署与使用

- 部署方法:通过Docker运行命令docker run --rm -p 3000:3000 janes/beef启动BeEF平台,若下载过慢可添加国内源http://www.daocloud.io/
- 访问方式:部署成功后访问http://127.0.0.1:3000/ui/panel进入控制面板
2)XSS攻击演示流程

- 攻击准备:在XSS平台(https://xss.pt)创建测试项目,项目ID示例为44197
- 触发条件:当管理员访问特定信息时,会自动加载XSS攻击代码
3)攻击效果验证

- 验证方法:
- 观察浏览器请求包中是否包含XSS平台地址
- 检查XSS平台是否接收到管理员cookie等敏感信息
- 关键特征:地址栏会自动触发包含xss.php?do=project&act=view&id=44197的请求
4)信息收集分析

- 获取内容:
- 管理员访问的完整URL地址
- 当前会话的cookie信息
- 用户代理(User-Agent)等请求头数据
- 应用场景:这些信息可用于后续的会话劫持或权限提升攻击
6. 平台信息获取与利用44:21

- JS代码功能:通过JavaScript代码获取触发者的地址信息,包括地址的自带库信息
- 登录状态利用:由于目标处于登录状态,获取的地址信息可用于实现登录绕过
- 信息包含内容:地址信息中可能包含用户代理(User-Agent)、远程地址(REMOTE_ADDR)等关键认证数据
7. 平台登录实现与演示44:36
1)登录绕过原理

- 自动跳转机制:未登录状态下访问后台地址会触发自动跳转
- 认证信息伪造:通过Burp Suite等工具伪造获取到的认证信息可实现登录绕过
- 关键参数:uid参数、cookie值等认证信息是绕过登录的关键
2)实际操作演示

- 工具使用:演示使用Burp Suite进行请求拦截和修改
- 信息复制:将获取的认证信息复制到请求头中
- 验证过程:修改后重新发送请求验证登录是否成功
3)常见问题排查

- 失败原因:可能由于信息过期、格式错误或WAF拦截导致
- 解决方法:
- 检查信息是否完整复制
- 验证信息时效性
- 尝试不同编码方式绕过WAF
- 注意事项:实际操作中可能需要多次尝试才能成功
8. 平台问题与解决尝试45:31
1)浏览器调试问题

- 调试失败现象: 修改操作后无法确认是否成功,浏览器反复出现异常状态
- 解决方案尝试:
- 更换火狐浏览器进行测试
- 开启代理工具观察数据包
- 对比本地与服务器返回的cookie差异
2)Cookie验证机制分析

- 防御手段识别:
- Session验证: 采用PHPSESSID而非单纯cookie验证
- 获取不全原因: 部分网站会设置HTTP-only或Secure标志的cookie
- 实验验证:
- 完整复制cookie后可成功访问后台
- 验证失败时需检查session和token等额外验证参数
3)XSS平台搭建与利用

- BeEF框架:
- 功能特点: 专业XSS利用框架,支持多种浏览器攻击模块
- 搭建方法: 使用Docker快速部署,需开放3000端口
- 基本用法: 通过
4)存储型XSS攻防
- 攻击链构建:
- 在常用网站(如博客)植入恶意脚本
- 利用社交工程诱导访问
- 防御局限性:
- 受同源策略限制,仅能执行前端操作
- 需配合其他漏洞实现深度渗透
- 检测方法:
- 监控异常外联请求
- 分析页面加载的第三方资源
四、DOM型XSS实例分析01:08:27
1. 基本概念
- 核心区别:与存储型、反射型不同,DOM型XSS的漏洞触发完全在前端页面完成
- 代码审计重点:主要查看HTML/JS代码,无需审计PHP/JAVA等后端代码
- 数据流向:恶意输入→前端JS处理→DOM操作→漏洞触发
2. 帝国CMS漏洞实例
- 漏洞文件:/e/d6/img/index.htm
- 关键代码:
- 攻击原理:
- 通过requestURL获取浏览器地址栏参数
- 未过滤直接写入DOM(document.write)
- 构造javascript:alert(1)形式payload
3. 漏洞利用方法
- 构造方式:
- 直接修改URL参数:/e/d6/img/index.htm?url=javascript:alert(1)
- 需要绕过浏览器基础防护策略
- 特殊构造技巧:
- 使用javascript:协议头而非传统
4. 实战检测要点
- 检测目标:存在前端URL参数处理的页面
- 特征识别:
- 使用document.write/innerHTML等动态DOM操作
- 存在location/window.location等URL参数获取
- 验证方法:
- 修改参数观察DOM变化
- 测试简单payload如javascript:alert(1)
五、XSS知识体系总结01:21:28
1. 分类对比
- 反射型:
- 特点:一次性构造利用
- 触发:需要用户点击特定链接
- 存储型:
- 特点:攻击代码持久存储在数据库中
- 触发:所有访问受影响页面的用户
- DOM型:
- 特点:完全前端触发
- 触发:依赖浏览器解析机制
2. 漏洞产生场景
- 数据交互点:
- 留言板、评论系统
- 文章编辑/发布功能
- 用户资料修改
- 数据输出点:
- 文章展示页面
- 搜索结果页
- 任何用户可控数据显示区域
3. 核心原理
- 关键条件:
- 用户可控制输入内容
- 未过滤直接输出到页面
- 输出位置可执行JS代码
- 本质:控制页面显示内容→注入可执行代码
4. 危害类型
- 常见危害:
- 钓鱼攻击(伪造登录框)
- 会话劫持(窃取cookie)
- 网页挂马(恶意代码传播)
- 权限提升(配合CSRF)
数据泄露(窃取敏感信息)
-
- 注:本笔记已按照康奈尔笔记法结构化整理,保留了所有关键示例和技术细节,同时去除了课程中的非技术性对话内容。时间戳标注对应视频中的关键讲解节点,便于复习时快速定位。
六、知识小结
| 知识点 | 核心内容 | 关键要点 | 难度系数 |
| XSS漏洞原理 | 输入输出机制导致JS代码执行 | - 接收用户输入数据; - 将数据输出到页面; - JS代码被浏览器解析执行 | ★★★☆☆ |
| XSS分类 | 反射型/存储型/DOM型对比 | - 反射型:一次性构造利用; - 存储型:持久化数据库攻击; - DOM型:纯前端JS实现 | ★★★★☆ |
| 反射型XSS | 非持久化攻击特点 | - 需构造恶意链接; - 依赖受害者点击; - 实战利用难度大 | ★★☆☆☆ |
| 存储型XSS | 数据库持久化危害 | - 留言板/评论系统高发; - 可长期影响后续访问者; - 配合XSS平台窃取cookie | ★★★★★ |
| DOM型XSS | 纯前端漏洞特征 | - 不依赖后端处理; - 完全在浏览器环境触发; - 帝国CMS实例分析 | ★★★★☆ |
| XSS利用工具 | XSS平台/BEEF框架 | - XSS平台:cookie窃取基础功能; - BEEF:浏览器劫持/钓鱼攻击; - 端口扫描/社工结合 | ★★★★★ |
| 防御措施 | 常见防护与绕过 | - 输入输出过滤; - CSP策略; - httponly cookie防护 | ★★★★☆ |
| 实战案例 | 典型漏洞场景 | - UA查询平台反射案例; - 订单系统存储型案例; - 帝国CMS DOM型案例 | ★★★★☆ |