Wappalyzer的分析和欺骗
字数 1246 2025-08-05 11:39:43

Wappalyzer的分析与欺骗技术详解

一、Wappalyzer基础分析

1. Wappalyzer概述

Wappalyzer是一款流行的网站技术指纹识别工具,能够检测网站使用的服务器软件、编程语言、JavaScript框架、内容管理系统(CMS)、分析工具等技术栈。

2. 基本工作原理

Wappalyzer通过多种方式识别网站技术:

  • 分析HTTP响应头(Response Headers)
  • 检查网页内容(HTML主体)
  • 解析JavaScript和DOM结构
  • 检测特定的URL模式

3. 技术识别来源

  • Web服务器和编程语言:主要来自响应头或网页内容主体
  • JS和DOM分析:通过注入脚本进行特殊检测

二、Wappalyzer源码分析

1. 插件目录结构

_locales/        # 本地化文件,支持多语言
_metadata/       # 插件元数据
css/             # CSS样式文件
html/            # HTML文件(选项页面、弹出页面等)
images/          # 图片资源
js/              # JavaScript脚本(核心功能)
technologies/    # 技术指纹数据库

2. 核心文件分析

(1) wappalyzer.js - 核心功能

  • slugify函数:将字符串转换为SEO友好的格式
  • getTechnology函数:从指纹库查找技术详细信息
  • analyze函数:主要分析入口,定义多种分析方法:
    • 一对一(oo)
    • 一对多(om)
    • 多对多(mm)

(2) utils.js - 工具函数

  • 浏览器类型判断
  • 回调API转Promise
  • 本地存储操作
  • 国际化处理
  • 消息通信

(3) index.js - 入口文件

  • analyzeJs:分析JavaScript技术
  • analyzeDom:分析DOM节点识别技术
  • loadTechnologies:加载技术和类别数据

(4) content.js - 内容脚本

  • inject函数:向页面注入脚本
  • getJs函数:获取JS技术指纹
  • getDom函数:获取DOM技术指纹

(5) js.js和dom.js - 注入脚本

  • 被注入到目标网页中执行
  • 通过postMessage与插件通信
  • 收集技术指纹数据并返回

三、Wappalyzer欺骗技术

1. 基本欺骗思路

通过Hook技术修改Wappalyzer的执行流程,伪造技术指纹数据。

2. 关键Hook点

  • content.js中的inject函数
  • window.addEventListener和removeEventListener
  • postMessage通信机制

3. 具体欺骗方法

(1) Response指纹伪造

<!-- 简单meta标签伪造 -->
<meta name="generator" content="WordPress 4.7.24" />

(2) JavaScript指纹伪造

// Hook removeEventListener
let rel = removeEventListener;
removeEventListener = (name, func, opt) => {
    if (name === "message" && /* 检测Wappalyzer特征 */) {
        poc(); // 执行伪造
        rel(name, func, opt);
    } else {
        rel(name, func, opt);
    }
};

const poc = () => {
    postMessage({
        wappalyzer: {
            js: [
                {name: "Zipify Pages", chain: "ZipifyPages", value: true},
                // 更多伪造指纹...
            ],
        },
    });
};

(3) DOM指纹伪造

// Hook addEventListener
let rel = addEventListener;
addEventListener = (name, func, opt) => {
  if (name === "message" && /* 检测Wappalyzer特征 */) {
    rel(name, func, opt);
    poc(); // 执行伪造
  } else {
    rel(name, func, opt);
  }
};

const poc = () => {
  postMessage({
    wappalyzer: {
      technologies: [
        {
          name: "xss",
          chains: ["bad.xss"], // 伪造DOM技术
        },
      ],
    },
  });
};

(4) Self-XSS示例

window.bad = {
  get xss() {
    alert("xss!");
  },
};

4. 指纹数据生成

使用Python脚本从Wappalyzer的技术数据库中提取和筛选指纹数据:

import os
import json

def load_technologies(directory):
    """加载所有技术数据"""
    characters = ['_'] + [chr(i) for i in range(ord('a'), ord('z') + 1)]
    all_technologies = {}
    for character in characters:
        file_path = os.path.join(directory, f"{character}.json")
        if os.path.exists(file_path):
            with open(file_path, 'r') as file:
                data = json.load(file)
                all_technologies.update(data)
    return all_technologies

def filter_technologies(technologies):
    """筛选JS技术指纹"""
    js_technologies = []
    for name, details in technologies.items():
        if "js" in details and details["js"]:
            first_chain = list(details["js"].keys())[0]
            js_technologies.append({
                "name": name,
                "chain": first_chain,
                "value": True
            })
    return js_technologies

四、防御与混淆建议

  1. 代码混淆:对欺骗脚本进行混淆处理
  2. CDN引入:将关键脚本通过CDN引入
  3. 动态指纹:定期更换伪造的指纹数据
  4. 混合真实指纹:在伪造数据中混入部分真实指纹增加可信度

五、总结

Wappalyzer的欺骗技术核心在于理解其工作原理和检测流程,通过Hook关键函数和伪造通信数据实现技术指纹的欺骗。这种技术可以用于安全测试、蜜罐建设等场景,但需注意合法合规使用。

Wappalyzer的分析与欺骗技术详解 一、Wappalyzer基础分析 1. Wappalyzer概述 Wappalyzer是一款流行的网站技术指纹识别工具,能够检测网站使用的服务器软件、编程语言、JavaScript框架、内容管理系统(CMS)、分析工具等技术栈。 2. 基本工作原理 Wappalyzer通过多种方式识别网站技术: 分析HTTP响应头(Response Headers) 检查网页内容(HTML主体) 解析JavaScript和DOM结构 检测特定的URL模式 3. 技术识别来源 Web服务器和编程语言 :主要来自响应头或网页内容主体 JS和DOM分析 :通过注入脚本进行特殊检测 二、Wappalyzer源码分析 1. 插件目录结构 2. 核心文件分析 (1) wappalyzer.js - 核心功能 slugify函数 :将字符串转换为SEO友好的格式 getTechnology函数 :从指纹库查找技术详细信息 analyze函数 :主要分析入口,定义多种分析方法: 一对一(oo) 一对多(om) 多对多(mm) (2) utils.js - 工具函数 浏览器类型判断 回调API转Promise 本地存储操作 国际化处理 消息通信 (3) index.js - 入口文件 analyzeJs :分析JavaScript技术 analyzeDom :分析DOM节点识别技术 loadTechnologies :加载技术和类别数据 (4) content.js - 内容脚本 inject函数 :向页面注入脚本 getJs函数 :获取JS技术指纹 getDom函数 :获取DOM技术指纹 (5) js.js和dom.js - 注入脚本 被注入到目标网页中执行 通过postMessage与插件通信 收集技术指纹数据并返回 三、Wappalyzer欺骗技术 1. 基本欺骗思路 通过Hook技术修改Wappalyzer的执行流程,伪造技术指纹数据。 2. 关键Hook点 content.js中的inject函数 window.addEventListener和removeEventListener postMessage通信机制 3. 具体欺骗方法 (1) Response指纹伪造 (2) JavaScript指纹伪造 (3) DOM指纹伪造 (4) Self-XSS示例 4. 指纹数据生成 使用Python脚本从Wappalyzer的技术数据库中提取和筛选指纹数据: 四、防御与混淆建议 代码混淆 :对欺骗脚本进行混淆处理 CDN引入 :将关键脚本通过CDN引入 动态指纹 :定期更换伪造的指纹数据 混合真实指纹 :在伪造数据中混入部分真实指纹增加可信度 五、总结 Wappalyzer的欺骗技术核心在于理解其工作原理和检测流程,通过Hook关键函数和伪造通信数据实现技术指纹的欺骗。这种技术可以用于安全测试、蜜罐建设等场景,但需注意合法合规使用。