#2280·refly

misc/scrape 网络链接端点中的服务器端请求伪造

作者: geo-chen创建于 2026年6月15日更新于 2026年6月15日

端点 POST /v1/misc/scrape (apps/api/src/modules/misc/misc.controller.ts) 从请求体中获取一个 URL 字段,并将其直接传递给共享的 scrapeWeblink 实用程序 (packages/utils/src/scrape-weblink.ts),该实用程序会使用没有对方案、主机或解析的 IP 地址进行验证的 fetch() 方法对其进行调用,并跟随重定向。然后,从响应中返回获取的页面的标题和元描述。因此,任何注册用户(默认情况下,通过电子邮件注册是启用的)都可以让后端向内部唯一的地址发出 HTTP 请求,例如云元数据服务、内部仪表板或部署网络上的其他服务,并读取回页面的标题和描述。我通过在本地内部唯一的 HTTP 服务器上运行精确的 scrapeWeblink 逻辑来验证了此行为:请求到达了该服务器,并且服务器的内部标题和元描述被返回给调用者。在重新托管 Markdown 图像 URL 时,也可以通过 dumpFileFromURL 访问同一个未加保护的 fetch() 方法,该方法会存储完整的响应体。