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

最近官方發(fā)布了一個(gè)安全補(bǔ)丁,官方表述是:該URL安全漏洞會(huì)造成用戶(hù)在客戶(hù)端偽造URL,執(zhí)行非法代碼。
可是貌似大多數(shù)開(kāi)發(fā)者和使用者并沒(méi)有注意到此漏洞的危害性,應(yīng)者了了,更不用說(shuō)有多少人去升級(jí)了。隨后我對(duì)其進(jìn)行了分析,發(fā)現(xiàn)此問(wèn)題果然是一個(gè)非常嚴(yán)重的問(wèn)題,只要使用了thinkphp框架,就可以直接執(zhí)行任意php代碼。特此發(fā)帖預(yù)警各位。
我們來(lái)分析一下官方的補(bǔ)丁:
/trunk/ThinkPHP/Lib/Core/Dispatcher.class.php
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));
這個(gè)代碼是把pathinfo當(dāng)作restful類(lèi)型url進(jìn)行解析的,主要作用是把pathinfo中的數(shù)據(jù)解析并合并到$_GET數(shù)組中。
然而在用正則解析pathinfo的時(shí)候,主要是這一句:
$res = preg_replace('@(w+)'.$depr.'([^'.$depr.'/]+)@e', '$var['\1']="\2";', implode($depr,$paths));
這里明顯使用了preg_replace的/e參數(shù),這是個(gè)非常危險(xiǎn)的參數(shù),如果用了這個(gè)參數(shù),preg_replace第二個(gè)參數(shù)就會(huì)被當(dāng)做php代碼執(zhí)行,作者用這種方式在第二個(gè)參數(shù)中,利用PHP代碼給數(shù)組動(dòng)態(tài)賦值。
'$var['\1']="\2";'
而這里又是雙引號(hào),而雙引號(hào)中的php變量語(yǔ)法又是能夠被解析執(zhí)行的。因此,攻擊者只要對(duì)任意一個(gè)使用thinkphp框架編寫(xiě)的應(yīng)用程序,使用如下方式進(jìn)行訪(fǎng)問(wèn),即可執(zhí)行任意PHP代碼:
index.php/module/action/param1/${@print(THINK_VERSION)}
由于是雙引號(hào)執(zhí)行,這里為了保險(xiǎn)起見(jiàn),不給出更有危害性的代碼,利用這個(gè)還是需要點(diǎn)技巧的。
總之這個(gè)問(wèn)題非常嚴(yán)重,找了一下,發(fā)現(xiàn)目前沒(méi)有修補(bǔ)漏洞的網(wǎng)站還是很多的。而ThinkPHP框架的特征其實(shí)非常好識(shí)別,有意者直接寫(xiě)個(gè)scanner進(jìn)行掃描也未必不可能。
為了不造成更大損失,特地發(fā)帖希望引起各位使用thinkphp做開(kāi)發(fā)的同學(xué)關(guān)注。盡早升級(jí)官方的安全補(bǔ)丁
作者:GaRY
相關(guān)文章
徹底關(guān)閉win10、win11系統(tǒng)自帶的windows defender殺毒功能(圖文詳解)
這篇文章主要介紹了徹底關(guān)閉win10、win11系統(tǒng)自帶的windows defender殺毒功能的詳細(xì)方法,這樣后續(xù)才能使用一些軟件2024-09-30火絨能恢復(fù)被刪除的文件嗎? 火絨恢復(fù)被當(dāng)成病毒刪除文件的方法
我們進(jìn)行電腦磁盤(pán)清理的時(shí)候,偶爾會(huì)出現(xiàn)被殺毒軟件誤刪除的情況,對(duì)于這種誤刪除的情況我們可以用火絨來(lái)進(jìn)行恢復(fù),想知道如何找回來(lái),這里給朋友們分享火絨軟件恢復(fù)誤殺文2024-05-16電腦怎么關(guān)閉所有廣告彈窗? 一招關(guān)掉所有廣告包括360安全衛(wèi)士彈窗
電腦總是會(huì)出現(xiàn)各種廣告,該怎么禁止展示廣告呢?今天我們分享一招關(guān)掉所有廣告彈窗,包括360安全衛(wèi)士彈出的全部廣告窗口2024-05-09電腦360ai辦公如何關(guān)閉? 360安全衛(wèi)士ai辦公的關(guān)閉方法
電腦右下角總是出現(xiàn)ai圖標(biāo),誤點(diǎn)后會(huì)出現(xiàn)360ai辦公,想要關(guān)掉ai辦公圖標(biāo),該怎么操作呢?下面我們我們總結(jié)了多種解決辦法,詳細(xì)請(qǐng)看下文介紹2024-05-09怎么關(guān)閉360AI大會(huì)員彈窗廣告提示? 360安全衛(wèi)士ai大會(huì)員提醒關(guān)閉方法
360安全衛(wèi)士總是彈出ai大會(huì)員的推廣廣告,想要關(guān)閉這個(gè)彈窗,該怎么操作呢?我們點(diǎn)擊360設(shè)置中心,點(diǎn)擊彈窗設(shè)置,彈窗設(shè)置拉倒底,關(guān)閉AI大會(huì)員提醒2024-05-09火絨安裝不上怎么回事 安裝火絨安全軟件提示驅(qū)動(dòng)版本不匹配的解決辦法
有時(shí)候安裝火絨安全軟件時(shí),會(huì)跳出“驅(qū)動(dòng)版本不匹配,重啟電腦即可修復(fù)重啟”的提示界面,會(huì)有小伙伴不知道如何操作,可以先根據(jù)提示升級(jí)版本,然后啟動(dòng)試試2024-02-20火絨ip黑名單怎么添加ip段? 火絨ip黑名單功能的使用方法
使用電腦的時(shí)候有用戶(hù)想要限制指定IP進(jìn)出,那么在火絨安全中心中怎么開(kāi)啟此功能和添加IP黑名單呢?下方是關(guān)于如何使用火絨安全軟件添加ip黑名單的具體操作方法2024-02-20MD5 、SHA1、SHA256 文件哈希校驗(yàn)方法分享
文件哈希運(yùn)算是指通過(guò)特定的算法將文件內(nèi)容轉(zhuǎn)化為固定長(zhǎng)度的哈希值,用來(lái)嚴(yán)重我們從網(wǎng)上上下載的文件是否與官方提供的一致,因?yàn)楹芏嗲闆r下官方容易會(huì)被惡意修改掛馬等2024-02-08專(zhuān)業(yè)級(jí)文件MD5、SHA-256/512算法支持的校驗(yàn)工具(文件哈希校驗(yàn)器集合)
下面給大家推薦幾款好用的免費(fèi)的sha1、SHA-256校驗(yàn)工具軟件,網(wǎng)上下載的文件不知道是否被修改過(guò),那么就需要這樣的工具了,需要的小伙伴們來(lái)了解一下2024-02-08魯大師被檢測(cè)為病毒怎么辦? win11魯大師顯示為病毒的處理方法
魯大師是一款專(zhuān)業(yè)的電腦硬件檢測(cè)工具,win11系統(tǒng)安裝完魯大師工具之后,卻被系統(tǒng)安全防護(hù)功能識(shí)別為病毒,對(duì)此魯大師被win11識(shí)別為病毒怎么辦呢?具體請(qǐng)看下文介紹2025-03-29