写点什么

Burp Suite JSON 美化扩展

作者:qife
  • 2025-07-13
    福建
  • 本文字数:1441 字

    阅读完需:约 5 分钟

Body Only (Pretty JSON) - Burp Suite 扩展

项目描述

这是一个专为 Burp Suite 设计的扩展插件,主要功能是提取 HTTP 响应中的 JSON 数据并进行美化展示。它能够自动识别响应体中的 JSON 内容,移除常见的防护前缀(如)]}'等),并以格式化的方式呈现 JSON 数据,同时强制设置 Content-Type 为 application/json 以便于查看。

功能特性

  • 自动 JSON 识别:智能检测响应体中的 JSON 内容

  • 数据美化:自动格式化 JSON 数据,提高可读性

  • 防护前缀移除:自动清除常见的 JSON 防护前缀

  • 内容类型强制设置:统一设置 Content-Type 为 application/json

  • 响应头处理:自动提取 HTTP 响应体,忽略响应头

  • 错误处理:完善的异常捕获和错误提示机制

安装指南

  1. 确保已安装 Java 运行环境和 Burp Suite

  2. 将 Python 脚本保存为body_only_json.py

  3. 在 Burp Suite 中通过 Extender > Extensions > Add 加载该脚本

  4. 选择 Python 作为扩展类型并指定保存的文件

使用说明

安装完成后,该扩展会自动生效。当查看 HTTP 响应时:


  1. 在 Burp Suite 的消息编辑器中将显示"Body Only"标签页

  2. 该标签页会自动提取响应体中的 JSON 内容

  3. JSON 数据会被格式化显示,并移除防护前缀

  4. 内容类型会被强制设置为 application/json

示例效果

原始响应:


HTTP/1.1 200 OKContent-Type: text/plain
)]}'{"name":"John","age":30,"city":"New York"}
复制代码


扩展处理后:


HTTP/1.1 200 OKContent-Type: application/jsonContent-Length: 42
{ "name": "John", "age": 30, "city": "New York"}
复制代码

核心代码

class BodyOnlyTab(IMessageEditorTab):    def setMessage(self, content, isRequest):        if content is None or isRequest:            self._editor.setMessage(None, False)            return
try: response_str = self._helpers.bytesToString(content) header_end = self._findHeaderEnd(response_str) if header_end == -1: self._editor.setMessage(None, False) return
body = response_str[header_end:] body = self._removeJsonGuards(body).strip()
if self._isJson(body): try: json_obj = json.loads(body) pretty_json = json.dumps(json_obj, indent=2, ensure_ascii=False) except ValueError as e: self._callbacks.printError("JSON parsing error: " + str(e)) pretty_json = body else: pretty_json = body
# Force Content-Type to application/json always fake_response = ( "HTTP/1.1 200 OK\r\n" "Content-Type: application/json\r\n" "Content-Length: {}\r\n\r\n" "{}" ).format(len(pretty_json.encode('utf-8')), pretty_json)
self._editor.setMessage(self._helpers.stringToBytes(fake_response), False)
复制代码


def _removeJsonGuards(self, body):    guards = [        r'^\s*for\s*\(\s*;\s*;\s*\)\s*;\s*',        r'^\s*while\s*\(\s*1\s*\)\s*;\s*',        r'^\s*\)\]\}\'\s*',        r'^\s*/\*\*/\s*'    ]    for guard in guards:        body = re.sub(guard, '', body)    return body
复制代码


更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码


办公AI智能小助手


用户头像

qife

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
Burp Suite JSON美化扩展_安全测试_qife_InfoQ写作社区