一、WPScan简介
WordPress网站介绍
WordPress是全球流行的博客网站,全球有上百万人使用它来搭建博客。他使用PHP脚本和Mysql数据库来搭建网站。
Wordpress
作为三大建站模板之一,在全世界范围内有大量的用户,这也导致白帽子都会去跟踪WordPress
的安全漏洞,Wordpress
自诞生起也出现了很多漏洞。Wordpress
还可以使用插件、主题。于是Wordpress
本身很难挖掘什么安全问题的时候,安全研究者开始研究其插件、主题的漏洞。通过插件,主题的漏洞去渗透Wordpress
站点,于是WPScan
应运而生,收集Wordpress
的各种漏洞,形成一个Wordpress
专用扫描器
-
WPScan
是一个扫描WordPress
漏洞的黑盒子扫描器,它可以为所有Web
开发人员扫描WordPress
漏洞并在他们开发前找到并解决问题。我们还使用了Nikto
,它是一款非常棒的Web
服务器评估工具,我们认为这个工具应该成为所有针对WordPress
网站进行的渗透测试的一部分 -
WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用Ruby编写,能够扫描WordPress网站中的多种安全漏洞,其中包括WordPress本身的漏洞、插件漏洞和主题漏洞。最新版本WPScan的数据库中包含超过18000种插件漏洞和2600种主题漏洞,并且支持最新版本的WordPress。值得注意的是,它不仅能够扫描类似robots.txt这样的敏感文件,而且还能够检测当前已启用的插件和其他功能
-
该扫描器可以实现获取站点用户名,获取安装的所有插件、主题,以及存在漏洞的插件、主题,并提供漏洞信息。同时还可以实现对未加防护的
Wordpress
站点暴力破解用户名密码。
WPScan
已经被预安装在以下Linux
系统中
BackBox Linux
Kali Linux
Pentoo
SamuraiWTF
BlackArch
二、WPScan的参数
- 使用wpscan -h可以查看各种参数以及定义
常用选项
--update 更新到最新版本
--url | -u <target url> 要扫描的`WordPress`站点.
--force | -f 不检查网站运行的是不是`WordPress`
--enumerate | -e [option(s)] 枚举
其他选项
- u 枚举用户名,默认从1-10
- u[10-20] 枚举用户名,配置从10-20
- p 枚举插件
- vp 只枚举有漏洞的插件
- ap 枚举所有插件,时间较长
- tt 列举缩略图相关的文件
- t 枚举主题信息
- vt 只枚举存在漏洞的主题
- at 枚举所有主题,时间较长
- 可以指定多个扫描选项,例:"-e tt,p"
- 如果没有指定选项,默认选项为:"vt,tt,u,vp"
- --exclude-content-based "<regexp or string>"
- 当使用枚举选项时,可以使用该参数做一些过滤,基于正则或者字符串,可以不写正则分隔符,但要用单引号或双引号包裹
- --config-file | -c <config file使用指定的配置文件
- --user-agent | -a <User-Agent指定User-Agent
- --cookie <String指定cookie
- --random-agent | -r 使用随机User-Agent
- --follow-redirection 如果目标包含一个重定向,则直接跟随跳转
- --batch 无需用户交互,都使用默认行为
- --no-color 不要采用彩色输出
- --wp-content-dir <wp content dirWPScan会去发现wp-content目录,用户可手动指定
- --wp-plugins-dir <wp plugins dir指定wp插件目录,默认是wp-content/plugins
- --proxy <[protocol://]host:port设置一个代理,可以使用HTTP、SOCKS4、SOCKS4A、SOCKS5,如果未设置默认是HTTP协议
- --proxy-auth <username:password设置代理登陆信息
- --basic-auth <username:password设置基础认证信息
- --wordlist | -w <wordlist指定密码字典
- --username | -U <username指定爆破的用户名
- --usernames <path-to-file指定爆破用户名字典
- --threads | -t <number of threads指定多线程
- --cache-ttl <cache-ttl设置 cache TTL
- --request-timeout <request-timeout请求超时时间
- --connect-timeout <connect-timeout连接超时时间
- --max-threads <max-threads最大线程数
- --throttle <milliseconds当线程数设置为1时,设置两个请求之间的间隔
- --help | -h 输出帮助信息
- --verbose | -v 输出Verbose
- --version 输出当前版本
三、更新数据漏洞库
- 更新漏洞库,使用命令:
wpscan --update
四、扫描指定站点
- 它会扫描给定的WordPress站点的一些信息,并且列出可能是漏洞的地方。注意,这里wpscan判断是否有漏洞,是根据wordpress的版本判定的,只要你的版本低于存在漏洞的版本,那么,它就认为存在漏洞,所以,这个没有太多的参考性
- 扫描的结果会显示站点的插件信息、主题信息、用户信息等
- 格式:
wpscan --url [wordpress url]
- 例如:这里我直接用一个不认识的人的站点为例子进行演示(是我的好友HHHHH)
wpscan --url https://www.xxxxx.wiki/
演示案例:
- 我们扫描192.168.43.104:8000这个站点(此站点存在一个WordPress进程)
五、扫描指定用户
- 格式:
wpscan --url https://www.xxxxxxx.wiki/ --enumerate u
六、暴力破解得到密码
- 在暴力破解之前,需要提供一个字典文件
- 格式:
wpscan --url https://www.xxxxx.wiki/ -e u --wordlist 字典文件路径
七、扫描插件漏洞
- 插件可以扩展
WordPress
站点的功能,但很多插件中都存在安全漏洞,而这也会给攻击者提供可乘之机 - 我们可以使用下列命令扫描
WordPress
站点中安装的插件:
wpscan --url https://www.xxxxx.wiki/ --enumerate p
//备注:--url与-u参数相同,下面雷同
- 我们可以使用下列命令来扫描目标插件中的安全漏洞:
wpscan --url https://www.xxxxx.wiki/ --enumerate vp
八、主题漏洞扫描
- 使用下列命令对主题进行扫描:
wpscan --url https://www.xxxxx.wiki --enumerate t
演示案例:
- 看到总共数据库中的402个主题,发现了3个主题,但是发现的主题不一定有这么多,会在下面显示
- 使用下列命令扫描主题中存在的漏洞:
wpscan --url https://www.xxxxxx.wiki --enumerate vt
九、TimThumbs
文件漏洞扫描
wpscan -u https://www.xxxxxx.wiki/ -enumerate tt
十、WordPress
的防护措施
关于密码爆出防护措施
- 如果你想要避免
WordPress
用户列表被列举,不要把用户名作为昵称,并且不要使用已经被大众知道的用户名。最好的方式是选择一个包含随机字符的名字做用户名并且使用其他名字作为昵称。WPScan
扫描URL
来获取用户名,所以如果你不使用这个用户名,你肯定不会被WPScan
搜索到。- 防止暴力破解的最好方式是限制一个
IP
地址的尝试登录次数。WordPress
有很多插件可以实现这个功能。列如有一个插件叫Brute Force Login Protection
(当然你也可以写一个脚本防止爆出个人密码)
如何防范扫描插件、主题、
TimThumb
文件
- 使用
Block Bad Queries (BBQ)
插件,就可以屏蔽和禁止这类扫描