深入解析 WPScan:用法与参数详解
WPScan 是一款由 WPScan Team 开发的开源工具,专为扫描 WordPress 网站的安全性而设计。它能够帮助安全研究人员、渗透测试人员以及网站管理员发现 WordPress 站点中的漏洞、配置问题及其他潜在风险。本文将基于 wpscan --help
的输出,详细介绍 WPScan 的用法和常用参数,旨在帮助用户全面掌握这款工具的功能。
什么是 WPScan?
WPScan 是一个命令行工具,最初由 Ryan Dewhurst(@ethicalhack3r)创建,现由 Automattic 赞助。它通过扫描目标 WordPress 站点,检测核心版本、插件、主题的漏洞,并支持用户枚举和密码爆破等功能。当前版本(基于帮助信息)为 3.8.28,支持丰富的选项和灵活的配置。
运行 WPScan 时,会显示如下标志:
__ _______ _____
\ \ / / __ \ / ____|
\ \ /\ / /| |__) | (___ ___ __ _ _ __ ®
\ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \
\ /\ / | | ____) | (__| (_| | | | |
\/ \/ |_| |_____/ \___|\__,_|_| |_|
WordPress Security Scanner by the WPScan Team
Version 3.8.28
Sponsored by Automattic - https://automattic.com/
@_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
基本用法
WPScan 的基本用法格式为:
wpscan [options]
其中,--url
是大多数扫描任务的必填选项,用于指定目标 WordPress 站点的 URL。例如:
wpscan --url http://example.com
如果未提供协议,默认使用 http
。支持的协议包括 http
和 https
。
核心参数详解
以下是 wpscan --help
中列出的主要参数及其功能的详细说明:
1. 基本选项
-
-h, --help
显示简要帮助信息并退出,适合快速查看基本用法。 -
--hh
显示完整帮助信息,包含更多高级选项(--help
未完全列出所有内容)。 -
--version
显示当前 WPScan 版本(例如 3.8.28)并退出。 -
--url URL
指定目标 WordPress 站点的 URL。这是运行扫描的核心参数,除非使用--update
、-h
、--hh
或--version
,否则必须提供。
示例:--url https://example.com
-
-v, --verbose
启用详细模式,输出更多扫描过程中的信息,便于调试或深入分析。 -
--[no-]banner
是否显示 WPScan 的启动标志。默认值为true
(显示)。使用--no-banner
可禁用。
2. 输出控制
-
-o, --output FILE
将扫描结果保存到指定文件。例如:-o scan_result.txt
。 -
-f, --format FORMAT
指定输出格式。可选值包括:cli-no-colour
/cli-no-color
:无颜色终端输出。cli
:默认带颜色的终端输出。json
:JSON 格式,便于程序化处理。
示例:-f json -o result.json
3. 扫描模式
-
--detection-mode MODE
设置检测模式,影响插件和主题的探测方式。可选值:mixed
(默认):混合模式,结合被动和主动检测。passive
:仅使用被动方法(例如分析页面源码),减少被检测风险。aggressive
:主动发送请求以确认漏洞,可能更准确但更容易触发防护。
示例:--detection-mode aggressive
-
--force
强制扫描,即使目标未运行 WordPress 或返回 403 状态码。通常用于不确定目标是否为 WordPress 的情况。
4. 网络与请求配置
-
--user-agent, --ua VALUE
指定自定义 User-Agent。例如:--ua "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
。 -
--random-user-agent, --rua
为每次请求随机生成 User-Agent,降低被防火墙识别的风险。 -
-t, --max-threads VALUE
设置最大线程数,控制并发请求数量。默认值为 5。
示例:-t 20
(提高扫描速度,但可能增加服务器负载)。 -
--throttle MilliSeconds
设置请求之间的延迟(毫秒)。启用时,线程数强制为 1。
示例:--throttle 500
(每 0.5 秒发送一个请求)。 -
--request-timeout SECONDS
设置请求超时时间,默认 60 秒。
示例:--request-timeout 30
。 -
--connect-timeout SECONDS
设置连接超时时间,默认 30 秒。 -
--disable-tls-checks
禁用 SSL/TLS 证书验证,并强制使用 TLS 1.0+(需要 cURL 7.66+)。适用于目标站点证书无效的情况。 -
--proxy protocol://IP:port
通过代理发送请求,支持的协议取决于 cURL 配置。例如:--proxy http://127.0.0.1:8080
。 -
--proxy-auth login:password
指定代理认证凭据。例如:--proxy-auth user:pass
。 -
--cookie-string COOKIE
设置请求中的 Cookie,例如:--cookie-string "session=abc123; user=admin"
。 -
--cookie-jar FILE-PATH
指定用于读写 Cookie 的文件,默认路径为/tmp/wpscan/cookie_jar.txt
。
5. 枚举功能
-
-e, --enumerate [OPTS]
执行枚举任务,探测目标站点的组件和信息。可选值包括:vp
:仅枚举存在漏洞的插件。ap
:枚举所有插件。p
:枚举热门插件。vt
:仅枚举存在漏洞的主题。at
:枚举所有主题。t
:枚举热门主题。tt
:枚举 Timthumb 文件。cb
:枚举配置文件备份。dbe
:枚举数据库导出文件。u
:枚举用户 ID(默认范围 1-10,例如u1-5
)。m
:枚举媒体 ID(默认范围 1-100,需要“朴素”链接设置)。
多选项用逗号分隔,例如:-e vp,vt,cb
。
默认值:vp,vt,tt,cb,dbe,u,m
。
-
--exclude-content-based REGEXP_OR_STRING
排除匹配指定正则表达式或字符串的响应(不区分大小写),适用于过滤无关内容。 -
--plugins-detection MODE
设置插件检测模式(mixed
、passive
、aggressive
),默认passive
。 -
--plugins-version-detection MODE
设置插件版本检测模式(mixed
、passive
、aggressive
),默认mixed
。 -
--exclude-usernames REGEXP_OR_STRING
排除匹配的用户名,减少枚举干扰。
6. 密码攻击
-
-P, --passwords FILE-PATH
指定密码列表文件,用于密码爆破。例如:-P /usr/share/wordlists/rockyou.txt
。 -
-U, --usernames LIST
指定用户名列表,支持逗号分隔或文件路径。例如:-U admin,user1,user2
或-U /tmp/users.txt
。 -
--password-attack ATTACK
强制使用指定的攻击模式,可选值:wp-login
:通过登录页面爆破。xmlrpc
:通过 XML-RPC 接口爆破。xmlrpc-multicall
:通过 XML-RPC 多重调用爆破(仅适用于 WordPress < 4.4)。
示例:--password-attack wp-login
。
-
--multicall-max-passwords MAX_PWD
设置 XMLRPC 多重调用每次请求的最大密码数,默认 500。 -
--login-uri URI
指定自定义登录页面 URI,默认/wp-login.php
。例如:--login-uri /custom-login
。
7. 其他高级选项
-
--wp-content-dir DIR
指定自定义wp-content
目录路径,例如--wp-content-dir content
。 -
--wp-plugins-dir DIR
指定自定义插件目录路径,例如--wp-plugins-dir content/plugins
。 -
--api-token TOKEN
使用 WPScan API 令牌显示漏洞数据,需在 https://wpscan.com/profile 获取。 -
--[no-]update
是否更新本地数据库,默认false
。运行--update
更新漏洞数据。 -
--stealthy
隐秘模式别名,等同于--random-user-agent --detection-mode passive --plugins-version-detection passive
,降低被检测风险。
实用示例
示例 1:基本扫描
扫描目标站点并检测漏洞:
wpscan --url http://example.com --api-token YOUR_TOKEN
示例 2:枚举插件和主题
枚举所有插件和主题:
wpscan --url http://example.com -e ap,at
示例 3:密码爆破
对指定用户名进行密码爆破:
wpscan --url http://example.com -U admin -P /usr/share/wordlists/rockyou.txt --password-attack wp-login -t 20
示例 4:隐秘扫描
使用随机 User-Agent 和被动模式:
wpscan --url http://example.com --stealthy
注意事项
- 合法性:WPScan 应仅用于授权测试,未经许可扫描他人网站可能违法。
- 防护规避:高线程数或频繁请求可能触发 WAF,使用
--throttle
或代理降低风险。 - API 令牌:免费用户有每日查询限制,需注册获取令牌以查看漏洞详情。
总结
WPScan 是一个功能强大且灵活的 WordPress 安全扫描工具,通过其丰富的参数,用户可以实现从基本信息收集到深度漏洞探测的多种任务。无论是枚举组件、检测漏洞还是执行密码攻击,合理配置参数都能显著提升效率和准确性。希望本文的详细解析能帮助你更好地掌握 WPScan 的用法,安全地探索和保护 WordPress 站点!