指纹识别输出的是线索
whatweb 通过页面特征、响应头、cookie 名、favicon 哈希等信息识别 Web 技术栈与版本。它给出的是线索而不是结论:识别到某个框架不代表存在漏洞,版本号可能是伪造或被刻意隐藏的。适用任何可访问的 HTTP/HTTPS 目标(本方资产与授权范围内目标)。
基本信息
| 用途 | Web 技术栈与组件版本识别 |
|---|---|
| 攻击性级别 | -a 1(隐蔽,默认)到 -a 4(激进) |
| 输出 | 控制台文本、JSON、简要日志 |
| 批量方式 | -i 读取 URL 列表 |
| 结果定位 | 线索,需人工交叉验证 |
典型使用场景
- 资产梳理:整理内部站点的技术栈,为漏洞影响面分析提供输入
- 版本核查:确认某组件是否为受漏洞影响的版本区间
- 变更检测:同一站点再次扫描,发现技术栈变化
- 批量识别:对站点清单统一跑一遍,形成技术栈台账
- 交叉验证:与响应头、错误页特征、favicon 哈希相互印证
常用命令
常用命令
whatweb -a 3 https://example.com # 逐级提高识别强度
whatweb --log-json=whatweb.json -a 1 https://example.com
whatweb -i urls.txt --log-brief=out.txt # 批量识别站点清单
whatweb -a 4 https://example.com --user-agent 'Mozilla/5.0' # 激进模式会明显增加请求量
# 交叉验证:curl -sI 目标 | grep -iE 'server|x-powered-by'攻击性级别与影响
| 级别 | 行为 | 适用场景 |
|---|---|---|
| 1 | 仅读取首页,最隐蔽 | 批量盘点,对生产影响最小 |
| 2 | 增加部分路径请求 | 常规识别 |
| 3 | 更主动的插件探测 | 授权范围内的单站深入识别 |
| 4 | 激进,请求量明显增大 | 测试环境或明确授权的目标 |
版本号被刻意隐藏或伪造时,指纹只是弱信号:对关键系统应以人工确认为准,尤其是把识别结果直接用于判断是否存在某 CVE 的场景。
指纹结果要记录扫描时间与识别级别:技术栈会随升级变化,台账里没有时间戳的指纹信息半年后就无法解释差异从何而来。
交叉验证手段
- 响应头:Server 与 X-Powered-By 等字段
- 页面特征:静态资源路径、编译产物命名、报错页样式
- favicon 哈希:同一产品不同实例常可复用
- Cookie 名称与格式:框架的会话名往往有固定前缀