理论知识
01 前端基础知识
1.1 HTML基础
- 定义:HTML(超文本标记语言)用于描述网页结构。
 - 标准结构:
 


内嵌脚本:
            
            
              html
              
              
            
          
          <script>JavaScript代码</script>
        
1.4 JavaScript弹窗函数
| 函数 | 描述 | 
|---|---|
alert("文本") | 
仅显示"确定"按钮的提示框 | 
confirm("文本") | 
带"确定"和"取消"的提示框 | 
prompt("文本") | 
可输入文本的对话框 | 
1.5 JavaScript事件
- 
事件三要素 :
- 事件源 (如
<a>、<div>标签) - 事件(如单击、双击)
 - 事件处理程序 (如
onclick触发的函数) 
 - 事件源 (如
 - 
示例 :
html<img src="x" onerror="JS代码" /> <!-- 图片加载失败时执行JS --> 
1.6 JavaScript伪协议
- 
通过
javascript:协议直接在URL中执行JS代码:htmljavascript:var now = new Date(); "<h1>The time is:</h1>" + now; - 
利用示例 :
html<img src=javascript:alert("xss")> 
02 XSS跨站脚本攻击
2.1 XSS定义
- 全称:Cross-Site Scripting(为避免与CSS混淆,缩写为XSS)。
 - 原理:攻击者将恶意脚本注入到网页中,其他用户访问时触发执行。
 
2.2 XSS危害
| 类型 | 影响 | 
|---|---|
| 劫持会话 | 窃取用户Cookie | 
| 钓鱼攻击 | 伪造登录页面 | 
| 篡改页面 | 插入恶意内容 | 
| 传播蠕虫 | 自动扩散攻击 | 
| 挖矿/广告 | 消耗用户资源 | 
2.3 XSS类型
| 类型 | 特点 | 数据流向 | 
|---|---|---|
| 反射型 | 恶意代码通过URL参数注入,用户点击触发 | URL → 浏览器 | 
| 存储型 | 恶意代码存入数据库,用户访问页面时触发 | 数据库 → 页面 | 
| DOM型 | 前端JS直接操作DOM导致漏洞 | URL → 浏览器(不经过服务器) | 
03 XSS漏洞利用
3.1 BeEF框架
- 功能:通过XSS漏洞劫持浏览器,执行内嵌命令(如窃取Cookie、钓鱼)。
 - 攻击流程 :
- 在漏洞页面插入Payload(如
<script src="恶意JS"></script>)。 - 诱导管理员访问含Payload的页面。
 - 通过BeEF控制台获取管理员Cookie并登录后台。
 
 - 在漏洞页面插入Payload(如
 
04 XSS漏洞防御
4.1 XSS Filter
- 过滤用户输入中的敏感字符(如
< > ' " & # javascript)。 
4.2 输入/输出过滤
- 输入验证:检查长度、格式(如邮箱、IP地址)、合法字符。
 - 输出编码 :将特殊字符转为HTML实体(如
<→<)。 
4.3 CSP(内容安全策略)
- 
作用:通过白名单限制可加载的资源(如脚本、图片)。
 - 
示例 :
htmlContent-Security-Policy: default-src 'self' *.trusted.com 
05 XSS绕过技术
| 方法 | 示例 | 
|---|---|
| 大小写绕过 | <ScRiPt>alert(1)</ScRiPt> | 
| 黑名单绕过 | 使用<img src=x onerror=alert(1)> | 
| 事件触发 | <button onclick=alert(1)>点击</button> | 
| 编码绕过 | 使用十六进制/Unicode编码(如javascript: → \x6A\x61\x76\x61...) | 
练习资源
相关操作
DOM型
|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------|
| XSS(DOM)                                                           | 
 
 |
| xss_d/?default=English123                                          | 
                                                                            |
| xss_d/?default=English 123<script>alert(1)</script> 说明存在XSS漏洞  | 
                                                                            |
| 网站源码                                                               | 
 
 |
| view source                                                        | 
                                                                            |
| xss_d/?default=English123"</option><script>alert(1)</script> | 
                                                                            |
反射型
|-------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------|
| 反射型                           | 
                                                                            |
| <script>alert(1)</script> | 
 
 |
| 查看源码                          | 
 
 |
存储型
|--------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 评论一直存在                                                             | 
                                                                                                                                                       |
| 更改限制 <input name="txtName" type="text" size="30" maxlength="30"> | 
                                                                                                                                                       |
| <script>alert(2)</script> <script>alert(1)</script>        | 
 
                                                                            |
| 每次访问这个页面都会重新加载代码并弹窗                                                | 
 
 
 |
| 当有人访问就会被攻击 使用Easy XSS保存常用语句                                        | 
                                                                                                                                                       |