CMS Detection 用于识别在线主机所使用的内容管理系统(CMS)、Web 框架、服务器软件以及整体技术栈。其核心目的是在对目标开展测试之前先明确目标运行的是什么技术,因为 WordPress 站点、Laravel API 和 Spring Boot 微服务所需的测试方式并不相同。该技能支持多种 CMS 的检测,包括 WordPress、Drupal、Joomla、Magento、Shopify、Wix、Squarespace,以及 Laravel、Django、Express、Spring Boot 等框架。
主要能力体现在多个阶段。第一阶段是批量技术指纹识别,可使用 httpx 的 -tech-detect 选项基于 Wappalyzer 签名进行快速检测,或使用 whatweb 进行更深度的检查并识别具体 CMS 版本。第二阶段是 CMS 专属版本检测,针对不同 CMS 提供了具体的检测方法,例如 WordPress 可通过 generator meta 标签、RSS feed、readme.html 和 wp-json 命名空间检测;Drupal 可通过 CHANGELOG.txt 和特定路径检测;Joomla 可通过版本文件和 meta 标签检测;Magento 可通过 magento_version 文件和 composer.lock 检测;Laravel 可通过调试信息和 composer.lock 检测。第三阶段是服务器与框架检测,通过服务器响应头和特定路径识别 nginx、Apache、IIS、LiteSpeed、cloudflare 等服务器,以及 Django、Rails、Express、Spring Boot、Next.js 等框架。第四阶段是按 CMS 对主机进行分类,便于针对性测试。第五阶段是将检测到的版本映射到已知 CVE,可使用 searchsploit 本地搜索或 nuclei 自动化检测。
使用方式上,该技能要求终端中具备 httpx、whatweb、wappalyzer 和 curl,并需要一份存活子域名列表。可以先用 httpx 或 whatweb 进行快速检测,再根据结果使用 curl 对特定 CMS 进行版本确认。
适用场景包括:拥有一份存活主机列表并需要按技术类型归类;WordPress 专项测试出现误报而实际站点使用 Drupal;需要识别 CMS 版本以匹配已知 CVE;主机对所有路径返回通用 200 响应,需要通过技术检测判断实际运行内容;以及希望发现运行过时 CMS 版本的站点。
限制与注意事项方面,generator meta 标签可能被伪造,声称 WordPress 7.0 的站点可能实际运行 6.5,需通过 readme.html 或 RSS feed 交叉验证;技术检测基于签名,自定义主题可能移除或修改签名;CDN 缓存可能提供过时版本信息,可用随机查询参数强制绕过缓存;whatweb 的激进扫描可能触发 WAF 拦截,对受保护目标可使用 -a 2 降低激进度;无头 CMS 如 Strapi、Contentful 没有版本文件,需改查 API 端点。验证时建议至少使用两种独立方法确认同一 CMS 或版本,并记录主机名、CMS、版本、检测方法以及该版本是否存在已知 CVE。