浏览器代理安全测试工具

为AI代理提供浏览器、代理和Python沙箱,支持自动化安全测试和漏洞扫描

  • by BobongKu
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 BobongKu/silksploit-mcp

使用说明

nodriver-proxy-mcp

Give your AI agent a browser, a proxy, and a Python sandbox.
It navigates like a human, intercepts like Burp, and codes its own exploits on the fly.

韩语


为什么存在

现有的安全MCP服务器为AI提供了对流量的只读访问权限,或者只是包装CLI工具。这个给 完全自主控制:代理打开一个浏览器 绕过机器人检测,通过 MITM代理,当内置工具不够时,它 编写并运行自己的Python 把一切联系在一起。

"Scan target.com for IDOR vulnerabilities"

  1. Agent starts proxy + browser
  2. Navigates to login page, types credentials, clicks submit
  3. Captures the auth flow, extracts the JWT
  4. Replays API requests with different user IDs
  5. Writes a Python script to automate the full IDOR check
  6. Reports which endpoints are vulnerable

没有人触摸键盘。代理通过39个MCP工具完成所有操作。


为什么戊酯应该注意

它能做什么是Burp/ZAP做不到的?

Burp Suite/ZAP nodrever代理mcp
谁开车? 你手动点击 人工智能会自动完成所有事情
机器人检测 被Cloudflare、DataDome等屏蔽。 自动旁路(nodrever)
脚本编写 自己编写扩展/宏 AI可以动态编写Python脚本,并通过SDK访问所有38个工具
客户端数据 不可见 读取本地存储、会话存储、JS控制台、DOM隐藏输入
他们能一起工作吗? -- 是的--用链子穿过Burp upstream="localhost:8080"

它能做什么是其他安全MCP服务器不能做的?

大多数安全MCP服务器只是包装 curl 或只读流量查看器。这个有:

  • 真正的mitmproxy --完整的流量记录、回放、模糊测试、拦截规则、会话变量。不是简化的HTTP客户端。
  • 修改流量的两种方法 --浏览器级别(即时,CDP Fetch)或代理级别(系统范围,所有HTTP客户端)。其他MCP都不提供。
  • 使用SDK的代码模式 --人工智能编写了一个在沙盒中运行的Python脚本,在循环中调用29个工具 asyncio比赛条件、盲SQLi和需要数千次MCP往返的蛮力在几秒钟内完成。

它擅长什么

用例 代理如何处理它
IDOR 打开两个浏览器会话(受害者+攻击者),提取令牌,在循环中重放交换用户ID的请求
XSS 在输入中键入有效载荷,单击提交,检查是否 alert() 对话启动。检查DOM的注入点。
认证旁路 扫描流量以检测JWT/neneneba API密钥/会话cookie模式,提取令牌,修改后回放
API测试 捕获所有API调用,按关键字/状态进行搜索,使用regex替换进行回放,使用异常检测进行模糊处理
竟态条件 代码模式通过以下方式发送50多个并发请求 asyncio.gather() 精确计时
盲SQLi 代码模式运行二分查找提取——数百个条件请求,每个请求之间都有逻辑
CSP旁路 在浏览器级别拦截响应,在Chrome强制执行之前删除或修改内容安全策略标头

建筑

整体系统

graph TB
    Agent["🤖 AI Agent<br/>(Claude, Cursor, etc.)"]

    subgraph MCP["MCP Server Process"]
        direction LR
        PT["Proxy Tools<br/>18 tools"]
        BT["Browser Tools<br/>20 tools"]
        CT["Code-mode<br/>1 tool"]
    end

    subgraph Proxy["mitmproxy :8082"]
        Addon["Addon Script<br/>record + intercept"]
        DB[("SQLite<br/>traffic.db")]
        Addon -->|write| DB
    end

    subgraph BrowserSession["BrowserDaemon (per session)"]
        Chrome["Chrome<br/>nodriver (anti-bot)"]
        Fetch["CDP Fetch<br/>intercept hooks"]
        Chrome --- Fetch
    end

    subgraph Sandbox["Code-mode Sandbox"]
        Script["AI-generated<br/>Python script"]
        SDK["NdpSDK<br/>29 methods"]
        Script --> SDK
    end

    Target[("🎯 Target")]

    Agent <-->|"stdio JSON-RPC"| MCP
    PT --> Proxy
    BT -->|"TCP IPC<br/>JSON-RPC"| BrowserSession
    CT -->|"subprocess<br/>fork+exec"| Sandbox

    Chrome -->|"all traffic routed"| Proxy
    Proxy <-->|"HTTP/S"| Target

    SDK -.->|"direct read/write"| DB
    SDK -.->|"TCP IPC"| BrowserSession

两个拦截层

graph LR
    subgraph Layer1["Layer 1 — CDP Fetch (instant)"]
        direction LR
        C1["Chrome"] -->|"request"| F1["Fetch API<br/>inject header / block"]
        F1 -->|"modified"| P1["→ mitmproxy"]
        P2["mitmproxy →"] -->|"response"| F2["Fetch API<br/>replace body / block"]
        F2 -->|"modified"| C2["→ Chrome"]
    end

    subgraph Layer2["Layer 2 — mitmproxy (system-wide)"]
        direction LR
        Any["Any HTTP client"] --> M1["mitmproxy<br/>inject header / replace body / block"]
        M1 --> T2["→ Target"]
    end

    style Layer1 fill:#1a1a2e,stroke:#3fb950,color:#e6edf3
    style Layer2 fill:#1a1a2e,stroke:#58a6ff,color:#e6edf3

CDP提取 =每次会话仅限浏览器,即时。 mitmproxy规则 =所有流量,~5s缓存延迟,系统范围。

流程生命周期

进程 父进程 IPC方法 自动清理
中间人代理 MCP服务器 SQLite(共享文件) 监视器线程在父线程死亡时终止;stderr排水管可防止管道悬挂
浏览器守护进程 MCP服务器 TCP JSON-RPC(动态端口) 父PID监视→ IPC关闭→ 终止信号→ 西格尔
铬 BrowserDaemon CDP(Chrome DevTools协议) browser.stop() 守护进程退出时
代码模式脚本 MCP服务器 环境变量(端口、会话) 作业对象/ killpg256MB RAM,60s CPU

NdpSDK——代码模式Python SDK

NdpSDK 是一个Python包装器,它公开了与异步方法相同的38个工具(代理+浏览器),专为在内部使用而设计 execute_security_code当AI需要循环、并发或多步逻辑时,这些逻辑在单个MCP调用时是不切实际的,它会使用 NdpSDK 相反。

from nodriver_proxy_mcp.sdk import NdpSDK
import asyncio

async def main():
    sdk = NdpSDK()  # auto-discovers running proxy + browser sessions

    flows = await sdk.get_traffic_summary(limit=20)
    await sdk.browser_go("https://target.com/admin")

    # Loops — this is why NdpSDK exists
    for uid in range(1, 100):
        resp = await sdk.replay_flow(
            flow_id,
            replacements=[{"regex": r"/users/\d+", "replacement": f"/users/{uid}"}]
        )
        if resp["status_code"] == 200:
            print(f"IDOR: /users/{uid}")

asyncio.run(main())

快速开始

1.安装

pip install nodriver-proxy-mcp

或来源:

git clone https://github.com/BobongKu/nodriver-proxy-mcp.git
cd nodriver-proxy-mcp
pip install .

2.添加到您的AI代理

MCP客户端 (mcp_config.json):

{
  "mcpServers": {
    "nodriver-proxy-mcp": {
      "command": "nodriver-proxy-mcp"
    }
  }
}

3.使用它

只需告诉你的AI代理该做什么。这些工具是自我描述的——代理会自动选择正确的工具。


全部39工具

代理(18)

工具 目的
manage_proxy 启动/停止mitmproxy。通过链接到Burp upstream.GUI通过 ui=True.
proxy_status 检查运行状态、端口、PID
set_scope 将录制限制在特定域
get_traffic_summary 带有ID、URL、方法、状态代码的分页流列表
inspect_flow 完整的请求/响应详细信息——标头、正文、元数据
search_traffic 按关键字、域、方法、状态代码筛选
extract_from_flow 通过JSONPath、正则表达式或CSS选择器拉取值
extract_session_variable 为保存一个值 {{placeholder}} 回放中的重用
list_session_variables 显示所有提取的变量
generate_curl 将流导出为复制粘贴curl命令
replay_flow 使用正则表达式替换重新发送+ {{var}} 替代(如Burp Repeater)
send_raw_request 从原始文本制作任意HTTP请求(SSRF保护)
add_interception_rule 实时代理流量操作:注入标头、替换正文、阻止
list_interception_rules 显示活动代理规则
remove_interception_rule 按ID删除代理规则
detect_auth_pattern 自动检测JWT、Bearer、API密钥、会话cookie、CSRF、OAuth2
fuzz_endpoint 并行模糊检测与基线异常检测
clear_traffic 清除流量数据库

浏览器(20)

工具 目的
browser_open / browser_close 启动或终止Chrome会话(反机器人绕过,默认情况下无头)
browser_list_sessions 具有PID、端口和正常运行时间的活动会话
browser_list_tabs 会话中的选项卡
browser_go / browser_back 通过导航、等待页面加载、SPA支持 wait_for
browser_click 单击CSS选择器或可见文本。返回JS警报对话框(XSS检测)。
browser_type 输入内容——登录表单、搜索框、有效载荷注入
browser_get_dom 以安全为重点的DOM:表单、脚本、iframe、注释、事件处理程序、, data-* 属性
browser_get_text 来自任何CSS选择器的文本内容
browser_get_storage 转储本地存储+会话存储(代理不可见)
browser_get_console JS控制台输出——堆栈跟踪、调试URL、CSP违规
browser_screenshot 将页面捕获为PNG格式——机器人挑战、证据、状态验证
browser_set_cookie 通过CDP设置cookie(支持httpOnly,与document.cookie不同)
browser_js 在页面上下文中执行任意JavaScript
browser_wait 等待元素/文本出现(SPA/AAJAX支持)
browser_intercept_request CDP Fetch:注入标头,阻止传出请求(即时)
browser_intercept_response CDP Fetch:替换响应体,阻止响应(即时)
browser_intercept_disable 关闭所有CDP提取拦截
browser_list_intercept_rules 显示活动的CDP提取规则

编码模式(1)

工具 目的
execute_security_code 运行AI生成的Python NdpSDK --对所有38个其他工具的编程访问。沙盒。

Burp Suite集成

使用 upstream 通过Burp将mitmproxy链接起来,以便在人工智能自动化的同时进行手动分析:

manage_proxy(action="start", upstream="localhost:8080")

交通流量: Chrome --> mitmproxy (:8082) --> Burp Suite (:8080) --> Target

两种工具看到的流量相同。人工智能自动化;需要时,您可以在Burp中进行分析。


工作流程——IDOR扫码模式

sequenceDiagram
    participant Agent as AI Agent
    participant MCP as MCP Server
    participant Proxy as mitmproxy
    participant Browser as Chrome (nodriver)
    participant Code as Code-mode (NdpSDK)
    participant Target as Target

    Note over Agent,Target: Phase 1 - Setup
    Agent->>MCP: manage_proxy(start)
    MCP->>Proxy: launch :8082
    Agent->>MCP: browser_open(proxy_port=8082)
    MCP->>Browser: launch Chrome via proxy

    Note over Agent,Target: Phase 2 - Recon
    Agent->>MCP: browser_go(target.com)
    Browser->>Proxy: all traffic captured
    Proxy->>Target: GET /login, /api/*, /mypage...
    Target-->>Browser: responses
    Agent->>MCP: get_traffic_summary()
    MCP-->>Agent: 47 flows captured
    Agent->>MCP: detect_auth_pattern()
    MCP-->>Agent: Bearer token detected

    Note over Agent,Target: Phase 3 - Attack Surface Mapping
    Agent->>MCP: search_traffic("/api/")
    MCP-->>Agent: /api/users/me, /api/orders/1042, /api/profile/317
    Agent->>MCP: extract_session_variable(token)
    MCP-->>Agent: saved as my_token
    Note right of Agent: Found 3 endpoints with ID params

    Note over Agent,Target: Phase 4 - Code-mode IDOR Sweep
    Agent->>MCP: execute_security_code(script)
    MCP->>Code: fork + sandbox

    loop every endpoint x ID 1~100
        Code->>Target: GET /api/users/[id] + my_token
        Target-->>Code: 200 with other user data / 403
        Code->>Target: GET /api/orders/[id] + my_token
        Target-->>Code: 200 with other order data / 403
        Code->>Target: GET /api/profile/[id] + my_token
        Target-->>Code: 200 with other profile / 403
    end

    Code-->>MCP: results summary
    MCP-->>Agent: /api/users: 100/100 accessible, /api/orders: 38/100, /api/profile: 0/100

故障排除

问题 修复
浏览器无法启动 安装Chrome/Chromium。 nodriver 需要一个真正的Chrome二进制文件。
SSL证书错误 信任mitmproxy CA: ~/.mitmproxy/mitmproxy-ca-cert.pem
端口已在使用中 manage_proxy(port=XXXX) --或者重新启动,孤立进程将自动终止
工具未显示 重新启动Claude Code/Cursor会话以重新加载MCP服务器
uvx 不起作用 不要使用 uvx.克隆仓库并使用 uv run --directory 相反。

许可证

麻省理工学院