dsh-web-recon

by sherconan

工具与能力github收录于 08-23

dsh-web-recon · Web 系统侦察

dsh-web-recon · Web system reconnaissance

安装

dsh plugin --profile web add github:sherconan/dsh-web-recon

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

English | 中文

给 DeepSeek Harness 的插件。摸清一个网页系统怎么运作,只摸一次。

它解决什么问题

让 agent 自动化一个网页后台,最常见的做法是:截图 → 找按钮 → 点 → 再截图 → 再找。这个做法有三个毛病:

  1. 贵。 一张截图几千 token,一个流程几十张。
  2. 脆。 认坐标和像素,页面一改版就全崩。
  3. 不沉淀。 这次花两小时摸清了,换个会话从零再来一遍。

真相是:按钮背后是 HTTP 接口,像素背后是可访问性树。两者都便宜得多,也稳定得多。

这个插件把一次侦察的结果固化成这个系统的作战手册——接口、鉴权方式、关键控件——以后所有同类任务照手册走,不再看页面。

效果长什么样

对一个单页应用侦察一次,产出(真实结果):

识别出 6 类应用接口;可访问性树 896 个节点
接口所在主机:api.gleif.org、challengemanagement.gleif.org

| 方法 | 主机          | 路径                      | 查询参数        | 鉴权     |
| GET | api.gleif.org | /api/v1/lei-records       | filter[fulltext] | 无      |
| GET | api.gleif.org | /api/v1/autocompletions   | q, field         | 无      |
| GET | challenge…    | /users/auth               | —                | XSRF 令牌 |

它一个按钮都没点,就知道这个系统的搜索该怎么调。界面和接口不在同一台主机上——这是单页应用的常态,也是照着界面摸索永远绕不过去的坑。

安装

dsh plugin --profile web add github:sherconan/dsh-web-recon

纯 JavaScript,零运行时依赖,无需构建。不需要 Playwright,不下载任何浏览器——直接用 Node 内置的 WebSocket 连 Chrome 的调试协议。

需要本机装有 Chrome、Chromium 或 Edge 之一(也可用环境变量 DSH_WEB_RECON_CHROME 指定路径)。

安全边界

这个插件要碰登录态,所以边界是设计的第一位:

  • 专用浏览器。 它跑自己的 Chrome、自己的配置目录,绝不接管你日常那个浏览器。它唯一能看到的登录态,是你在这个专用浏览器里亲手登录的那几个站。你的邮箱、网银、内网系统它碰不到。
  • 站点白名单。 未授权的站点直接拒绝,不是警告。授权带时间戳,白名单本身就是审计记录。
  • 凭据只由你输入。 只有登录这一个动作会开可见窗口,让你本人登录;其余全程无头,不弹窗。插件不会替你输密码,也不会向你索要密码。
  • 只回摘要。 原始抓包和完整可访问性树不会进对话——否则省下来的 token 等于又还回去了。

工具

工具 用途
web_site_authorize / web_site_revoke / web_site_list 站点授权与撤销
web_browser_login 开可见窗口,你本人登录一次
web_browser_close 关闭专用浏览器
web_recon 侦察一个页面,产出并累积手册
web_replay 按手册直接调接口办事(不截图、不点界面)
web_playbook_list / web_playbook_get 读已有手册(先查这个,别重复侦察)

重放:办事的那一步

拿到手册之后,web_replay 直接调接口:

  • 凭据不经手。 请求在专用浏览器的页面里发出,Cookie、CSRF、跨域全由浏览器处理,跟真实应用发的请求一样。插件从不读取、不存储、不打印任何凭据值。
  • 凭据模式自动适配。 先带登录态调;若接口是公开的(CORS 允许任意来源,按规则就不能带凭据),自动降级重试一次,并如实告诉你是哪种方式成功的。
  • 改写类请求默认拒绝。 POST/PUT/PATCH/DELETE 会改变目标系统状态,必须你明确同意后显式放行,模型不能自行确认。
  • 响应先蒸馏。 只回状态、结构摘要和截取片段,不把整坨 JSON 灌进上下文。

手册存在哪

$DSH_HOME/web-recon/playbooks/<站点>.json,可读可改的 JSON。多次侦察按接口并集累积——熟悉该系统的人可以直接手改纠正。

已知限制

  • 服务端渲染的页面没有独立接口可挖,此时手册的价值主要在控件清单。
  • 有些接口只在特定操作后才触发。用 interact 参数指定一个选择器,让侦察时点一下再观察。
  • 手册会随目标系统改版而过期。改版后重新侦察一次即可,接口按并集累积不会丢历史。
  • 手册目前记录接口形态,不记录字段语义。哪个参数是什么意思,仍需你或模型判断。
  • 尚未做多步流程编排(登录→取列表→逐条处理 这种串联仍靠模型自己组织)。

许可

MIT

原始 README: https://github.com/sherconan/dsh-web-recon/blob/main/README.zh.md ↗