我扫描了一个客户端's商店购买插件,拿回了三个。该网站运行了二十六个。没有什么被破坏,也没有故意隐藏任何内容:他们的优化插件已将每个脚本合并为一个组合文件,并且合并的文件在其名称中没有插件文件夹。扫描准确地说明了页面加载的内容,并且作为库存毫无用处,这就是本指南的区别。
站点外部检测插件确实有用,而且真正有限,大多数工具只告诉你前半部分,下面是检测的工作原理,每个结果可以和不能意味着什么,以及如何在不得出错误结论的情况下读取短列表 WordPress 插件检测器 故意报告两半。
TL;博士: 插件检测的工作原理是查找从中加载的文件
/wp-content/plugins/<slug>/page。not load a front-end file 的任何东西都是不可见的:仅管理员插件,在其他页面上开火的插件,以及任何其资产缓存插件合并到一个组合文件中的东西。将结果视为地板,永远不会总共扫描内部页面而不是主页可靠地找到更多。
插件检测实际上是如何工作的?
做任何可见的插件,必须从自己的文件夹中加载某些东西,WordPress 从固定的路径中服务于插件文件, /wp-content/plugins/<slug>/(so), 因此从那里加载的任何样式表、脚本或图像都会命名拥有它的插件:
<link rel="stylesheet" href="/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=5.9.3" />
<script src="/wp-content/plugins/woocommerce/assets/js/frontend/cart-fragments.min.js?ver=9.2.3"></script>
就是 contact-form-7 並 woocommerce的,由页面陈述而不是从它的行为方式推断出来。几个插件仍然更简单地宣布自己:身体类,下面的REST命名空间 /wp-json/、元标签、HTML 注释、cookie 名称。
该版本通常在查询字符串中运行。 ?ver=5.9.3 wordpress附加的东西来破坏缓存,并且在大多数安装上它是插件's真实版本。出于缓存原因剥离版本查询字符串的网站,或者硬编码一个值,将报告什么都没有或什么陈旧的东西。
| 证据 | 例子 | 信心 |
|---|---|---|
| 资产路径 | /wp-content/plugins/woocommerce/... |
该插件在此页面上加载了一个文件 |
| 版本查询字符串 | ?ver=9.2.3 |
通常安装版本 |
| REST 命名空间 | /wp-json/wc/v3 |
该插件注册了 API 路由 |
| 身体等级 | woocommerce-page |
该插件在此页面类型上处于活动状态 |
为什么这么多插件保持不可见?
4个普通设置隐藏插件,它们都不意味着网站做错了什么。
仅管理员插件不会为访问者加载任何内容。 备份调度程序、SEO 编辑器、迁移工具、用户角色管理器、暂存实用程序:他们在内部完成工作 wp-admin and 前端不加任何东西任何真实站点's插件列表中,有很大一部分都属于此类,从外部设计看不见。
插件会在它们要使用的页面上开火。 Checkout插件加载在结帐上,表单插件加载在表单所在的位置,扫描一个主页,得出站点有三个插件,就像读一本书的第一页,报告它的字数。
优化插件删除文件夹名称。 This is the big one。cache文件夹下将每个脚本和样式表连接成一个文件的插件,去掉它合并的所有内容的插件文件夹名称,包括它自己的代码都还存在,证据不是。
主机和 CDN 重写资产路径。 某些托管主机通过不再包含的路径代理每个静态文件 /wp-content/plugins/。效果相同,一次性应用于全站。
So 空结果至少有五个含义:没有插件是活动的,没有加载前端资产,优化器合并了它们,主机重写了路径,或者站点不是 WordPress。reports "0 插件"的工具,而没有分离那些不是报告发现,而是报告自己的盲点。
没有真名的文件夹名称是什么意思?
Detection 给你一个slug。将那个slug变成一个已发布的名称,当前版本和安装计数需要将其与插件目录匹配,而不是每个插件都合而为一。
裸slug没有匹配条目几乎总是意味着三件事之一,它是在WordPress。org之外出售的高级插件,它描述了大多数商业页面构建器,表单插件和会员系统,它是自定义的,由谁构建了那个站点或文件夹,只是简单地重新命名,一些站点所有者故意这样做。
That本身就是一个有用的信号,一个插件列表大多是无与伦比的slugs的站点正在运行商业或定制软件,并且在你问过任何人问题之前,它会告诉你一些关于它背后的预算。
如何获得更完整的图片?
1页以上扫描, 这是单一的最高价值习惯, 而且不花钱:
- 主页,适用于全站家具:分析、同意横幅、页面构建器、滑块。
- 博客文章,用于内容端插件:相关帖子、目录、社交共享、评论系统。
- 用于商业的产品或定价页面:商店插件、支付网关、货币切换器。
- 联系页面,用于表格、地图和垃圾邮件保护。
以工会为例。即使这样,它也是一层楼,但比任何一页给出的楼层都要高得多。
的 /wp-json/ index 也值得一看, 当它被启用时, 注册 REST 路由的插件无论前端加载什么, 都会通过命名空间出现在那里, 因此它会捕获一些资产路径错过的内容:
curl -s https://example.com/wp-json/ | grep -o '"namespace":"[^"]*"' | sort -u
扫某人's站点可接受吗?
阅读公共页面是一个普通的请求,它出现在站点's访问日志中,就像浏览器访问一样,它不登录、提交任何内容或触摸管理区。 WordPress 安全文档 关注经过身份验证或探测请求可以做什么,而不是页面自愿向每个访问者发布的内容。
越尖锐的地方就是意图。插件列表是侦察,如果你把它作为一个:一个过时的版本的插件,有一个已知的漏洞,这正是攻击者寻找的。那是保持自己的插件更新的原因,而不是假装信息是秘密的理由,因为任何人都可以阅读同一页面。如果你正在审计一个你不拥有的网站,请坚持该页面告诉你的内容并将其留在那里。
结果有什么好处
Used within its limits, 外部插件扫描快速回答真题, 这个站点用哪个页面构建器, 所以我可以引用更改, 这个商店是WooCommerce还是托管的东西, 什么是表单插件, 所以我可以匹配这个竞争对手运行的是同一个SEO栈我们是自己的分期站点吗, 不小心加载了一个插件我在本地禁用。
它不能做的是产生库存。为此你需要管理员, wp plugin list 超过 WP-CLI或者有登录名的人。
如果问题是渲染页面是什么而不是加载页面是什么,那么就是 WordPress 主题检测器的,其中读取主题's自己的 style.css 对于名称、版本和父级。当您是发布插件的人时, readme 生成器 写的 readme.txt 这决定了您的插件'自己的目录列表如何读取。



