目录
一、浏览器开发者工具
| 面板 | 用途 | 安全测试场景 |
|---|
| Elements | DOM/CSS查看编辑 | 篡改HTML、查看隐藏表单 |
| Console | JS交互 | 执行XSS payload、测试DOM Clobbering |
| Sources | JS调试 | 反混淆、断点调试、Snippet执行 |
| Network | 请求监控 | 分析API、查看响应、CORS检查 |
| Application | 存储管理 | 查看Cookie(HttpOnly)、localStorage、IndexedDB |
| Security | HTTPS/证书 | 检查SSL配置、混合内容 |
| Lighthouse | 性能审计 | 间接发现安全问题 |
关键快捷键
F12 / Ctrl+Shift+I → 打开DevTools
Ctrl+Shift+C → 元素选择器
Ctrl+Shift+F → 全局搜索(搜索所有JS文件内容!)
Ctrl+P → 文件搜索(JS/CSS/HTML)
Ctrl+Shift+P → "snippet" → 创建JS片段
二、Burp Suite前端测试
关键功能
| 功能 | 用途 |
|---|
| Proxy | 拦截修改HTML/JS/CSS |
| Repeater | 重复发送修改后的API请求 |
| Intruder | 批量payload测试 (XSS/SQL/参数fuzzing) |
| Collaborator | 检测外带数据(XSS/SSRF/CSS注入) |
| DOM Invader | 自动检测DOM XSS |
| WebSocket | WS消息截获和修改 |
| Autorize插件 | 自动IDOR检测 |
Burp测试流程
1. 配置浏览器代理 → Burp Proxy
2. 浏览目标网站,所有流量经Burp
3. 用Target → Site map 查看所有请求
4. 用Repeater测试单个请求(修改参数/Header)
5. 用Intruder批量fuzzing(payload位置+字典)
6. 用Collaborator检测外带数据(OOB testing)
三、JS分析与调试工具
反混淆工具
| 工具 | 用途 |
|---|
| de4js | 自动识别混淆类型并反混淆 |
| JS Nice | ML驱动的变量重命名和美化 |
| Prettier | 代码格式化 |
| webcrack | Webpack/Babel打包的JS解包 |
| Babel AST Explorer | AST级别分析和转换 |
调试分析工具
| 工具 | 用途 |
|---|
| Chrome Snippets | 创建和保存JS测试脚本 |
| Override (DevTools) | 覆盖线上JS/CSS文件(调试修改) |
| Console API | debug(), monitor(), getEventListeners() |
| Performance | 性能分析(发现重排重绘异常) |
| Coverage | 未使用的JS/CSS代码分析 |
动态Hook
// 劫持eval查看解密内容
const _eval = window.eval;
window.eval = function(code) {
console.log('EVAL:', code);
return _eval(code);
};
// 劫持fetch查看API请求
const _fetch = window.fetch;
window.fetch = function(...args) {
console.log('FETCH:', args);
return _fetch.apply(this, args);
};
// 监控DOM修改
new MutationObserver(mutations => {
mutations.forEach(m => console.log('DOM:', m));
}).observe(document.body, { childList: true, subtree: true });
四、前端安全扫描工具
自动化扫描
| 工具 | 用途 | 特点 |
|---|
| OWASP ZAP | Web应用扫描 | 开源、有API、支持AJAX Spider |
| XSStrike | XSS自动化 | 智能payload生成、WAF检测 |
| dalfox | XSS扫描 | Go语言、快速、支持DOM XSS |
| Nuclei | 漏洞模板扫描 | 大量社区模板 |
| retire.js | JS库漏洞 | 检测已知CVE的JS库 |
| npm audit | npm依赖漏洞 | Node.js项目依赖审计 |
DOM XSS检测
// 手动DOM XSS检测脚本
// 在Console中执行,监控危险的sink
// 1. 监控 innerHTML
const desc = Object.getOwnPropertyDescriptor(Element.prototype, 'innerHTML');
Object.defineProperty(Element.prototype, 'innerHTML', {
set: function(val) {
console.trace('innerHTML set:', val);
desc.set.call(this, val);
}
});
// 2. 监控 document.write
const _write = document.write;
document.write = function(...args) {
console.trace('document.write:', args);
return _write.apply(this, args);
};
五、自动化与脚本工具
快速检测脚本
# 1. 安全头检查
curl -sI https://target.com | grep -iE \
'strict-transport|content-security|frame-options|x-content-type|x-xss|referrer-policy'
# 2. CORS配置检查
curl -sI -H "Origin: https://evil.com" https://api.target.com/endpoint \
| grep -i access-control
# 3. 子域枚举
subfinder -d target.com
# 前端相关:CDN域名、静态资源域名可接管
# 4. JS文件发现和分析
waybackurls target.com | grep '\.js$' | sort -u > js_files.txt
while read url; do
curl -s "$url" | grep -oP '(apiKey|token|secret|password)[^"]*'
done < js_files.txt
Tampermonkey脚本(浏览器端自动化)
// ==UserScript==
// @name Security Audit Helper
// @match https://target.com/*
// ==/UserScript==
(function() {
// 1. 查找所有输入框,测试XSS payload
document.querySelectorAll('input, textarea').forEach(el => {
el.value = '<img src=x onerror=console.log("XSS_TEST")>';
el.dispatchEvent(new Event('input'));
});
// 2. 查找隐藏的API端点(link标签)
document.querySelectorAll('[href*="api"]').forEach(el => {
console.log('API endpoint:', el.href);
});
// 3. 列出所有全局变量(可能暴露内部状态)
Object.keys(window).filter(k => !k.startsWith('on')).forEach(k => {
console.log('Global:', k, typeof window[k]);
});
})();
六、前端基础技能总结
技能矩阵
| 技能 | 基础 | 中级 | 高级 | 专家 |
|---|
| HTML | 标签结构 | DOM操作 | HTML注入/绕过 | mXSS |
| CSS | 选择器/布局 | CSS注入 | 数据泄露 | 侧信道 |
| JS | 语法基础 | DOM/AJAX | XSS/WAF绕过 | 原型链污染 |
| 安全模型 | SOP认知 | CORS分析 | CSP绕过 | Browser Exploit |
| 框架 | 理解MVVM | XSS防护 | 框架漏洞 | SSR攻击 |
| API | REST调用 | 参数fuzzing | IDOR/批量赋值 | GraphQL攻击 |
学习路径回顾
第1周: HTML (4节) → 理解Web页面结构
第2周: CSS (4节) → 理解样式注入和侧信道
第3周: JS基础 (4节) → 掌握核心语法和DOM操作
第4周: JS进阶 (5节) → 掌握XSS、原型链、CSTI
第5周: 安全模型 (3节)→ 理解浏览器安全深层机制
第6周: 安全模型 (2节)→ 框架安全和认证机制
第7周: API安全 (3节) → REST/GraphQL攻击
第8周: 综合实践 → 结合Burp/ZAP实战
关联模块
常用参考
返回 前端基础总目录