深入解析 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。例如:
bash
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:基本扫描
扫描目标站点并检测漏洞:
bash
wpscan --url http://example.com --api-token YOUR_TOKEN
示例 2:枚举插件和主题
枚举所有插件和主题:
bash
wpscan --url http://example.com -e ap,at
示例 3:密码爆破
对指定用户名进行密码爆破:
bash
wpscan --url http://example.com -U admin -P /usr/share/wordlists/rockyou.txt --password-attack wp-login -t 20
示例 4:隐秘扫描
使用随机 User-Agent 和被动模式:
bash
wpscan --url http://example.com --stealthy
注意事项
- 合法性:WPScan 应仅用于授权测试,未经许可扫描他人网站可能违法。
- 防护规避 :高线程数或频繁请求可能触发 WAF,使用
--throttle或代理降低风险。 - API 令牌:免费用户有每日查询限制,需注册获取令牌以查看漏洞详情。
总结
WPScan 是一个功能强大且灵活的 WordPress 安全扫描工具,通过其丰富的参数,用户可以实现从基本信息收集到深度漏洞探测的多种任务。无论是枚举组件、检测漏洞还是执行密码攻击,合理配置参数都能显著提升效率和准确性。希望本文的详细解析能帮助你更好地掌握 WPScan 的用法,安全地探索和保护 WordPress 站点!