記一次用WPScan輔助滲透WordPress站點
一、什么是WPScan?
WPScan
是一個掃描 WordPress
漏洞的黑盒子掃描器,它可以為所有 Web
開發人員掃描 WordPress
漏洞並在他們開發前找到並解決問題。我們還使用了 Nikto
,它是一款非常棒的 Web
服務器評估工具,我們認為這個工具應該成為所有針對 WordPress
網站進行的滲透測試的一部分。 Wordpress
作為三大建站模板之一,在全世界范圍內有大量的用戶,這也導致白帽子都會去跟蹤 WordPress
的安全漏洞,Wordpress
自誕生起也出現了很多漏洞。 Wordpress
還可以使用插件、主題。於是 Wordpress
本身很難挖掘什么安全問題的時候,安全研究者開始研究其插件、主題的漏洞。通過插件、主題的漏洞去滲透Wordpress
站點,於是 WPScan
應運而生,收集 Wordpress
的各種漏洞,形成一個 Wordpress
專用掃描器。該掃描器可以實現獲取站點用戶名,獲取安裝的所有插件、主題,以及存在漏洞的插件、主題,並提供漏洞信息。同時還可以實現對未加防護的 Wordpress
站點暴力破解用戶名密碼。
WPScan已經被預安裝在以下Linux系統中:
二、WPScan的安裝和使用
由於 Windows
不支持 WPScan
。最新版本的 WPScan
可以在 Linux
或 Mac
上下載使用:
Debian/Ubuntu下安裝:
sudo apt-get install libcurl4-gnutls-dev libopenssl-ruby libxml2 libxml2-dev libxslt1-dev ruby-dev
git clone https://github.com/wpscanteam/wpscan.git
cd wpscan
sudo gem install bundler && bundle install --without test development
Fedora下安裝:
sudo yum install gcc ruby-devel libxml2 libxml2-devel libxslt libxslt-devel libcurl-devel
git clone https://github.com/wpscanteam/wpscan.git
cd wpscan
sudo gem install bundler && bundle install --without test development
Archlinux下安裝:
pacman -Syu ruby
pacman -Syu libyaml
git clone https://github.com/wpscanteam/wpscan.git
cd wpscan
sudo gem install bundler && bundle install --without test development
gem install typhoeus
gem install nokogiri
MAC OSX下安裝:
git clone https://github.com/wpscanteam/wpscan.git
cd wpscan
sudo gem install bundler && bundle install --without test development
具體參考:https://wpscan.org/
常見參數選項:
--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 dir> WPScan會去發現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 輸出當前版本
三、WPScan的輔助滲透WordPress站點演示
環境准備
- Kali Linux
- WPScan工具(Kali Linux里面已經預裝好了)
- CentOS 7
- WordPress環境(預先在CentOS 7里面搭建好了環境)
滲透過程
1、更新漏洞數據庫
在使用WPScan之前,先更新它的漏洞數據庫:
wpscan --update
我們直接查看下當前版本:
2、掃描WordPress漏洞
接下來使用下面的命令來掃描可能存在的漏洞網站:
wpscan ––url [wordpress url]
這里我直接用我自己的站點為例子進行演示
wpscan --url http://angelkitty.xin/
效果如下:
3、掃描wordpress用戶
我們可以對其用戶進行枚舉:
wpscan ––url [wordpress url] –-enumerate u
4、暴力破解
wpscan ––url [wordpress url] ––wordlist [path to wordlist] ––username [username to brute force] ––threads [number of threads to use]
既然當前有兩個用戶 angel_kitty
和 test
,我們直接把兩個均枚舉出來
wpscan -u 119.23.243.4 -e u --wordlist /root/桌面/password.txt
這里我也有個問題一直沒解決,就是用 url
去指定域名和用 username
去指定用戶均不太好使,直接就 302
調整爆出了 password
,連字典都沒去查,也不知道咋回事,查了 wpscan
的 Issue
,可能是 wpscan
升級了以后,新版本和老版本命令上有所差異,具體以后分析一下 wpscan
的源碼,所以演示出這個效果弄了整整一天。
演示效果如下:
視頻演示
也歡迎大家關注我的bilibili賬號:Angel_Kitty,不定期發送一些演示視頻教程
四、WordPress的防護措施
如果你想要避免WordPress用戶列表被列舉,不要把用戶名作為昵稱,並且不要使用已經被大眾知道的用戶名。最好的方式是選擇一個包含隨機字符的名字做用戶名並且使用其他名字作為昵稱。 WPScan
掃描 URL
來獲取用戶名,所以如果你不使用這個用戶名,你肯定不會被 WPScan
搜索到。
防止暴力破解的最好方式是限制一個 IP
地址的嘗試登錄次數。 WordPress
有很多插件可以實現這個功能。我使用的一個插件叫: Brute Force Login Protection
。