如何使用WPScan在WordPress网站中找到安全漏洞?

数以百万计的网站都采用WordPress,并在内容管理系统(CMS)领域中处于第一位置,占有62%的市场份额。

最近一份由Acunetix发布的网络应用漏洞报告显示,大约有30%的WordPress网站存在漏洞。

有很多online security scanner可以用来扫描您的网站。然而,如果您想要安装并从您的服务器扫描,则WPScan是您的好朋友。它对于您的网站位于私人网络或内部网络上而无法连接互联网的情况非常有用。或者,您想要在多个时间测试多个网站。

WPScan是免费软件,可帮助您识别WordPress网站上的与安全相关的问题。它可以执行以下几项任务:

  • 检查网站是否使用易受攻击的WordPress版本
  • 检查主题和插件是否更新或已知存在漏洞
  • 检查Timthumbs
  • 检查配置备份,数据库导出
  • 暴力破解攻击

以及其他很多功能…

有多种使用WPScan的方式。

  • 在Linux服务器上安装
  • 使用Docker
  • 使用预安装的Linux发行版,如Kali Linux,BackBox,Pentoo,BlackArch等
  • 在线版本

在CentOS上使用

以下测试在CentOS 7.x上进行。

  • 使用root登录CentOS
  • 更新仓库
yum update -y
  • 安装最新的Ruby及其依赖项
yum -y install curl gpg gcc gcc-c++ make patch autoconf automake bison libffi-devel libtool patch readline-devel sqlite-devel zlib-devel openssl-devel && gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB && curl -sSL https://get.rvm.io | bash -s stable --ruby
  • 安装Ruby Nokogiri
yum -y install rubygem-nokogiri
  • 重启服务器,然后使用gem命令安装WPScan
gem install wpscan

安装过程需要几秒钟时间,完成后,您将看到如下信息。

Done installing documentation for ffi, get_process_mem, mini_portile2, nokogiri, concurrent-ruby, i18n, thread_safe, tzinfo, zeitwerk, activesupport, public_suffix, addressable, opt_parse_validator, ruby-progressbar, ethon, typhoeus, yajl-ruby, sys-proctable, cms_scanner, wpscan after 32 seconds
20 gems installed

WPScan已安装并准备就绪。执行wpscan命令,您将看到以下返回结果。

[root@lab ~]# wpscan
One of the following options is required: url, update, help, hh, version

Please use --help/-h for the list of available options.
[root@lab ~]#

以下是对某个网站的测试输出。

[root@lab ~]#wpscan –url https://yaoweibinsg.com
_______________________________________________________________
__ _______ _____
/ / __ / |
/ / /| |__) | |
/ / / | ___/ ___) | _|_ _| ___ _ __ ®
/ / | | |__ <| '_ ` _ / _ |
/ / |_| ___) | | | | | | __/ |
/_/ _(_) |____/|_| |_| |_|___|_|
 
由WPScan团队开发的WordPress安全扫描器
版本3.7.6
由Automattic赞助-https://automattic.com/
@_WPScan_,@ethicalhack3r,@erwan_lr,@firefart
_______________________________________________________________
 
[+] URL:https://yaoweibinsg.com/
[+]开始时间:2020年1月8日星期三21:14:16
 
有趣的发现:
 
[+] https://yaoweibinsg.com/
| 有趣的条目:
| – 服务器:nginx
| – X-Cache-Enabled:True
| – Host-Header:5d77dd967d63c3104bced1db0cace49c
| – X-Proxy-Cache:MISS
| 发现者:标头(被动检测)
| 置信度:100%
 
[+] https://yaoweibinsg.com/robots.txt
| 有趣的条目:
| – /wp-admin/
| – /wp-admin/admin-ajax.php
| 发现者:机器人文本文件(积极检测)
| 置信度:100%
 
[+] https://yaoweibinsg.com/xmlrpc.php
| 发现者:直接访问(积极检测)
| 置信度:100%
| 参考:
| – http://codex.wordpress.org/XML-RPC_Pingback_API
| – https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner
| – https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos
| – https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login
| – https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access
 
[+] https://yaoweibinsg.com/readme.html
| 发现者:直接访问(积极检测)
| 置信度:100%
 
[+] https://yaoweibinsg.com/wp-cron.php
| 发现者:直接访问(积极检测)
| 置信度:60%
| 参考:
| – https://www.iplocation.net/defend-wordpress-from-ddos
| – https://github.com/wpscanteam/wpscan/issues/1299
 
[+]识别WordPress版本5.3.2(最新版本,于2019年12月18日发布)。
| 发现者:Rss生成器(被动检测)
| – https://yaoweibinsg.com/feed/,https://wordpress.org/?v=5.3.2
| – https://yaoweibinsg.com/comments/feed/,https://wordpress.org/?v=5.3.2
 
[+]正在使用的WordPress主题:twentyseventeen
| 位置:https://yaoweibinsg.com/wp-content/themes/twentyseventeen/
| 最后更新日期:2019-05-07T00:00:00.000Z
| 自述:https://yaoweibinsg.com/wp-content/themes/twentyseventeen/README.txt
| [!]版本已过时,最新版本为2.2
| 样式URL:https://yaoweibinsg.com/wp-content/themes/twentyseventeen/style.css
| 样式名称:Twenty Seventeen
| 样式URI:https://wordpress.org/themes/twentyseventeen/
| 说明:Twenty Seventeen通过标题视频和沉浸式特色图像使您的站点生动起来。与a fo…
| 作者:WordPress团队
| 作者URI:https://wordpress.org/
|
| 发现者:主页中的URL(被动检测)
| 由404页中的URL确认(被动检测)
|
| 版本:2.1(80%置信度)
| 发现者:样式(被动检测)
| – https://yaoweibinsg.com/wp-content/themes/twentyseventeen/style.css,匹配:'Version:2.1'
 
[+]正在枚举所有插件(通过被动方法)
 
[1]发现插件:
 
[i]没有找到插件。
 
[+]枚举配置备份(通过被动和积极方法)
检查配置备份-时间:00:00:01 (21/21)100.00%时间:00:00:01
 
[i]没有找到配置备份。
 
[!]没有提供WPVulnDB API令牌,因此未输出漏洞数据。
[!]您可以通过在https://wpvulndb.com/users/sign_up注册来获取每天50个请求的免费API令牌
 
[+]完成时间:2020年1月8日星期三21:14:28
[+]请求完成:51
[+]缓存请求:7
[+]发送的数据:9.52 KB
[+]接收的数据:369.97 KB
[+]使用的内存:202.898 MB
[+]经过的时间:00:00:12
[root@lab ~]#

注意:如果您需要输出漏洞数据,您需要使用它们的API

如果您对测试特定指标感兴趣,请通过执行wpscan命令并使用--help语法来查看帮助。

[root@lab ~]# wpscan –hh
_______________________________________________________________
__ _______ _____
/ / __ / ____|
/ / /| |__) | (___ ___ __ _ _ __ ®
/ / / | ___/ ___ / __|/ _` | ‘_
/ / | | ____) | (__| (_| | | | |
/ / |_| |_____/ ___|__,_|_| |_|

WordPress安全扫描器由WPScan团队开发
版本3.7.6
赞助商:Automattic – https://automattic.com/
@_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________

使用方法:wpscan [options] –url URL 要扫描的博客的URL
允许的协议:http,https
如果未提供默认协议:http
除非提供update、help、hh或version,否则此选项为必填项
-h, –help 显示简单帮助信息并退出
–hh 显示完整帮助信息并退出
–version 显示版本信息并退出
–ignore-main-redirect 忽略主重定向(如果有)并扫描目标URL
-v, –verbose 详细模式
–[no-]banner 是否显示横幅
默认值:true
–max-scan-duration SECONDS 如果扫描时间超过所提供的时间(以秒为单位),则中止扫描
-o, –output FILE 输出到文件
-f, –format FORMAT 以所提供的格式输出结果
可用选项:cli-no-colour,cli-no-color,cli,json
–detection-mode MODE 默认值:mixed
可用选项:mixed,passive,aggressive
–scope DOMAINS 以逗号分隔的(子)域名,以在范围内考虑。
通配符允许在有效域的第三级域中使用,例如:*.target.tld
值之间要使用的分隔符:','
–user-agent, –ua VALUE
–headers HEADERS 在请求中附加的其他标头
标头之间要使用的分隔符:'; ‘
示例:'X-Forwarded-For: 127.0.0.1','X-Forwarded-For: 127.0.0.1; Another: aaa'
–vhost VALUE 用于请求的虚拟主机(Host标头)
–random-user-agent, –rua 每次扫描使用随机的用户代理
–user-agents-list FILE-PATH 用于–random-user-agent的代理列表
默认值:/usr/local/rvm/gems/ruby-2.6.3/gems/cms_scanner-0.8.1/app/user_agents.txt
–http-auth login:password
-t, –max-threads VALUE 要使用的最大线程数
默认值:5
–throttle MilliSeconds 在执行另一个Web请求之前等待的毫秒数。如果使用此参数,则最大线程数将设置为1。
–request-timeout SECONDS 请求超时时间(以秒为单位)
默认值:60
–connect-timeout SECONDS 连接超时时间(以秒为单位)
默认值:30
–disable-tls-checks 禁用SSL/TLS证书验证,并降级为TLS1.0+(后者需要cURL 7.66)
–proxy protocol://IP:port 支持的协议与安装的curl有关
–proxy-auth login:password
–cookie-string COOKIE 在请求中使用的Cookie字符串,格式:cookie1=value1[; cookie2=value2] –cookie-jar FILE-PATH 读取和写入cookie的文件
默认值:/tmp/wpscan/cookie_jar.txt
–cache-ttl TIME_TO_LIVE 缓存的存活时间(以秒为单位)
默认值:600
–clear-cache 在扫描之前清除缓存
–cache-dir PATH 默认值:/tmp/wpscan/cache
–server SERVER 强制加载提供的服务器模块
可用选项:apache,iis,nginx
–force 不检查目标是否运行WordPress
–[no-]update 是否更新数据库
–api-token TOKEN 用于显示漏洞数据的WPVulnDB API令牌
–wp-content-dir DIR wp-content目录(如果自定义或未检测到),如“wp-content”
–wp-plugins-dir DIR 插件目录(如果自定义或未检测到),如“wp-content/plugins”
–interesting-findings-detection MODE 用于有趣发现检测的模式
可用选项:mixed,passive,aggressive
–wp-version-all 检查所有版本位置
–wp-version-detection MODE 用于WordPress版本检测的模式,而不是全局(–detection-mode)模式。
可用选项:mixed,passive,aggressive
–main-theme-detection MODE 用于主题检测的模式,而不是全局(–detection-mode)模式。
可用选项:mixed,passive,aggressive
-e, –enumerate [OPTS] 枚举进程
可用选项:
vp 弱点插件
ap 所有插件
p 热门插件
vt 弱点主题
at 所有主题
t 热门主题
tt Timthumbs
cb 配置备份
dbe 数据库导出
u 用户ID范围,例如:u1-5
范围分隔符:'-‘
如果未提供参数的值:1-10
m 媒体ID范围,例如m1-15
注意:这些需检测的permalink设置必须设置为“Plain”
范围分隔符:'-‘
如果未提供参数的值:1-100
值之间要使用的分隔符:','
默认值:所有插件,配置备份
如果未提供参数的值:vp,vt,tt,cb,dbe,u,m
不兼容的选项(每组只能使用其中一个):
– vp, ap, p
– vt, at, t
–exclude-content-based REGEXP_OR_STRING 在枚举期间排除与正则表达式(不区分大小写)匹配的所有响应。
检查标题和正文。不需要正则表达式分隔符。
–plugins-list LIST 要枚举的插件列表
示例:'a1','a1,a2,a

在Kali Linux上使用WPScan

使用Kali Linux的好处是您不需要安装任何东西。WPScan已预先安装。

让我们找出如何运行扫描程序。

  • 使用root登录Kali Linux并打开终端
  • 使用wpscan命令运行扫描
wpscan --url https://mysite.com

使用Docker

喜欢Docker吗?

为什么不呢,很容易上手。确保您拥有Docker installed

  • 拉取WPScan docker镜像
docker pull wpscanteam/wpscan
  • 一旦拉取完毕,像下面这样运行它。
docker run -it --rm wpscanteam/wpscan --url https://example.com

简单吧?

基于WPScan的在线扫描器

您可以利用以下由WPScan提供支持的工具。

Geekflare

Geekflare WordPress Security Scanner让您快速查找给定的WordPress网站是否具有易受攻击的核心版本、主题、插件等。

除了WPScan的度量指标之外,它还检查以下内容。

  • 管理控制台是否暴露?
  • 是否被Google认为是安全的
  • 是否通过HTTPS访问
  • 前端JavaScript库是否存在漏洞

您不需要注册帐户,可以免费按需运行测试。

Pentest-Tools

Pentest-Tools提供的工具可以让您按需测试WP网站并生成报告。

接下来怎么办?

做得好!如果您的网站没有受到漏洞的影响。但是,如果有漏洞存在,则需要解决这些风险问题。如果您不确定如何处理它们,请参考professional help

类似文章