autoindex off;
location ^~ /wp-content/plugins/ {
    autoindex off;
    try_files $uri $uri/ =404;
}

访问 /wp-content/plugins/ 返回一个目录索引,三十多个插件名一行行列出来,点进去还能看到 readme.txt 里的版本号。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:nginx 的 autoindex 在某个 include 里被打开,或者 location 没配 index 又允许目录浏览。插件名加版本号一暴露,对应版本的已知漏洞就能直接对着打。

这次卡住的地方就在「插件目录列表」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

处理上按这个顺序:先确认是哪个 server 块的 autoindex 开着,全局搜一遍配置;改成 autoindex off,并在该目录补一个空 index.php 兜底;要更严就给 wp-content 加 location,除指定静态后缀外一律 403。

确认没问题再收工,再访问插件目录返回 403 或 404,页面上不再出现插件名列表。

作者 9823189