JS `Fiddler` / `Burp Suite` / `Wireshark` 抓包工具高级使用

嘿,各位观众老爷们,又见面了!今天咱们不聊妹子,聊点硬核的——JS抓包工具的高级用法。准备好,要开车了!

首先,让我们来认识一下今天的主角:Fiddler、Burp Suite、Wireshark。这三位可是抓包界的扛把子,各有千秋。

  • Fiddler: 简单易用,适合新手入门,功能也足够强大,可以用来修改请求和响应。
  • Burp Suite: 专业级选手,功能非常全面,渗透测试必备,就是配置有点复杂。
  • Wireshark: 骨灰级玩家专属,直接抓取网络数据包,协议分析神器,需要一定的网络知识。

今天咱们主要讲Fiddler和Burp Suite,Wireshark先放一边,那玩意儿太深奥,容易劝退。

第一部分:Fiddler高级玩法

Fiddler被称为“Web调试代理”,它的核心功能就是拦截HTTP/HTTPS流量,让你能够查看、修改请求和响应。

1. AutoResponder规则的高级运用

AutoResponder是Fiddler最常用的功能之一,它可以将特定的请求重定向到本地文件或其他URL。

  • 场景一:模拟接口返回数据

    假设你正在开发一个前端页面,但是后端接口还没完成,怎么办?用AutoResponder模拟接口返回数据啊!

    步骤:

    1. 在Fiddler中找到目标接口的请求。
    2. 右键选择“Save” -> “Save Response…”,将响应保存到本地文件,比如mock_data.json
    3. 修改mock_data.json文件,改成你想要的数据。
    4. 在Fiddler的AutoResponder选项卡中,勾选“Enable rules”和“Unmatched requests passthrough”。
    5. 添加一条规则,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也能帮你搞定。

    步骤:

    1. 找到线上JS/CSS文件的请求。
    2. 将JS/CSS文件下载到本地。
    3. 修改本地文件。
    4. 在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中,找到OnBeforeRequestOnBeforeResponse函数,添加如下代码:

    // 修改请求头
    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流量。

    步骤:

    1. 在Burp Suite中,打开Proxy -> Options -> Proxy Listeners。
    2. 点击“Import / export CA certificate”。
    3. 选择“Certificate in DER format”。
    4. 将证书导入到浏览器和操作系统中。
  • 设置拦截规则

    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。
  • 实战演练:破解用户密码

    假设你找到了一个登录接口,想要破解用户密码。

    步骤:

    1. 在Burp Suite中拦截登录请求。
    2. 将请求发送到Intruder模块。
    3. 在Positions选项卡中,标记密码字段为payload位置。
    4. 在Payloads选项卡中,选择payload类型为“Simple list”,添加常用的密码列表。
    5. 在Options选项卡中,设置线程数和请求超时时间。
    6. 点击“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适合专业的安全测试,功能强大。

希望今天的讲座对大家有所帮助。下次再见! 记得点赞!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注