Burp Suite JSON美化扩展
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响应体,忽略响应头
- 错误处理:完善的异常捕获和错误提示机制
安装指南
- 确保已安装Java运行环境和Burp Suite
- 将Python脚本保存为
body_only_json.py - 在Burp Suite中通过Extender > Extensions > Add加载该脚本
- 选择Python作为扩展类型并指定保存的文件
使用说明
安装完成后,该扩展会自动生效。当查看HTTP响应时:
- 在Burp Suite的消息编辑器中将显示"Body Only"标签页
- 该标签页会自动提取响应体中的JSON内容
- JSON数据会被格式化显示,并移除防护前缀
- 内容类型会被强制设置为application/json
示例效果
原始响应:
HTTP/1.1 200 OK
Content-Type: text/plain
)]}'
{"name":"John","age":30,"city":"New York"}
扩展处理后:
HTTP/1.1 200 OK
Content-Type: application/json
Content-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智能小助手)
公众号二维码


浙公网安备 33010602011771号