船说 CMS 采集接口会泄露吗

域名注册
域名注册 正式会员超兽战士 👑年卡会员
发布于 2026-10-08 13:02 ·1 浏览 ·0 回复

读完这篇,你能判断自己站的船说 CMS 采集接口到底会不会泄露数据、10 分钟内查出真实风险,并把它关到只有自己能用。

第一步:先弄清楚"采集接口"是什么、在哪

采集接口不是后台管理页,而是网站根目录下一个独立的 PHP 入口文件,专门给外部程序远程调用(拉取你站的文章/视频列表)。它通常长这样:collect.php、api.php、api/collect.php、xml.php。

因为要给别的站调用,船说 CMS 的采集接口默认是无鉴权的——知道 URL 的人都能访问。这是设计如此,不是漏洞,但也是所有风险的源头。

先在服务器上找到它。SSH 登录后执行:

cd /www/wwwroot/你的域名
ls -1 *.php
find . -maxdepth 2 -iname "*collect*" -o -maxdepth 2 -iname "api*.php"

如果你用的是宝塔面板,路径一般在 /www/wwwroot/ 下;文件管理里也能直接看到根目录文件列表。把带 collect、api 字样的文件记下来,这就是你要检查的对象。

注意:不同版本(船说 CMS 常见的 1.x / 2.x 分支)文件名不一样,别照着别人的教程硬套路径,以你自己服务器上实际存在的文件为准。

第二步:搞清"泄露"到底指哪三种情况

很多人一句"会不会泄露"问得太笼统,实际要分三种看:

  1. 接口被陌生人调用:别人把你的站当免费资源库,或者高频调用拖垮你的服务器。这类不算数据泄露,但一样要处理。
  2. 接口返回了不该返回的内容:PHP 报错信息、服务器绝对路径、数据库表名、未发布或已下架的文章。
  3. 通过接口参数注入:比如 ?id=1' 这类参数没做过滤,导致 SQL 注入或任意文件读取,最终整库数据被拖走。

第 1 种基本必然发生(只要接口开在公网),第 2、3 种取决于代码质量和你的 PHP 配置。

第三步:10 分钟现场自查

在浏览器或命令行里逐个试访问你上一步找到的接口文件:

curl -I "http://你的域名/collect.php"
curl -s "http://你的域名/collect.php?ac=list" | head -c 300

如果返回 200 且吐出 XML 或 JSON,说明接口是公开可用的。

再看错误信息是否外泄,故意传一个畸形参数:

curl -s "http://你的域名/collect.php?ac=list&id=1'"

返回里如果带 Warning:、Fatal error、/www/wwwroot/... 这种绝对路径,说明 display_errors 是开着的,这是明确的信息泄露。

最后查访问日志,看有没有陌生 IP 已经在刷:

grep -i "collect" /www/wwwlogs/你的域名.log | awk '{print $1}' | sort | uniq -c | sort -rn | head

前面几行的 IP 如果不是你自己的,就是被别人采集了。

第四步:加固,按优先级从高到低

优先做这两条,成本最低、收益最大:

  1. 关掉 PHP 错误显示。打开 php.ini(宝塔面板:软件商店 → PHP 7.x → 设置 → 配置修改),找到并改成:
display_errors = Off
log_errors = On

保存后重启 PHP。

  1. 如果接口你根本不用,直接删掉或改名。改名后即使别人知道老路径也访问不到。

要保留接口的话,用 Nginx 白名单限制来源。

宝塔面板:网站 → 你的站点 → 设置 → 配置文件,在 server { } 里加:

location = /collect.php {
    allow 你的采集服务器IP;
    deny all;
    fastcgi_pass unix:/tmp/php-cgi-74.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
}

fastcgi_pass 那行的 socket 名称要改成你自己 PHP 版本对应的,别直接抄。改完点"保存"并重载 Nginx。

注意:allow 必须写在 deny all 前面,Nginx 是按顺序匹配的,顺序写反会变成全部放行。

第五步:改完必须验证一次

重新执行第三步里的 curl 命令。从你自己电脑访问应该返回 403,从白名单 IP 访问应该正常返回数据。日志里陌生 IP 的调用量在 24 小时内应归零。

小结

  • 采集接口是根目录独立 PHP 文件,默认无鉴权,公网可访问。
  • 风险分三层:被白嫖调用、报错信息外泄、参数注入拖库。
  • 自查三招:curl 试访问、传畸形参数看报错、翻访问日志看陌生 IP。
  • 加固优先级:关 display_errors → 不用就删 → 要用就 Nginx 白名单。
  • Nginx 白名单里 allow 在 deny all 之前,且 fastcgi_pass 要按自己 PHP 版本改。
版权声明:本文来自 GJ站长论坛《船说 CMS 采集接口会泄露吗》
原文链接:https://www.gj0.com/thread-967.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~