環境準備#
wordpress#
我們用上一篇文章 (傳送門:在 Ubuntu 中安裝 docker 快速搭建測試環境) 中寫道的官方出品的 Docker 鏡像:wpscanteam/vulnerablewordpress 快速搭建:
docker pull wpscanteam/vulnerablewordpress
docker run --name vulnerablewordpress -d -p 80:80 -p 3306:3306 wpscanteam/vulnerablewordpress
我們配置下帳號密碼:
帳戶名是 admin,密碼是 password123,標準的弱密碼
然後進入網站後台,提示更新 wordpress 版本:
順勢更新了所有的插件,主題,隨便又下了兩個插件:
創建了幾個用戶:
testadmin:123456haha:作者
soapffz:abc123456:管理員
wpscan#
WPScan 是 Kali Linux 默認自帶的一款漏洞掃描工具,它採用 Ruby 編寫,能夠掃描 WordPress 網站中的多種安全漏洞,其中包括主題漏洞、插件漏洞和 WordPress 本身的漏洞。最新版本 WPScan 的數據庫中包含超過 18000 種插件漏洞和 2600 種主題漏洞,並且支持最新版本的 WordPress。值得注意的是,它不僅能夠掃描類似 robots.txt 這樣的敏感文件,而且還能夠檢測當前已啟用的插件和其他功能。
Kali 中是自帶 wpscan 的,但是我打開掃描就會一直卡在 Updating the Database 處,過了一會報了 timeout 錯誤
Kali 也能訪問工具的首頁:https://wpscan.org/,但是掛了 vpn 也是更新不了,我們這裡用 Docker 拉取一個 wpscan,教程在 wpscan 的 Github 上也有:https://github.com/wpscanteam/wpscan
- 拉取一個 wpscan:
docker pull wpscanteam/wpscan
docker run -it --rm wpscanteam/wpscan --url https://yourblog.com [options]
後面的 [options] 為參數,可為空則進行默認的掃描,當然這樣每次都需要執行一次 docker 命令,如果想直接進入這個 wpscan 的 docker image 上執行 wpscan 可以使用以下指令:
docker run -it --entrypoint /bin/sh wpscanteam/wpscan
這個--entrypoint /bin/sh
是什麼意思呢,字面意思是用 /bin/sh 作為入口,我們可以理解為用 /bin/sh 即 shell 執行後面的腳本
滲透站點#
我們這裡默認你已經進入這個 docker image 中,則可以使用 wpscan 開頭的語句:
wpscan --url 192.168.2.18
對整個站點進行掃描
額,可以看到伺服器和 php 版本信息,下面掃描了一些敏感目錄和文件備份,還有主題和插件信息掃描
東西太多了,我們一樣一樣看,但是後面的每條指令掃描出的結果都會包含以下內容:
[+] URL: http://192.168.2.18/
[+] Started: Wed Jan 30 10:12:18 2019
Interesting Finding(s):
[+] http://192.168.2.18/
| Interesting Entries:
| - Server: Apache/2.4.7 (Ubuntu)
| - X-Powered-By: PHP/5.5.9-1ubuntu4.24
| - SecretHeader: SecretValue
| - via: Squid 1.0.0
| Found By: Headers (Passive Detection)
| Confidence: 100%
[+] http://192.168.2.18/robots.txt
| Found By: Robots Txt (Aggressive Detection)
| Confidence: 100%
[+] http://192.168.2.18/searchreplacedb2.php
| Found By: Search Replace Db2 (Aggressive Detection)
| Confidence: 100%
| Reference: https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
[+] http://192.168.2.18/xmlrpc.php
| Found By: Link Tag (Passive Detection)
| Confidence: 100%
| Confirmed By: Direct Access (Aggressive Detection), 100% confidence
| References:
| - http://codex.wordpress.org/XML-RPC_Pingback_API
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner
| - https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access
[+] http://192.168.2.18/readme.html
| Found By: Direct Access (Aggressive Detection)
| Confidence: 100%
[+] http://192.168.2.18/wp-content/debug.log
| Found By: Direct Access (Aggressive Detection)
| Confidence: 100%
| Reference: https://codex.wordpress.org/Debugging_in_WordPress
[+] Upload directory has listing enabled: http://192.168.2.18/wp-content/uploads/
| Found By: Direct Access (Aggressive Detection)
| Confidence: 100%
[+] WordPress version 5.0.3 identified (Latest, released on 2019-01-09).
| Detected By: Rss Generator (Passive Detection)
| - http://192.168.2.18/index.php/feed/, <generator>https://wordpress.org/?v=5.0.3</generator>
| - http://192.168.2.18/index.php/comments/feed/, <generator>https://wordpress.org/?v=5.0.3</generator>
[+] WordPress theme in use: twentyfifteen
| Location: http://192.168.2.18/wp-content/themes/twentyfifteen/
| Latest Version: 2.3 (up to date)
| Last Updated: 2019-01-09T00:00:00.000Z
| Readme: http://192.168.2.18/wp-content/themes/twentyfifteen/readme.txt
| Style URL: http://192.168.2.18/wp-content/themes/twentyfifteen/style.css?ver=5.0.3
| Style Name: Twenty Fifteen
| Style URI: https://wordpress.org/themes/twentyfifteen/
| Description: Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, st...
| Author: the WordPress team
| Author URI: https://wordpress.org/
|
| Detected By: Css Style (Passive Detection)
|
| Version: 2.3 (80% confidence)
| Detected By: Style (Passive Detection)
| - http://192.168.2.18/wp-content/themes/twentyfifteen/style.css?ver=5.0.3, Match: 'Version: 2.3'
於是我們知道了它 wpscan 默認每次都會掃描敏感文件
、備份文件
、上傳目錄
、wordpress版本信息
、主題信息
接下來我們來掃描一些比較敏感的東西:
wpscan --url 192.168.2.18 --enumerate u
對用戶名進行枚舉
可以看到很輕易就得到了用戶名
wpscan --url 192.168.2.18 --enumerate t
對主題進行掃描
得到了主題的名字和版本
wpscan --url 192.168.2.18 --enumerate p
對插件進行掃描
wpscan --url 192.168.2.18 --enumerate vp
掃描插件中的安全漏洞
沒有插件的漏洞,同樣的,掃描脆弱的主題將後面的參數 t 改為 vt 即可
wpscan --url 192.168.2.18 --enumerate tt
掃描 TimThumb 文件
TimThumb 是一個非常簡潔方便用於裁圖的 PHP 程序,只要給他設置一些參數,它就可以生成縮略圖。現在很多 WordPress 主題中,都使用 TimThumb 這個 PHP 類庫進行縮略圖的處理。通過 TimThumb 的漏洞很容易獲得站點 root 權限。
沒有找到
wpscan --url 192.168.2.18 --passwords /mnt/passwd.txt --username admin –-threads 100
暴力破解 admin 密碼
這裡發現讀不到文件:
了解到是需要將宿主機目錄掛載到鏡像中的,所以我們刪除這個容器重新創建一個容器:
exit
docker ps -a (查看wpscan這個container的id)
docker stop [id] 先停止
docker rm [id] 再刪除
docker run -it -v /mnt:/tmp --entrypoint /bin/sh wpscanteam/wpscan 多加一個-v參數,使用:分割宿主機目錄和鏡像目錄
關於鏡像內掛載目錄的詳解可以參考這篇:https://www.cnblogs.com/ivictor/p/4834864.html
然後我們爆破:
帳號密碼只有--passwords/--usernames選項,都有s,但是不但可以指定字典也可以指定單個用戶名:
wpscan --url 192.168.2.18 --passwords /tmp/passwd.txt --usernames admin –-threads 100
wpscan -h幫助中的說明:
-P, --passwords FILE-PATH List of passwords to use during the password attack.
If no --username/s option supplied, user enumeration will be run.
-U, --usernames LIST List of usernames to use during the password attack.
開 100 個線程效果如下:
爆破效果及速度都取決於字典和線程的大小,爆破 admin 密碼的效果如下:
密碼在 16878 行,花費了 35 分 20 秒,速度,emmm,爆破是世界上最沒有效率的辦法
其他的參數可以使用 wpscan -h 來查看
- wpscan 的 Github 地址:https://github.com/wpscanteam/wpscan#wpscan-arguments
- GitHub 的 Readme.md 的中文翻譯:https://www.test404.com/post-1627.html?wafcloud=1
利用 searchreplacedb2.php 修改郵箱重置密碼拿下管理員帳號
這是一個用於 WordPress 網站更換域名之後批量替換數據庫內容的工具。但是用了兩下之後可以看出,它只能替換,並沒有找到查詢數據的方法。
另外,searchreplacedb2.php 會自動讀取 wp-config.php,然後返回的表單裡面也包含數據庫用戶名和密碼。存在一個遺留後門 searchreplacedb2.php,可以利用它修改管理員 admin 預留的郵箱,點擊忘記密碼發送重置密碼鏈接,然後重置密碼。
這個文件的利用方式參考文章:https://blog.csdn.net/t91zzh5f/article/details/55805438
防範措施#
1. 怎麼防止 wordpress 網站被人暴力破解管理員密碼呢?
防止暴力破解的最好方式是限制一個 IP 地址的嘗試登錄次數。WordPress 有 n 多插件可以實現這個功能,比如:
-
Login Security Solution
-
Brute Force Login Protection
-
也可以寫一個腳本防止爆出個人密碼
2. 如何防範掃描插件、主題、TimThumb 文件
使用 Block Bad Queries (BBQ) 插件,就可以屏蔽和禁止這類掃描