您的位置:首頁>正文

WordPress 4.6遠端代碼執行漏洞

關於WordPress

WordPress是一個注重美學、易用性和網路標準的個人資訊發佈平臺。 WordPress雖為免費的開源軟體, 但其價值無法用金錢來衡量。

使用WordPress可以搭建功能強大的網路資訊發佈平臺,

但更多的是應用於個性化的博客。 針對博客的應用, WordPress能讓您省卻對後臺技術的擔心, 集中精力做好網站的內容。

根據w3techs.com對WordPress網站的即時市場份額統計, WordPress占所有使用內容管理系統的網站的58.9%。 大約占所有網站的27.9%左右。

漏洞概述

漏洞編號:CVE-2016-10033

漏洞發現者:dawid_golunski

漏洞危害:嚴重

影響版本:4.6

漏洞描述:遠端攻擊者可以利用該漏洞執行代碼

漏洞細節

這個漏洞主要是PHPMailer漏洞(CVE-2016-10033)在WordPress Core代碼中的體現, 該漏洞不需要任何的驗證和外掛程式, 在預設的配置情況下就可以利用。 遠端攻擊者可以利用該漏洞執行代碼。 由於該漏洞影響比較大, 通過和官方協商, 決定推遲更新wordpress漏洞細節。

漏洞代碼

WordPress 根據SERVER_NAME 伺服器頭設置電子郵件域, 當WordPress wp_mail()函數被調用來發送電子郵件時(例如, 使用者註冊, 忘記密碼等)。 可以看到from是這樣的

然後將其過濾並傳遞到PHPMailer的易受攻擊的setFrom()函數中, 相關細節請回顧:

https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10045-Vuln-Patch-Bypass.html

https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code -exec-CVE-2016-10033-Vuln.html

注入

可以在Apache的預設配置上操作SERVER_NAME伺服器頭。 Web伺服器(最常見的WordPress部署)通過HTTP請求中的HOST頭。

為了驗證這點,

請看vars.php請求與回應的演示

我們可以看到, 在HOST標頭檔中附加到主機名稱的INJECTION字串 複製到HTTP_HOST和SERVER_NAME PHP變數。

使用這個HOST頭的例子, 如果攻擊者觸發了wp_mail()函數

通過使用WordPress的忘記密碼功能, HTTP請求將類似於

並將導致以下參數傳遞到/ usr / sbin / sendmail:

這裡需要注意的是第三個參數。 電子郵件的功能變數名稱部分匹配請求的HOST頭, 小寫“inject”除外。

繞過過濾

為了利用PHPMailer的mail()注入漏洞, 攻擊者會將參數附加到域部分。 但是, 過濾/驗證這個地方(在wordpress方面以及PHPMailer庫方面)都會

防止攻擊者注入空字元(空格或TAB), 因此從注入參數到sendmail binary 。

例如, 如果攻擊者將HOST頭修改為以下內容:

驗證將導致無效的域部分錯誤, 並且WordPress應用程式將退出http回應:

在這種情況下, PHPMailer函數永遠不會被執行(sendmail binary 不會被執行)

PHPMailer庫的validateAddress()函數以及PHP的filter_var / FILTER_VALIDATE_EMAIL都符合RFC 822標準

詳細請查看:

http://php.net/manual/en/filter.filters.validate.php

它禁止域部分中的空格, 從而防止注入的附加參數到/ usr / sbin / sendmail。

應該注意的是注入額外的 反斜線到電子郵件的用戶名部分

http://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html

對於攻擊者來說, 在這種情況下電子郵件的用戶名部分很難利用。

RFC 822和注釋語法

根據查看RFC 822規範, 找到繞過驗證的一種潛在的方法:

https://www.ietf.org/rfc/rfc822.txt

電子郵寄地址可以包含注釋

該檔給出了一個電子郵件示例, 其中括弧中有注釋:

作為有效的電子郵件, 域內部分的簡化注釋示例:

john@example.com(comment)

經過進一步測試, 結果發現注釋部分可以包含空格在功能變數名稱部分, 可以作為一種繞過的方式。 將驗證域部分注入附加參數到sendmail binary。

通過注釋語法注入參數

以下請求與HOST頭設置為:

不會觸發錯誤, 測試以下參數發送郵件 :

我們已經設法繞過Wordpress篩檢程式的驗證以及PHPMailer的內部setFrom()驗證。

我們現在可以控制第四個參數('inject')並且可以注入。 如果需要, 參數3和參數5之間有更多的參數。 在理論上, 我們現在應該可以注入額外的參數到/ usr / sbin / sendmail包裝器 從而實現任意代碼執行。

通過Sendmail MTA執行代碼

迄今為止, 唯一已知的方法是通過遠端執行代碼執行PHPmailer(), PHPmailer()依賴於目標系統上的Sendmail MTA

最常見的Sendmail MTA向量類似於:

它通常通過輸入資訊寫入一個包含php後門的日誌檔

然而, 這種技術有兩個問題:

1)

Sendmail MTA不再常用, 我們可以通過查看來驗證

http://www.securityspace.com/s_survey/data/man.201703/mxsurvey.html

這表明Sendmail在Linux MTA中最不受歡迎。 它不附帶任何現代的Linux發行版本。

2)

上述的Sendmail技術在這種情況下不起作用。 如前所述, 主機名稱複製到SERVER_NAME伺服器變數被轉換成小寫, 因此被注入Sendmail參數在請求中類似於:

將出現以下一組sendmail參數:

Sendmail會失敗並出現錯誤,因為這裡參數是區分大小寫的,而-q和-x都不會工作。

通過Exim4 MTA執行代碼

PHPMailer和其他電子郵件庫中的漏洞同樣也可以利用Exim4 MTA執行代碼,基本格式如下

-be開關啟用字串擴展測試模式。上述擴展執行/ bin / true並返回值

同樣,以下將執行id命令:

注意:在使用Exim4的系統上,/ usr / sbin / sendmail只是一個符號連結:/ usr / sbin / sendmail - > exim4與Sendmail MTA無關。

這個點可以可靠的方式實現執行命令

$ run expand指定為參數,不需要將檔寫入/ var / www / html或猜測目錄路徑

未完待續...

POC

PoC演示視頻

修復建議

更新到最新版本或者4.7以上版本

參考

https://legalhackers.com/

https://exploitbox.io/

https://youtu.be/ZFt_S5pQPX0

https://w3techs.com/technologies/details/cm-wordpress/all/all

https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10045-Vuln-Patch-Bypass.html

https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html

https://legalhackers.com/advisories/SwiftMailer-Exploit-Remote-Code-Exec-CVE-2016-10074-Vuln.html

因此被注入Sendmail參數在請求中類似於:

將出現以下一組sendmail參數:

Sendmail會失敗並出現錯誤,因為這裡參數是區分大小寫的,而-q和-x都不會工作。

通過Exim4 MTA執行代碼

PHPMailer和其他電子郵件庫中的漏洞同樣也可以利用Exim4 MTA執行代碼,基本格式如下

-be開關啟用字串擴展測試模式。上述擴展執行/ bin / true並返回值

同樣,以下將執行id命令:

注意:在使用Exim4的系統上,/ usr / sbin / sendmail只是一個符號連結:/ usr / sbin / sendmail - > exim4與Sendmail MTA無關。

這個點可以可靠的方式實現執行命令

$ run expand指定為參數,不需要將檔寫入/ var / www / html或猜測目錄路徑

未完待續...

POC

PoC演示視頻

修復建議

更新到最新版本或者4.7以上版本

參考

https://legalhackers.com/

https://exploitbox.io/

https://youtu.be/ZFt_S5pQPX0

https://w3techs.com/technologies/details/cm-wordpress/all/all

https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10045-Vuln-Patch-Bypass.html

https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html

https://legalhackers.com/advisories/SwiftMailer-Exploit-Remote-Code-Exec-CVE-2016-10074-Vuln.html

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示