AFL++ HTTP Mode(网络 / HTTP 服务模糊测试)完整安装教程
2026/7/26 11:07:10 网站建设 项目流程

目录

方案一:AFL++ 原生 Socket Mode(HTTP 通用,无需额外工具)

1. 安装全量依赖(含 LLVM、QEMU、Socket 模式所需组件)

2. 拉取 AFL++ 源码并全量编译(distrib 编译包含所有扩展模式)

3. 编译 QEMU 支持(无源码 Web/HTTP 二进制必装)

4. Socket Mode HTTP 使用原理

方案二:AFLNet(专用 HTTP/Web Fuzzer,基于 AFL++)

1. 安装基础依赖(同方案一,先执行依赖安装命令)

2. 拉取 AFLNet 源码(内置修改版 AFL++)

3. 编译 QEMU(二进制无源码 HTTP 服务)

4. AFLNet HTTP 使用示例

快速验证安装成功

常见报错解决


AFL++ 原生没有独立命名为 http_mode的模块,HTTP/Web 服务 Fuzz 有两种主流实现方案:

  1. AFL++ Socket Mode(官方内置,推荐):TCP 套接字转发,适配 HTTP、TCP 服务
  2. AFLNet(专用 HTTP/Web 服务器 Fuzzer,基于 AFL++ 改造)

下文分两套方案完整安装,环境:Ubuntu 20.04/22.04

方案一:AFL++ 原生 Socket Mode(HTTP 通用,无需额外工具)

1. 安装全量依赖(含 LLVM、QEMU、Socket 模式所需组件)

sudo apt update # 基础编译、LLVM工具链 sudo apt install -y build-essential python3-dev automake cmake git flex bison libglib2.0-dev libpixman-1-dev python3-setuptools ninja-build pkg-config libtool libtool-bin wget curl # LLVM14(推荐稳定版) sudo apt install -y lld-14 llvm-14 llvm-14-dev clang-14 || sudo apt install -y lld llvm llvm-dev clang # QEMU模式依赖(无源码二进制Web服务必备) sudo apt install -y libcapstone-dev cpio # Python依赖(socket桥接脚本) sudo apt install python3-pip pip3 install psutil

2. 拉取 AFL++ 源码并全量编译(distrib 编译包含所有扩展模式)

git clone https://github.com/AFLplusplus/AFLplusplus.git cd AFLplusplus # 指定llvm14编译 export LLVM_CONFIG="llvm-config-14" # distrib:编译llvm_mode/qemu_mode/frida_mode/socket桥接全部组件 make distrib # 系统全局安装命令 sudo make install

3. 编译 QEMU 支持(无源码 Web/HTTP 二进制必装)

cd qemu_mode # 自动下载补丁版qemu并编译 ./build_qemu_support.sh

4. Socket Mode HTTP 使用原理

使用官方桥接脚本utils/afl_bridge_external.py

  1. 脚本监听端口(如 8080)接收 AFL 变异数据包
  2. 转发数据包到本地 HTTP 服务(127.0.0.1:80)
  3. 捕获程序崩溃信号回传给 afl-fuzz
# 启动桥接(目标HTTP服务127.0.0.1:80,桥接监听22222) python3 utils/afl_bridge_external.py --target-host 127.0.0.1 --target-port 80 --bridge-port 22222 # 新开终端启动afl-fuzz afl-fuzz -i http_seeds -o http_out -- python3 utils/afl_bridge_external.py --bridge-only 22222

方案二:AFLNet(专用 HTTP/Web Fuzzer,基于 AFL++)

AFLNet 专门针对 HTTP 服务器、TCP 网络协议优化,是 HTTP 场景专用工具链

1. 安装基础依赖(同方案一,先执行依赖安装命令)

2. 拉取 AFLNet 源码(内置修改版 AFL++)

git clone https://github.com/aflnet/aflnet.git cd aflnet # 编译全量组件 make # 安装系统工具 sudo make install

3. 编译 QEMU(二进制无源码 HTTP 服务)

cd qemu_mode ./build_qemu_support.sh

4. AFLNet HTTP 使用示例

准备 HTTP 请求种子文件放入in/目录,启动 Web 服务后执行:

afl-fuzz -i in -o out -N tcp://127.0.0.1/80 -P HTTP -- ./httpd
  • -N:指定 TCP 目标地址端口
  • -P HTTP:启用 HTTP 协议解析、请求结构化变异

快速验证安装成功

# 验证AFL++主程序 afl-fuzz -h # 验证QEMU模式(二进制Fuzz) afl-fuzz -Q -h # 验证AFLNet(安装后) afl-fuzz -h | grep AFLNet

常见报错解决

  1. llvm-config not found
export LLVM_CONFIG=llvm-config-14 make clean && make distrib
  1. build_qemu_support.sh 编译失败
sudo apt install libglib2.0-dev libpixman-1-dev libtool
  1. 桥接脚本端口占用修改--bridge-port更换空闲端口,或关闭占用进程:sudo lsof -i:端口

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询