嘿,各位观众老爷们,又见面了!今天咱们不聊妹子,聊点硬核的——JS抓包工具的高级用法。准备好,要开车了!
首先,让我们来认识一下今天的主角:Fiddler、Burp Suite、Wireshark。这三位可是抓包界的扛把子,各有千秋。
- Fiddler: 简单易用,适合新手入门,功能也足够强大,可以用来修改请求和响应。
- Burp Suite: 专业级选手,功能非常全面,渗透测试必备,就是配置有点复杂。
- Wireshark: 骨灰级玩家专属,直接抓取网络数据包,协议分析神器,需要一定的网络知识。
今天咱们主要讲Fiddler和Burp Suite,Wireshark先放一边,那玩意儿太深奥,容易劝退。
第一部分:Fiddler高级玩法
Fiddler被称为“Web调试代理”,它的核心功能就是拦截HTTP/HTTPS流量,让你能够查看、修改请求和响应。
1. AutoResponder规则的高级运用
AutoResponder是Fiddler最常用的功能之一,它可以将特定的请求重定向到本地文件或其他URL。
-
场景一:模拟接口返回数据
假设你正在开发一个前端页面,但是后端接口还没完成,怎么办?用AutoResponder模拟接口返回数据啊!
步骤:
- 在Fiddler中找到目标接口的请求。
- 右键选择“Save” -> “Save Response…”,将响应保存到本地文件,比如
mock_data.json
。 - 修改
mock_data.json
文件,改成你想要的数据。 - 在Fiddler的AutoResponder选项卡中,勾选“Enable rules”和“Unmatched requests passthrough”。
- 添加一条规则,
IF url contains api/user/profile THEN return mock_data.json
。
这样,所有包含
api/user/profile
的请求都会返回mock_data.json
的内容,前端就可以愉快地进行开发了。代码示例 (mock_data.json):
{ "code": 200, "message": "success", "data": { "username": "test_user", "email": "[email protected]" } }
-
场景二:替换线上JS/CSS文件
如果你想在不修改线上代码的情况下,调试一些样式或者JS逻辑,AutoResponder也能帮你搞定。
步骤:
- 找到线上JS/CSS文件的请求。
- 将JS/CSS文件下载到本地。
- 修改本地文件。
- 在AutoResponder中添加规则,
IF url contains main.js THEN return D:local_filesmain.js
。
这样,线上页面加载
main.js
时,实际上加载的是你本地修改后的文件。注意,调试完成后一定要取消这个规则,否则你的用户也会加载到你本地的文件。 -
更高级的匹配规则
AutoResponder支持更复杂的匹配规则,比如正则表达式。
例如,
REGEX:(?insx).*api/user/([0-9]+).*
可以匹配所有包含api/user/
后面跟着数字的URL。你可以使用
$1
、$2
等变量来引用正则表达式中捕获的组。例如,
IF REGEX:(?insx).*api/user/([0-9]+).* THEN return D:local_filesuser_$1.json
,这条规则会根据用户ID加载不同的mock数据。规则类型 描述 示例 EXACT:
精确匹配URL EXACT:https://example.com/api/user
CONTAINS:
URL包含指定字符串 CONTAINS:api/user
REGEX:
使用正则表达式匹配URL REGEX:(?insx).*api/user/([0-9]+).*
*
通配符,匹配任意字符 *example.com*
2. FiddlerScript的妙用
FiddlerScript是Fiddler的灵魂,它允许你用类似JScript.NET的语言编写脚本,来定制Fiddler的行为。
-
修改请求头和响应头
有时候你需要修改请求头或响应头,比如添加token、修改User-Agent等。
在FiddlerScript中,找到
OnBeforeRequest
和OnBeforeResponse
函数,添加如下代码:// 修改请求头 if (oSession.uriContains("api/")) { oSession.oRequest.headers.Add("Authorization", "Bearer YOUR_TOKEN"); } // 修改响应头 if (oSession.uriContains("api/")) { oSession.oResponse.headers.Add("Access-Control-Allow-Origin", "*"); }
这段代码会在所有包含
api/
的请求中添加Authorization
头,并在所有包含api/
的响应中添加Access-Control-Allow-Origin
头。 -
修改请求体和响应体
FiddlerScript也可以用来修改请求体和响应体。
// 修改请求体 if (oSession.uriContains("api/post")) { var requestBody = oSession.GetRequestBodyAsString(); var json = JSON.parse(requestBody); json.username = "hacked_user"; oSession.RequestBody = System.Text.Encoding.UTF8.GetBytes(JSON.stringify(json)); } // 修改响应体 if (oSession.uriContains("api/get")) { var responseBody = oSession.GetResponseBodyAsString(); var json = JSON.parse(responseBody); json.data.email = "[email protected]"; oSession.ResponseBody = System.Text.Encoding.UTF8.GetBytes(JSON.stringify(json)); }
这段代码会在所有包含
api/post
的请求中,将请求体中的username
字段修改为hacked_user
,并在所有包含api/get
的响应中,将响应体中的email
字段修改为[email protected]
。 -
自定义Fiddler UI
FiddlerScript甚至可以用来修改Fiddler的UI,比如添加自定义菜单、按钮等。这个比较高级,感兴趣的可以自己研究。
3. Fiddler插件的使用
Fiddler有很多强大的插件,可以扩展Fiddler的功能。
- JSON Viewer: 以更友好的方式显示JSON数据。
- Request To Text: 将请求转换为代码片段,方便复制到代码中。
- CertMaker: 用于生成和管理HTTPS证书。
第二部分:Burp Suite高级玩法
Burp Suite是专业的Web安全测试工具,功能非常强大,但是配置也比较复杂。
1. Proxy模块的高级配置
Proxy模块是Burp Suite的核心,它负责拦截HTTP/HTTPS流量。
-
拦截HTTPS流量
Burp Suite需要安装CA证书才能拦截HTTPS流量。
步骤:
- 在Burp Suite中,打开Proxy -> Options -> Proxy Listeners。
- 点击“Import / export CA certificate”。
- 选择“Certificate in DER format”。
- 将证书导入到浏览器和操作系统中。
-
设置拦截规则
Burp Suite可以设置拦截规则,只拦截你感兴趣的流量。
在Proxy -> Options -> Intercept Client Requests/Responses中,可以设置拦截规则。
例如,你可以只拦截包含
api/
的请求。 -
使用Invisible Proxy
Invisible Proxy允许你拦截非HTTP协议的流量,比如WebSocket。
在Proxy -> Options -> Proxy Listeners中,勾选“Support invisible proxying”。
2. Intruder模块的暴力破解
Intruder模块是Burp Suite的暴力破解工具,可以用来破解密码、枚举用户ID等。
-
攻击模式
Intruder模块支持多种攻击模式:
- Sniper: 一个payload位置,逐个替换。
- Battering ram: 多个payload位置,使用同一个payload。
- Pitchfork: 多个payload位置,使用不同的payload列表,一一对应。
- Cluster bomb: 多个payload位置,payload列表交叉组合。
-
Payload类型
Intruder模块支持多种payload类型:
- Simple list: 简单的字符串列表。
- Runtime file: 从文件中读取payload。
- Character substitution: 字符替换。
- Recursive grep: 从响应中提取payload。
- Extension generated: 使用Burp Suite扩展生成payload。
-
实战演练:破解用户密码
假设你找到了一个登录接口,想要破解用户密码。
步骤:
- 在Burp Suite中拦截登录请求。
- 将请求发送到Intruder模块。
- 在Positions选项卡中,标记密码字段为payload位置。
- 在Payloads选项卡中,选择payload类型为“Simple list”,添加常用的密码列表。
- 在Options选项卡中,设置线程数和请求超时时间。
- 点击“Start attack”开始攻击。
Burp Suite会逐个尝试密码列表中的密码,并根据响应结果判断密码是否正确。
3. Repeater模块的手动测试
Repeater模块允许你手动修改和重放请求,用于测试各种漏洞。
-
修改请求参数
你可以修改请求参数,测试是否存在SQL注入、XSS等漏洞。
-
修改请求头
你可以修改请求头,测试是否存在HTTP头注入、CSRF等漏洞。
-
重放请求
你可以重放请求,测试是否存在重放攻击漏洞。
4. Scanner模块的自动化扫描
Scanner模块是Burp Suite的自动化扫描器,可以自动检测Web应用中的各种漏洞。
-
主动扫描
主动扫描会发送大量的请求来测试漏洞,可能会对目标系统造成影响。
-
被动扫描
被动扫描会分析Proxy模块拦截的流量,检测潜在的漏洞,对目标系统没有影响。
5. Burp Suite扩展的使用
Burp Suite支持扩展,可以扩展Burp Suite的功能。
-
常用扩展
- Collaborator Everywhere: 检测隐藏的漏洞。
- Software Vulnerability Scanner: 检测已知软件漏洞。
- JSON Beautifier: 美化JSON数据。
总结
Fiddler和Burp Suite都是非常强大的抓包工具,掌握它们的高级用法可以让你在Web开发、调试和安全测试中事半功倍。
- Fiddler适合日常开发和调试,简单易用。
- Burp Suite适合专业的安全测试,功能强大。
希望今天的讲座对大家有所帮助。下次再见! 记得点赞!