├── README.md ├── UI-1.png └── UI-2.png /README.md: -------------------------------------------------------------------------------- 1 | # XSS-Detector: Burp Suite XSS漏洞检测扩展 2 | 3 | [![JAVA](https://img.shields.io/badge/Java-11%2B-brightgreen.svg)](https://www.oracle.com/java/) 4 | [![Burp Suite](https://img.shields.io/badge/Burp%20Suite-2021+-orange.svg)](https://portswigger.net/burp) 5 | [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) 6 | 7 | 8 | 9 | 10 | ## 架构概览 11 | 12 | XSS-Detector是一款面向Burp Suite的扩展插件,专注于检测Web应用中的跨站脚本(XSS)漏洞。本插件采用多线程并发设计,通过精确的请求-响应-漏洞映射关系,提升测试效率和结果准确性。 13 | 14 | 15 | 16 | ### 核心技术栈 17 | 18 | - **Java并发框架**:采用`ExecutorService`与`Semaphore`进行请求并发控制 19 | - **Burp Extender API**:集成Burp Suite功能,处理HTTP请求/响应 20 | - **线程安全数据结构**:使用`AtomicInteger`和`ConcurrentHashMap`确保数据一致性 21 | - **基于UUID的唯一标识系统**:实现请求与漏洞记录的精确关联 22 | - **Swing UI组件**:双面板界面设计,清晰呈现测试结果 23 | 24 | ## 界面使用指南 25 | [![UI-1](https://github.com/Deep0/XSS-Detector/blob/main/UI-1.png?raw=true)](UI1) 26 | [![UI-2](https://github.com/Deep0/XSS-Detector/blob/main/UI-2.png?raw=true)](UI2) 27 | ### 1. 配置面板 28 | 29 | 位于插件顶部的标签页,提供核心配置选项: 30 | 31 | #### 1.1 Payload配置 32 | 33 | * **功能**:自定义XSS测试载荷列表 34 | * **操作**:在文本区域中每行输入一个payload 35 | * **语法**:支持标准HTML、JavaScript的XSS向量 36 | * **示例**:``, `">` 37 | * **最佳实践**:根据目标应用类型选择适合的payload,避免过于复杂的向量 38 | 39 | #### 1.2 范围控制 40 | 41 | * **白名单配置**: 42 | * **格式**:每行一个正则表达式 43 | * **匹配规则**:URL与任一正则匹配则进行测试 44 | * **示例**:`^https://example\.com/.*` 45 | 46 | * **黑名单配置**: 47 | * **格式**:每行一个正则表达式 48 | * **匹配规则**:URL与任一正则匹配则跳过测试 49 | * **优先级**:黑名单规则优先于白名单规则 50 | 51 | * **Burp作用域集成**: 52 | * 勾选"使用Burp作用域"可直接采用Burp已配置的目标范围 53 | * 与白名单可同时使用,形成"或"的关系 54 | 55 | #### 1.3 并发设置 56 | 57 | * **最大并发任务**:调整同时发送的HTTP请求数 58 | * **调优建议**: 59 | * 高性能服务器:设置为10-20 60 | * 普通应用:设置为5-10 61 | * 脆弱系统:设置为1-3 62 | 63 | #### 1.4 操作按钮 64 | 65 | * **保存配置**:将当前配置保存到文件系统,支持跨会话使用 66 | * **加载配置**:从文件系统读取已保存的配置 67 | * **清除数据**:重置插件状态,清空所有记录和结果 68 | 69 | ### 2. 请求列表(左侧表格) 70 | 71 | 显示被拦截和处理的HTTP请求: 72 | 73 | * **列说明**: 74 | * **URL**:请求的目标地址 75 | * **方法**:HTTP方法(GET、POST等) 76 | * **参数**:包含的参数列表 77 | * **状态码**:HTTP响应状态码 78 | * **测试状态**:当前请求的测试进度与结果 79 | 80 | * **交互操作**: 81 | * **单击选择**:显示请求/响应详情,并在右侧显示相关漏洞 82 | * **右键菜单**:提供额外操作(如重发请求、复制URL等) 83 | * **列排序**:点击列标题进行升序/降序排序 84 | 85 | * **状态指示器**: 86 | * **待测试**:请求尚未进行XSS测试 87 | * **测试中...**:正在进行XSS测试 88 | * **无漏洞**:测试完成,未发现漏洞 89 | * **!!Vulnerable!!**:发现潜在XSS漏洞 90 | 91 | ### 3. 发现问题列表(右侧表格) 92 | 93 | 显示与选中请求相关的潜在XSS漏洞: 94 | 95 | * **列说明**: 96 | * **参数**:存在潜在漏洞的参数名 97 | * **Payload**:触发漏洞的测试载荷 98 | * **数据包长度**:响应包大小 99 | * **存在**:漏洞确认状态(✓表示确认存在) 100 | * **响应码**:对应响应的HTTP状态码 101 | 102 | * **颜色指示**: 103 | * **橘黄色行**:表示高置信度的漏洞(响应中包含完整payload) 104 | * **普通行**:表示低置信度的可能漏洞或测试记录 105 | 106 | * **交互操作**: 107 | * **单击选择**:在下方显示包含漏洞的请求和响应详情 108 | * **双击操作**:快速跳转到响应中payload位置 109 | 110 | ### 4. 请求/响应查看器(底部面板) 111 | 112 | 展示选中项的HTTP请求和响应内容: 113 | 114 | * **请求查看器(左侧)**: 115 | * 显示原始HTTP请求,包括参数和载荷 116 | * 支持语法高亮,便于分析 117 | * 支持文本查找功能(Ctrl+F) 118 | 119 | * **响应查看器(右侧)**: 120 | * 显示完整HTTP响应,包括头部和正文 121 | * 自动高亮显示payload位置 122 | * 支持多种查看模式(原始/渲染/十六进制) 123 | 124 | * **辅助分析功能**: 125 | * **高亮匹配**:自动标记响应中与payload匹配的部分 126 | * **上下文分析**:显示payload周围的HTML/JS上下文 127 | 128 | ## 工作流程指南 129 | 130 | 1. **初始配置**: 131 | * 设置合适的payload列表 132 | * 配置目标范围(白名单/黑名单) 133 | * 调整并发参数 134 | 135 | 2. **获取请求**: 136 | * 通过Burp代理浏览目标应用 137 | * 或从Burp其他工具(如Spider)导入请求 138 | 139 | 3. **执行测试**: 140 | * 点击请求列表中的项目开始测试 141 | * 观察测试状态变化和进度 142 | 143 | 4. **分析结果**: 144 | * 查看发现问题列表中的潜在漏洞 145 | * 通过请求/响应查看器验证漏洞的真实性 146 | * 特别关注橘黄色高亮的高置信度漏洞 147 | 148 | 5. **导出报告**: 149 | * 使用右键菜单将发现的漏洞导出为HTML/CSV格式 150 | * 或将漏洞发送到Burp的Issue活动面板 151 | 152 | ## 高级技巧 153 | 154 | * **批量测试**:选中多个请求同时进行测试,提高效率 155 | * **自定义策略**:针对不同类型的应用调整payload列表 156 | * **筛选结果**:使用表格过滤功能快速定位特定类型的漏洞 157 | * **会话管理**:对需要认证的应用,确保测试请求包含有效Cookie 158 | 159 | ## 技术实现细节 160 | 161 | ### 并发测试框架 162 | 163 | 采用Semaphore控制并发请求数量,避免目标系统过载: 164 | 165 | ```java 166 | private Semaphore requestSemaphore; // 并发请求控制器 167 | private AtomicInteger activeTaskCount = new AtomicInteger(0); // 原子任务计数器 168 | private ExecutorService threadPool; // 线程池管理器 169 | ``` 170 | 171 | 通过`maxConcurrentTasks`参数控制并发度,用户可根据目标系统特性调整并发数量,平衡测试速度与系统负载。 172 | 173 | ### XSS检测机制 174 | 175 | 插件通过参数注入自定义payload,然后分析响应内容判断是否存在潜在XSS漏洞: 176 | 177 | ```java 178 | // 注入XSS payload并检查响应 179 | if (responseBody.contains(payload)) { 180 | // 潜在的XSS漏洞 181 | String issue = "可能的XSS漏洞 - 参数: " + paramName + ", Payload: [" + payload + "]"; 182 | vulnerableRecordsMap.put(issueKey, record); 183 | } 184 | ``` 185 | 186 | 插件支持自定义payload列表,可根据不同场景需求调整测试向量。测试结果通过表格清晰展示,支持按参数和payload分类。 187 | 188 | ### 数据关联机制 189 | 190 | 采用基于UUID的关联系统,确保请求、响应和漏洞记录间的精确映射: 191 | 192 | ```java 193 | private Map vulnerableRecordsMap = new HashMap<>(); 194 | private Map rowToVulnIdMap = new ConcurrentHashMap<>(); 195 | ``` 196 | 197 | 每个漏洞记录通过唯一ID前缀与描述性键值关联,实现高效查找和精确显示。此设计解决了多线程环境下的数据关联问题,确保UI展示与后台数据一致。 198 | 199 | ## 系统需求 200 | 201 | - JDK 11+ 202 | - Burp Suite Professional/Community 2020.12+ 203 | - 最小内存: 2GB (推荐4GB) 204 | 205 | ## 构建与安装 206 | 207 | 使用Gradle构建系统: 208 | 209 | ```bash 210 | ./gradlew build 211 | ``` 212 | 213 | 生成的JAR文件可直接在Burp Suite的Extender面板中加载。 214 | 215 | --- 216 | 217 | *XSS-Detector 通过并发测试和精确的数据关联机制,为Web应用安全测试提供可靠的XSS漏洞检测能力。* 218 | -------------------------------------------------------------------------------- /UI-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deep0/XSS-Detector/d5c0097e7d8ac7d9d85caef18721241bbe03fabc/UI-1.png -------------------------------------------------------------------------------- /UI-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deep0/XSS-Detector/d5c0097e7d8ac7d9d85caef18721241bbe03fabc/UI-2.png --------------------------------------------------------------------------------