让我们拥抱AI,OST插件引入MCP
原项目onscan_Expand精简名称,现更名为OST。
做 Burp 插件时,经常会遇到一个问题:插件里明明已经有很多上下文,但 AI 看不到,导致AI重复造轮子,会浪费许多token,还有的问题是已有解决方案,但是AI用不上,分出额外的精力去重复解决之前遇到过的问题。
比如 OST 里有:
当前扫描任务 扫描结果表 自定义字典 当前选中的 Payload 字典 指纹识别结果 数据收集结果 SQLite 持久化历史 浏览器请求重放结果 前端拦截页面判断逻辑
这些都不是 Burp 原生 UI 直接提供给 AI 的结构化能力,而是 OST 插件自己的运行状态。
没有 MCP 时,AI 想帮忙分析,只能依赖人手动复制:
从 OST 表格里复制 URL、状态码、标题 把响应摘要贴给 AI AI 给出建议 人再回到 OST 里切字典、重新扫描、导出结果
这个过程很慢,而且上下文容易断。
MCP 的作用,就是让 AI 通过标准接口直接访问 OST 的插件能力。
OST MCP 能做什么?
OST 1.1.7 当前提供了一组 ost.* 工具。
例如:
ost.status.get ost.tasks.list ost.tasks.search ost.tasks.get ost.scan.urls ost.scan.request ost.wordlists.list ost.wordlist.select ost.wordlist.create ost.wordlist.append ost.wordlist.put ost.wordlist.import_file ost.wordlist.delete ost.fingerprint.check ost.collect.node.get ost.history.labels ost.export.csv
这些能力对应的是 OST 插件内部已有的模块:
任务结果查询 扫描任务提交 指纹识别 数据收集读取 字典管理 历史数据读取 CSV 导出
AI 可以通过这些工具更准确地理解 OST 当前状态。
比如它可以先调用:
ost.status.get
查看插件当前配置。
再调用:
ost.tasks.search
搜索某个 Host、状态码、标题或指纹。
如果需要切换字典,可以调用:
ost.wordlist.select
如果需要临时创建一个测试字典,可以调用:
ost.wordlist.create ost.wordlist.append
这些都是 OST 插件自己的工作流,不是 Burp 原生功能。
MCP 默认关闭
虽然 OST 的 MCP server 只监听本地 127.0.0.1,但它仍然是一个能让外部客户端调用插件能力的接口。
所以从 1.1.7 开始,MCP 默认关闭。
需要手动进入:
插件配置 -> 其他配置 -> MCP 服务
勾选启用。
启用后,配置页会直接显示:
当前状态 实际 MCP Endpoint Health Check 地址
默认 endpoint 是:
http://127.0.0.1:8765/mcp
如果端口被占用,OST 会自动尝试后续端口,直到 8785。最终实际端口以配置页显示为准。
浏览器请求也是 OST 的能力
OST 里还有一个比较实用的能力:浏览器请求重放。
有些目标站点会返回前端拦截页面,比如 412、JS 校验页、验证页等。如果普通 HTTP 请求一直拿到同一个拦截响应,继续扫描就会产生大量重复无效结果。
OST 在 auto 请求模式下,可以结合拦截特征判断,必要时切换到浏览器请求。
这里同样要强调:
这不是 Burp 原生浏览器功能的 MCP 封装,而是 OST 插件内部的请求处理策略。
MCP 只是让 AI 能调用 OST 的扫描入口,并读取 OST 整理后的结果。
字典管理为什么要给 MCP?
因为字典是 OST 扫描工作流里的核心状态。
如果 AI 只能提交扫描,但不能查看或切换当前字典,它仍然无法独立完成一个完整的测试流程。
所以 OST MCP 里加入了字典管理能力:
查看字典组 查看当前选中字典 切换字典 创建临时字典 追加字典项 导入本地字典文件 覆盖字典内容 删除字典
其中覆盖和删除这类操作需要显式确认,避免误操作。
夜雨聆风