Wapiti:Web应用漏洞扫描器

引言

Wapiti是一款开源的Web应用漏洞扫描工具,它通过"黑盒"测试方式,向目标网站发送大量请求,通过分析响应内容来检测潜在的安全漏洞。本文将全面介绍Wapiti 3.2.10的安装、配置和使用方法。

一、安装Wapiti

1.1 系统要求

  • Python 3.6或更高版本
  • pip包管理器
  • 可选:Firefox浏览器(用于headless模式)

1.2 安装方法

通过pip安装:

bash 复制代码
pip install wapiti3

从源码安装:

bash 复制代码
git clone https://github.com/wapiti-scanner/wapiti.git
cd wapiti
python setup.py install

在Kali Linux中:

bash 复制代码
sudo apt-get update
sudo apt-get install wapiti

二、基础使用

2.1 最简单的扫描

bash 复制代码
wapiti -u https://example.com

这将对目标网站进行基础扫描,使用默认设置。

2.2 指定扫描模块

bash 复制代码
wapiti -u https://example.com -m xss,sql,exec

可用的模块包括:xss(跨站脚本)、sql(SQL注入)、exec(命令执行)、csrf(跨站请求伪造)等。

三、核心参数详解

3.1 目标URL配置

  • -u, --url URL:指定扫描目标的基础URL
  • --swagger URI:使用Swagger文件定义API端点
  • --data data:指定POST请求的数据

3.2 扫描范围控制

bash 复制代码
# 仅扫描特定URL
wapiti -u https://example.com --scope url

# 扫描整个页面及子页面
wapiti -u https://example.com --scope page

# 扫描整个文件夹
wapiti -u https://example.com --scope folder

# 扫描整个子域名
wapiti -u https://example.com --scope subdomain

# 扫描整个域名
wapiti -u https://example.com --scope domain

# 扫描所有相关域名
wapiti -u https://example.com --scope punk

3.3 深度和强度控制

bash 复制代码
# 设置爬取深度
wapiti -u https://example.com -d 3

# 设置攻击等级(默认1,最高2)
wapiti -u https://example.com -l 2

# 控制扫描力度
wapiti -u https://example.com -S aggressive
# 可选值:paranoid, sneaky, polite, normal, aggressive, insane

3.4 认证配置

HTTP基础认证:

bash 复制代码
wapiti -u https://example.com --auth-user admin --auth-password secret --auth-method basic

表单登录认证:

bash 复制代码
wapiti -u https://example.com --form-url https://example.com/login --form-user admin --form-password secret

使用浏览器Cookies:

bash 复制代码
# 从Firefox导入cookies
wapiti -u https://example.com -c firefox

# 使用自定义cookie文件
wapiti -u https://example.com -c cookies.json

3.5 代理和网络配置

bash 复制代码
# 使用HTTP代理
wapiti -u https://example.com -p http://127.0.0.1:8080

# 使用Tor网络
wapiti -u https://example.com --tor

# 设置超时时间
wapiti -u https://example.com -t 10

# 设置并发任务数
wapiti -u https://example.com --tasks 10

3.6 Headless模式

bash 复制代码
# 可见模式
wapiti -u https://example.com --headless visible

# 隐藏模式
wapiti -u https://example.com --headless hidden

# 等待页面加载
wapiti -u https://example.com --headless visible --wait 5

四、高级功能

4.1 会话管理

bash 复制代码
# 存储会话
wapiti -u https://example.com --store-session ./session

# 恢复会话
wapiti -u https://example.com --resume-crawl

# 清空攻击历史
wapiti -u https://example.com --flush-attacks

# 清空所有会话数据
wapiti -u https://example.com --flush-session

4.2 自定义请求

bash 复制代码
# 添加自定义头部
wapiti -u https://example.com -H "X-Forwarded-For: 127.0.0.1"

# 设置User-Agent
wapiti -u https://example.com -A "Mozilla/5.0 Custom"

# 排除特定URL
wapiti -u https://example.com -x /admin

# 移除特定参数
wapiti -u https://example.com -r sessionid

# 跳过攻击特定参数
wapiti -u https://example.com --skip csrf_token

4.3 日志和报告

bash 复制代码
# 生成HTML报告
wapiti -u https://example.com -o report.html -f html

# 生成JSON报告
wapiti -u https://example.com -o report.json -f json

# 包含请求和响应详情
wapiti -u https://example.com -dr 2

# 启用详细日志
wapiti -u https://example.com -v 2 --log scan.log

4.4 性能优化

bash 复制代码
# 限制每个页面的链接数
wapiti -u https://example.com --max-links-per-page 50

# 限制每个目录的文件数
wapiti -u https://example.com --max-files-per-dir 100

# 限制最大参数数
wapiti -u https://example.com --max-parameters 50

# 设置总扫描时间限制
wapiti -u https://example.com --max-scan-time 3600

# 设置单个模块攻击时间限制
wapiti -u https://example.com --max-attack-time 600

五、实战示例

5.1 WordPress站点扫描

bash 复制代码
wapiti -u https://wordpress-site.com --cms wp -m xss,sql,exec -d 3 -S aggressive

5.2 API端点测试

bash 复制代码
wapiti -u https://api.example.com --swagger /path/to/swagger.json -m xss,sql,exec

5.3 认证扫描

bash 复制代码
wapiti -u https://secure-site.com -c chrome --form-url https://secure-site.com/login --form-user user --form-password pass -m xss,sql,exec -o scan_report.html

5.4 深度审计

bash 复制代码
wapiti -u https://audit-target.com --scope domain -d 5 -S insane -m all -o full_audit.html -v 2 --max-scan-time 7200

六、常见问题与解决方案

6.1 SSL证书验证

bash 复制代码
# 禁用SSL验证(不推荐用于生产环境)
wapiti -u https://example.com --verify-ssl 0

6.2 Cookie处理

bash 复制代码
# 忽略Set-Cookie头
wapiti -u https://example.com --drop-set-cookie

# 使用特定Cookie值
wapiti -u https://example.com -C "sessionid=abc123; token=xyz789"

6.3 故障排除

bash 复制代码
# 查看可用模块
wapiti --list-modules

# 更新Wapiti
wapiti --update

# 查看版本信息
wapiti --version

七、最佳实践建议

  1. 扫描前准备

    • 获得授权
    • 测试环境优先
    • 了解目标应用
  2. 扫描策略

    • 从低强度开始
    • 逐步增加扫描深度
    • 合理设置超时时间
  3. 结果验证

    • 人工复核关键发现
    • 避免误报
    • 区分漏洞严重程度
  4. 性能考虑

    • 控制并发数
    • 限制扫描时间
    • 分批处理大型应用

结论

Wapiti 3.2.10是一款功能强大的Web应用漏洞扫描工具,它提供了丰富的配置选项,可以适应各种扫描场景。通过本文的详细介绍,您应该能够充分掌握Wapiti的使用方法,有效地进行Web应用安全审计。记住在使用时始终遵守法律法规,获得必要的授权,并以负责任的方式进行安全测试。