AFL++ HTTP Mode(网络 / HTTP 服务模糊测试)完整安装教程

AFL++ HTTP Mode(网络 / HTTP 服务模糊测试)完整安装教程 目录方案一AFL 原生 Socket ModeHTTP 通用无需额外工具1. 安装全量依赖含 LLVM、QEMU、Socket 模式所需组件2. 拉取 AFL 源码并全量编译distrib 编译包含所有扩展模式3. 编译 QEMU 支持无源码 Web/HTTP 二进制必装4. Socket Mode HTTP 使用原理方案二AFLNet专用 HTTP/Web Fuzzer基于 AFL1. 安装基础依赖同方案一先执行依赖安装命令2. 拉取 AFLNet 源码内置修改版 AFL3. 编译 QEMU二进制无源码 HTTP 服务4. AFLNet HTTP 使用示例快速验证安装成功常见报错解决AFL 原生没有独立命名为 http_mode的模块HTTP/Web 服务 Fuzz 有两种主流实现方案AFL Socket Mode官方内置推荐TCP 套接字转发适配 HTTP、TCP 服务AFLNet专用 HTTP/Web 服务器 Fuzzer基于 AFL 改造下文分两套方案完整安装环境Ubuntu 20.04/22.04方案一AFL 原生 Socket ModeHTTP 通用无需额外工具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 psutil2. 拉取 AFL 源码并全量编译distrib 编译包含所有扩展模式git clone https://github.com/AFLplusplus/AFLplusplus.git cd AFLplusplus # 指定llvm14编译 export LLVM_CONFIGllvm-config-14 # distrib编译llvm_mode/qemu_mode/frida_mode/socket桥接全部组件 make distrib # 系统全局安装命令 sudo make install3. 编译 QEMU 支持无源码 Web/HTTP 二进制必装cd qemu_mode # 自动下载补丁版qemu并编译 ./build_qemu_support.sh4. Socket Mode HTTP 使用原理使用官方桥接脚本utils/afl_bridge_external.py脚本监听端口如 8080接收 AFL 变异数据包转发数据包到本地 HTTP 服务127.0.0.1:80捕获程序崩溃信号回传给 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基于 AFLAFLNet 专门针对 HTTP 服务器、TCP 网络协议优化是 HTTP 场景专用工具链1. 安装基础依赖同方案一先执行依赖安装命令2. 拉取 AFLNet 源码内置修改版 AFLgit clone https://github.com/aflnet/aflnet.git cd aflnet # 编译全量组件 make # 安装系统工具 sudo make install3. 编译 QEMU二进制无源码 HTTP 服务cd qemu_mode ./build_qemu_support.sh4. 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常见报错解决llvm-config not foundexport LLVM_CONFIGllvm-config-14 make clean make distribbuild_qemu_support.sh 编译失败sudo apt install libglib2.0-dev libpixman-1-dev libtool桥接脚本端口占用修改--bridge-port更换空闲端口或关闭占用进程sudo lsof -i:端口