从0到1 使用mitmproxy实现对jeecg-boot精准的被动打击:点点网页,漏洞不就有了么?
字数 1565 2025-08-10 13:48:25

Mitmproxy 实战:针对 Jeecg-Boot 的被动漏洞探测

1. Mitmproxy 简介

1.1 基本概念

Mitmproxy 是一个基于 Python 的中间人代理工具,名称来源于 "Man-in-the-Middle Proxy"。它能够拦截、检查和修改 HTTP/HTTPS 流量,是安全测试和开发调试的强大工具。

1.2 核心功能

  • 流量拦截与修改
  • 请求/响应记录与重放
  • 支持 Python 脚本扩展
  • 提供命令行、终端和 Web 界面三种操作方式

1.3 与其他代理工具对比

相比 Burp Suite 等工具,Mitmproxy 的优势在于:

  • 完全开源免费
  • 可通过 Python 快速开发定制功能
  • 轻量级且易于自动化集成

2. 环境安装与配置

2.1 安装要求

  • Python 3.6 或更高版本
  • pip 包管理工具

2.2 安装步骤

# Linux
sudo pip3 install mitmproxy

# Windows (管理员权限运行)
pip3 install mitmproxy

# MacOS
brew install mitmproxy

2.3 验证安装

mitmproxy --version

2.4 证书配置

与 Burp Suite 类似,需要安装 Mitmproxy 的 CA 证书到受信任的根证书颁发机构存储区中。

3. Mitmproxy 基本使用

3.1 三种运行模式

  1. mitmproxy:终端交互式界面
  2. mitmweb:Web 界面(默认 8081 端口)
  3. mitmdump:命令行模式,适合脚本化操作

3.2 启动命令

# 默认端口 8080
mitmproxy
mitmweb

# 指定端口
mitmproxy -p 8081

4. 脚本开发基础

4.1 脚本编写模式

Mitmproxy 支持两种脚本编写模式:

模式一:函数式

import mitmproxy.http
from mitmproxy import ctx

num = 0

def request(flow: mitmproxy.http.HTTPFlow):
    global num
    num += 1
    ctx.log.info(f"We've seen {num} flows")

模式二:面向对象式(推荐)

import mitmproxy.http
from mitmproxy import ctx

class Counter:
    def __init__(self):
        self.num = 0
    
    def request(self, flow: mitmproxy.http.HTTPFlow):
        self.num += 1
        ctx.log.info(f"We've seen {self.num} flows")

addons = [Counter()]

4.2 主要事件类型

Mitmproxy 提供了多个生命周期事件钩子:

HTTP 生命周期事件

  1. http_connect:收到 HTTP CONNECT 请求时触发
  2. requestheaders:HTTP 请求头被成功读取时触发
  3. request:完整的 HTTP 请求被读取时触发
  4. responseheaders:HTTP 响应头被成功读取时触发
  5. response:完整的 HTTP 响应被读取时触发
  6. error:发生 HTTP 错误时触发

5. Jeecg-Boot 被动漏洞探测实战

5.1 问题背景

Jeecg-Boot 是一个流行的 Java 快速开发平台,存在多个已知漏洞:

  • 接口未授权访问
  • SQL 注入
  • SSTI 模板注入
  • JDBC 代码执行

实际渗透测试中遇到的挑战:

  1. 业务路由可能变化,不在标准路径下
  2. 真实接口隐藏在 JS 中,需要登录后才能发现

5.2 解决方案设计

使用 Mitmproxy 实现:

  1. 自动识别 Jeecg-Boot 站点
  2. 动态发现真实接口路径
  3. 自动验证漏洞存在
  4. 只需浏览网站即可完成探测

5.3 实现步骤

1. 指纹识别

识别 Jeecg-Boot 站点的特征:

  • 特定 HTTP 头
  • 静态资源特征
  • 特定错误页面

2. 接口提取

通过正则匹配从流量中提取真实接口路径

3. 漏洞验证

对发现的接口自动发送测试请求验证漏洞

5.4 示例代码框架

import mitmproxy.http
from mitmproxy import ctx
import re

class JeecgScanner:
    def __init__(self):
        self.targets = set()
        self.vuln_endpoints = []
    
    def response(self, flow: mitmproxy.http.HTTPFlow):
        # 1. 指纹识别
        if self.is_jeecg_boot(flow):
            ctx.log.info(f"Jeecg-Boot identified: {flow.request.url}")
            self.targets.add(flow.request.host)
            
            # 2. 接口提取
            endpoints = self.extract_endpoints(flow.response.text)
            for endpoint in endpoints:
                ctx.log.info(f"Found API endpoint: {endpoint}")
                
                # 3. 漏洞验证
                if self.check_vulnerability(endpoint):
                    self.vuln_endpoints.append(endpoint)
                    self.save_to_csv(endpoint)
    
    def is_jeecg_boot(self, flow):
        # 实现指纹识别逻辑
        pass
    
    def extract_endpoints(self, text):
        # 实现接口提取逻辑
        pass
    
    def check_vulnerability(self, endpoint):
        # 实现漏洞验证逻辑
        pass
    
    def save_to_csv(self, endpoint):
        # 保存结果
        pass

addons = [JeecgScanner()]

5.5 运行方式

mitmweb -s jeecg_scanner.py

6. 高级技巧与优化

6.1 性能优化

  • 使用缓存减少重复处理
  • 异步处理耗时操作
  • 限制扫描范围避免误操作

6.2 错误处理

  • 添加异常捕获防止脚本崩溃
  • 实现重试机制处理网络问题
  • 记录详细日志便于调试

6.3 扩展功能

  • 集成其他扫描工具
  • 实现自动化报告生成
  • 添加通知机制(邮件、Webhook等)

7. 安全与法律注意事项

  1. 仅对授权目标使用此技术
  2. 遵守当地法律法规
  3. 测试前获取书面授权
  4. 避免对生产环境造成影响

8. 总结

Mitmproxy 结合 Python 脚本能够实现高度定制化的被动漏洞扫描:

  • 自动识别目标系统
  • 动态发现隐藏接口
  • 精准验证漏洞存在
  • 极大提高测试效率

通过本文介绍的方法,只需正常浏览网站,后台脚本即可自动完成漏洞探测工作,显著提升安全测试的效率和质量。

Mitmproxy 实战:针对 Jeecg-Boot 的被动漏洞探测 1. Mitmproxy 简介 1.1 基本概念 Mitmproxy 是一个基于 Python 的中间人代理工具,名称来源于 "Man-in-the-Middle Proxy"。它能够拦截、检查和修改 HTTP/HTTPS 流量,是安全测试和开发调试的强大工具。 1.2 核心功能 流量拦截与修改 请求/响应记录与重放 支持 Python 脚本扩展 提供命令行、终端和 Web 界面三种操作方式 1.3 与其他代理工具对比 相比 Burp Suite 等工具,Mitmproxy 的优势在于: 完全开源免费 可通过 Python 快速开发定制功能 轻量级且易于自动化集成 2. 环境安装与配置 2.1 安装要求 Python 3.6 或更高版本 pip 包管理工具 2.2 安装步骤 2.3 验证安装 2.4 证书配置 与 Burp Suite 类似,需要安装 Mitmproxy 的 CA 证书到受信任的根证书颁发机构存储区中。 3. Mitmproxy 基本使用 3.1 三种运行模式 mitmproxy :终端交互式界面 mitmweb :Web 界面(默认 8081 端口) mitmdump :命令行模式,适合脚本化操作 3.2 启动命令 4. 脚本开发基础 4.1 脚本编写模式 Mitmproxy 支持两种脚本编写模式: 模式一:函数式 模式二:面向对象式(推荐) 4.2 主要事件类型 Mitmproxy 提供了多个生命周期事件钩子: HTTP 生命周期事件 http_connect :收到 HTTP CONNECT 请求时触发 requestheaders :HTTP 请求头被成功读取时触发 request :完整的 HTTP 请求被读取时触发 responseheaders :HTTP 响应头被成功读取时触发 response :完整的 HTTP 响应被读取时触发 error :发生 HTTP 错误时触发 5. Jeecg-Boot 被动漏洞探测实战 5.1 问题背景 Jeecg-Boot 是一个流行的 Java 快速开发平台,存在多个已知漏洞: 接口未授权访问 SQL 注入 SSTI 模板注入 JDBC 代码执行 实际渗透测试中遇到的挑战: 业务路由可能变化,不在标准路径下 真实接口隐藏在 JS 中,需要登录后才能发现 5.2 解决方案设计 使用 Mitmproxy 实现: 自动识别 Jeecg-Boot 站点 动态发现真实接口路径 自动验证漏洞存在 只需浏览网站即可完成探测 5.3 实现步骤 1. 指纹识别 识别 Jeecg-Boot 站点的特征: 特定 HTTP 头 静态资源特征 特定错误页面 2. 接口提取 通过正则匹配从流量中提取真实接口路径 3. 漏洞验证 对发现的接口自动发送测试请求验证漏洞 5.4 示例代码框架 5.5 运行方式 6. 高级技巧与优化 6.1 性能优化 使用缓存减少重复处理 异步处理耗时操作 限制扫描范围避免误操作 6.2 错误处理 添加异常捕获防止脚本崩溃 实现重试机制处理网络问题 记录详细日志便于调试 6.3 扩展功能 集成其他扫描工具 实现自动化报告生成 添加通知机制(邮件、Webhook等) 7. 安全与法律注意事项 仅对授权目标使用此技术 遵守当地法律法规 测试前获取书面授权 避免对生产环境造成影响 8. 总结 Mitmproxy 结合 Python 脚本能够实现高度定制化的被动漏洞扫描: 自动识别目标系统 动态发现隐藏接口 精准验证漏洞存在 极大提高测试效率 通过本文介绍的方法,只需正常浏览网站,后台脚本即可自动完成漏洞探测工作,显著提升安全测试的效率和质量。