今天将学会如何在不见面、不扫描的情况下,通过识别目标网站的技术栈和利用搜索引擎获取敏感信息,将信息收集提升到更高维度。这些技巧是渗透测试标准流程中“信息收集”阶段的核心组成部分,能帮你绘制出目标的完整技术画像,发现隐藏的资产与漏洞线索。
第九周·周四:指纹识别与 Google Hacking——whatweb、wappalyzer 与搜索引擎语法
🎯 今日学习目标(达成效果)
- 能独立使用whatweb 命令行工具对目标站点进行技术指纹识别,解读其输出的 Web 服务器、编程语言、CMS、JavaScript 库等信息;
- 能通过浏览器扩展 Wappalyzer快速查看当前访问网站的技术栈,并理解其界面各项含义;
- 能说出至少 8 条 Google Hacking 常用语法(如
site:、intitle:、inurl:、filetype:等),并解释每条语法的用途; - 能构造Google Hacking 查询语句,搜索指定站点下的后台登录页、上传点、备份文件、敏感信息等;
- 能从安全视角理解指纹识别是攻击者制定精确攻击方案的依据,也是防御者了解暴露面的手段;
- 能在 DVWA 或任意测试站点上完成一次完整的指纹识别 + Google Hacking 结合分析,形成一份简要的信息收集报告。
📘 一、指纹识别:摸清目标的“底细”
1. 什么是 Web 指纹识别?
Web 指纹识别是指通过分析目标网站的响应头、HTML 源码、特定文件、错误页面、Cookie 名等特征,推断其使用的 Web 服务器、编程语言、CMS(内容管理系统)、JavaScript 框架、CDN 等信息。就像通过一个人的指纹识别其身份一样,每种技术栈都会留下独特的“指纹”。
攻击者视角:知道目标使用 WordPress 4.2 和 PHP 5.6,就可以迅速查找针对这些版本已知的漏洞,进行精准打击,避免浪费时间在无效测试上。
防御者视角:了解自身暴露的技术信息,有助于关闭不必要的版本泄露,降低被针对性攻击的风险。
2. 常见可识别的组件
- Web 服务器:Apache, Nginx, IIS
- 编程语言:PHP, ASP.NET, Python, Ruby
- CMS:WordPress, Joomla, Drupal, 织梦
- JavaScript 库:jQuery, React, Vue.js
- 前端框架:Bootstrap, Element UI
- CDN/WAF:Cloudflare, 阿里云 WAF
- 分析工具:Google Analytics, 百度统计
📘 二、工具一:whatweb(命令行指纹识别)
whatweb 是 Kali Linux 内置的强大指纹识别工具,通过数百个插件匹配网站的“指纹签名”,识别技术栈。
1. 基本用法
whatweb 目标URL例如:whatweb http://testphp.vulnweb.com
输出类似:
http://testphp.vulnweb.com [200 OK] Apache[2.4.41], Country[UNITED STATES], HTTPServer[nginx/1.17.9], IP[44.238.135.156], PHP[5.6.40], X-Powered-By[PHP/5.6.40]解读:服务器使用 Nginx 反代 Apache,PHP 5.6.40,IP 地址等。
2. 高级参数
| 参数 | 作用 |
|---|---|
-a | 侵略性级别(1-4),越高越深入(如发送更多请求,甚至尝试漏洞探测) |
-v | 详细输出,显示匹配的插件名称 |
--log-json=FILE | 输出 JSON 格式报告 |
--no-errors | 不显示连接错误 |
--proxy | 通过代理扫描 |
示例:
whatweb-a3--no-errors http://靶机-v3. 安全分析案例
- 如果看到
X-Powered-By: PHP/5.6.40,说明服务器可能暴露了 PHP 版本,且是较老版本,存在已知漏洞。 - 发现
Server: Microsoft-IIS/10.0,就要用 IIS 相关测试集。 - 识别 CMS 为 WordPress 4.2,可直接尝试已知漏洞(如 WPScan 扫描)。
📘 三、工具二:Wappalyzer(浏览器扩展)
Wappalyzer 是一个浏览器扩展(Chrome/Firefox),点击图标即可弹出当前网站的技术栈面板,直观、无命令行门槛,适合快速浏览。
1. 安装与使用
- 从 Chrome 应用商店或 Firefox Add-ons 搜索安装 Wappalyzer。
- 访问任意网站,点击浏览器右上角的 Wappalyzer 图标。
- 面板按类别(CMS, Web Server, JavaScript Libraries, Analytics 等)列出技术及版本。
体验:打开 DVWA 页面,Wappalyzer 可能显示 Nginx, PHP, jQuery 等。发现 PHP 版本后,可以和 whatweb 的结果交叉验证。
2. 应用场景
- 日常浏览时可快速了解网站技术栈,积累经验。
- 渗透测试初期快速概览,决定后续手动测试方向。
📘 四、Google Hacking:用搜索引擎挖掘敏感信息
Google Hacking 是指利用搜索引擎的高级搜索语法,查找特定网站或网页中的敏感信息。攻击者利用它发现后台地址、配置文件、备份文件、数据库暴露、甚至服务器状态页面。对于安全从业者,它是基础信息收集和漏洞评估的利器。
1. 核心语法(必须熟记)
| 语法 | 功能 | 示例 |
|---|---|---|
site: | 限制搜索范围为指定网站 | site:example.com |
intitle: | 标题中包含关键词 | intitle:"index of" |
inurl: | URL 中包含关键词 | inurl:admin |
filetype: | 指定文件类型 | filetype:sql |
intext: | 页面正文中包含关键词 | intext:"password" |
- | 排除某个词 | site:example.com -www |
* | 通配符 | site:*.example.com |
"" | 精确匹配短语 | "phpMyAdmin" |
2. 经典 Google Hacking 查询示例
- 搜索子域名:
site:*.example.com -www - 查找后台页面:
site:example.com intitle:admin - 查找上传页面:
site:example.com inurl:upload - 搜索敏感文件:
site:example.com filetype:sql "password"或filetype:env "DB_PASSWORD" - 目录列表暴露:
intitle:"index of" "parent directory" - 搜索包含特定漏洞的页面:
site:example.com inurl:".php?="(可能为注入点) - 查找备份文件:
site:example.com "index of" "backup" - 搜索暴露的 phpinfo:
site:example.com intitle:"phpinfo()"
3. 实践约束与技巧
- Google 会限制自动查询,大量搜索需使用程序接口(现已收费或限制),渗透测试中用手工构造即可。
- 可以结合使用
inurl:和intext:缩小范围。 - 使用
-排除干扰子域或结果。 - 一些结果可能已经被删除,但搜索引擎缓存可能保留快照(查看“网页快照”)。
✍️ 五、动手实践:对目标进行指纹识别与 Google Hacking
实践 1:使用 whatweb 识别 DVWA 环境指纹
whatweb http://靶机/DVWA-v记录下输出的:
- Web Server
- PHP 版本
- 是否有 X-Powered-By 头
- 使用的 JavaScript 库
实践 2:用 Wappalyzer 查看同一站点
打开浏览器,访问 DVWA,点击 Wappalyzer 图标。对比 whatweb 的结果是否一致,补充 whatweb 可能遗漏的项(如 Analytics 信息)。
实践 3:构造 Google Hacking 搜索语句(使用真实互联网或本地靶场)
假设你的靶机是公网可访问的测试站(或使用 VulnWeb、testphp.vulnweb.com 等公开测试站),在 Google 中尝试:
site:testphp.vulnweb.comsite:testphp.vulnweb.com inurl:adminsite:testphp.vulnweb.com filetype:sqlintitle:"index of" site:testphp.vulnweb.com
记录发现了哪些有意思的路径和文件。如果靶机是本地环境,Google 无法索引,你可以在理解语法的基础上,通过搜索自己公司的域名(如site:yourcompany.com)进行合法练习,或利用公开漏洞靶标网站。
实践 4:编写一份简单的信息收集报告
基于今天的练习,整理以下内容:
- 目标站点技术栈表(Web服务器、语言、CMS、JS库、CDN)
- 通过 Google Hacking 发现的外部暴露路径/文件
- 可能存在的安全风险(如暴露 PHP 版本、phpinfo 泄露、后台路径暴露)
安全警示:不要使用这些技术对未授权的目标进行测试。所有实践必须在授权或公共测试靶场进行。
📝 六、课后测试题与解析
测试题 1:如何使用 whatweb 识别一个网站使用的 Web 服务器和编程语言?请写出命令并解释主要输出。
参考答案:
命令:whatweb http://example.com
主要输出会包含类似HTTPServer[Nginx]或Apache[2.4.7]表示 Web 服务器类型及版本;PHP[5.6.40]或ASP.NET[4.0.30319]等表示编程语言/框架。还可能包含X-Powered-By头直接泄露版本。这些信息帮助攻击者快速定位已知漏洞。
测试题 2:写出 Google Hacking 语法查找example.com域下所有包含 “password” 的.sql文件。
参考答案:
site:example.com filetype:sql "password"解释:
site:example.com限定搜索范围为该域名;filetype:sql指定文件类型为 .sql;"password"精确匹配,查找包含该词的文件,可能是数据库导出的备份文件,包含密码哈希。
✅ 今日学习效果自检清单
- 我能独立使用 whatweb 并解读其输出
- 我安装了 Wappalyzer 并能快速识别网站技术栈
- 我至少能写出 6 条 Google Hacking 语法及其用途
- 我成功构造了针对测试站点的 Google 查询并找到有价值信息
- 我理解指纹识别是精准攻击的前提,也是自我防御的镜子
- 我完成了今天的信息收集小报告,将发现整理归档
⚠️ 阶段避坑重点
- whatweb 的侵略性:
-a 4会尝试发送一些可能引发告警的请求,对于生产目标慎用。 - Wappalyzer 不是绝对准确:有些网站刻意隐藏技术栈或使用反向代理混淆,结果需交叉验证。
- Google Hacking 的频率限制:短时间内大量搜索可能被要求输入验证码,甚至暂时封禁 IP。使用浏览器手工搜索,不推荐脚本化。
- 不要迷信搜索引擎结果:有些页面已经被删除,但快照仍存;也可能有欺骗性页面。需结合直接访问确认。
- 法律边界:Google Hacking 本身是合法搜索,但利用它发现的信息进行未授权访问即违法。务必仅用于授权测试或自身资产检查。
今天你将信息收集从技术层面拓展到公开情报领域,真正做到了“知己知彼”。明天我们将汇总信息收集的完整流程,并学习如何对收集到的信息进行关联分析,形成攻击面拓扑图,为后续漏洞利用铺平道路。请保留今天的报告,明天会用到。