最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于ThinkPHP framework 任意代碼執(zhí)行漏洞預(yù)警

  發(fā)布時間:2012-04-25 09:40:20   作者:佚名   我要評論
ThinkPHP是一個國內(nèi)使用很廣泛的老牌PHP MVC框架。貌似國內(nèi)有不少創(chuàng)業(yè)公司或者項(xiàng)目都用了這個框架。

最近官方發(fā)布了一個安全補(bǔ)丁,官方表述是:該URL安全漏洞會造成用戶在客戶端偽造URL,執(zhí)行非法代碼。 

可是貌似大多數(shù)開發(fā)者和使用者并沒有注意到此漏洞的危害性,應(yīng)者了了,更不用說有多少人去升級了。隨后我對其進(jìn)行了分析,發(fā)現(xiàn)此問題果然是一個非常嚴(yán)重的問題,只要使用了thinkphp框架,就可以直接執(zhí)行任意php代碼。特此發(fā)帖預(yù)警各位。 

我們來分析一下官方的補(bǔ)丁: 

/trunk/ThinkPHP/Lib/Core/Dispatcher.class.php 

復(fù)制代碼
代碼如下:

125 - $res = preg_replace('@(w+)'.$depr.'([^'.$depr.'/]+)@e', '$var['\1']="\2";', implode($depr,$paths)); 
125 + $res = preg_replace('@(w+)'.$depr.'([^'.$depr.'/]+)@e', '$var['\1']='\2';', implode($depr,$paths)); 


這個代碼是把pathinfo當(dāng)作restful類型url進(jìn)行解析的,主要作用是把pathinfo中的數(shù)據(jù)解析并合并到$_GET數(shù)組中。 
然而在用正則解析pathinfo的時候,主要是這一句: 

復(fù)制代碼
代碼如下:

$res = preg_replace('@(w+)'.$depr.'([^'.$depr.'/]+)@e', '$var['\1']="\2";', implode($depr,$paths)); 

這里明顯使用了preg_replace的/e參數(shù),這是個非常危險的參數(shù),如果用了這個參數(shù),preg_replace第二個參數(shù)就會被當(dāng)做php代碼執(zhí)行,作者用這種方式在第二個參數(shù)中,利用PHP代碼給數(shù)組動態(tài)賦值。 

復(fù)制代碼
代碼如下:

'$var['\1']="\2";' 

而這里又是雙引號,而雙引號中的php變量語法又是能夠被解析執(zhí)行的。因此,攻擊者只要對任意一個使用thinkphp框架編寫的應(yīng)用程序,使用如下方式進(jìn)行訪問,即可執(zhí)行任意PHP代碼: 

復(fù)制代碼
代碼如下:

index.php/module/action/param1/${@print(THINK_VERSION)} 

由于是雙引號執(zhí)行,這里為了保險起見,不給出更有危害性的代碼,利用這個還是需要點(diǎn)技巧的。 

總之這個問題非常嚴(yán)重,找了一下,發(fā)現(xiàn)目前沒有修補(bǔ)漏洞的網(wǎng)站還是很多的。而ThinkPHP框架的特征其實(shí)非常好識別,有意者直接寫個scanner進(jìn)行掃描也未必不可能。 
為了不造成更大損失,特地發(fā)帖希望引起各位使用thinkphp做開發(fā)的同學(xué)關(guān)注。盡早升級官方的安全補(bǔ)丁 

作者:GaRY

相關(guān)文章

最新評論

太仓市| 鞍山市| 南平市| 梁河县| 鹤壁市| 将乐县| 甘南县| 巴楚县| 西乌| 宁蒗| 汝南县| 宁波市| 大埔区| 阳谷县| 公主岭市| 松原市| 肃宁县| 修文县| 安康市| 石棉县| 敖汉旗| 内乡县| 高台县| 扎赉特旗| 建水县| 葫芦岛市| 香港| 会宁县| 定日县| 承德县| 永嘉县| 广丰县| 宜川县| 博野县| 洞头县| 怀远县| 固镇县| 龙口市| 京山县| 临颍县| 莒南县|