在一些PHP程序的CMS中如何找到PHP授權(quán)軟件中的后門(mén)
[重要通告]如您遇疑難雜癥,本站支持知識(shí)付費(fèi)業(yè)務(wù),掃右邊二維碼加博主微信,可節(jié)省您寶貴時(shí)間哦!
對(duì)于很多靠賣(mài)PHP程序養(yǎng)家糊口的人來(lái)說(shuō),授權(quán)是必不可少的一部分,為了防止被他人惡意破解,通常還會(huì)加入一些后門(mén)留一手,可我們這種正版用戶就不答應(yīng)了,憑什么我付費(fèi)買(mǎi)的程序居然還留著一個(gè)后門(mén),萬(wàn)一哪天有Bug那我不就GG了么?
一.遠(yuǎn)程代碼執(zhí)行后門(mén)
這個(gè)相信大家都很熟悉了,eval等等函數(shù)都能實(shí)現(xiàn),不過(guò),特別提醒:在查殺時(shí)一定要注意以下幾個(gè)函數(shù),此類(lèi)后門(mén)比較隱蔽,不容易被查殺(fwrite/file_put_contents+include(_once)/require(_once)
這類(lèi)后門(mén)其實(shí)是利用寫(xiě)出一個(gè)PHP文件然后include導(dǎo)致的遠(yuǎn)程代碼執(zhí)行,以及,注意unserialize導(dǎo)致的PHP對(duì)象注入引起文件寫(xiě)入+ 遠(yuǎn)程代碼執(zhí)行
查殺方式:對(duì)于第一類(lèi)后門(mén),先使用webshell專(zhuān)殺工具殺掉,然后手動(dòng)查殺頑固后門(mén)(先搜索fwrite/file_put_contents然后看看是否有對(duì)指定文件寫(xiě)入變量的功能,然后追溯到這個(gè)變量的來(lái)由,若發(fā)現(xiàn)出自$_GET $_POST $_SERVER["HTTP_xxxxx"],且輸出后綴名為.php或include/require本文件或有任意include(通過(guò)GET參數(shù)include對(duì)應(yīng)文件且可以夠到通過(guò)file_put_contents類(lèi)函數(shù)創(chuàng)建的文件(沒(méi)有對(duì)目錄過(guò)濾),則很可能為后門(mén),此類(lèi)后門(mén)解決方案如下:
對(duì)于include本文件的,嘗試注釋掉include語(yǔ)句并查看是否有影響正常功能,若影響,請(qǐng)刪除注釋符號(hào)然后對(duì)$_GET之類(lèi)的過(guò)濾PHP代碼
,然后搜索unserialize函數(shù),若參數(shù)來(lái)自GET,則判斷有后門(mén),此類(lèi)后門(mén)僅在PHP版本>7.0,使用第二個(gè)參數(shù)傳入['allowed_classes' => [允許的類(lèi)]或false]
來(lái)限制unserialize可以序列化的對(duì)象
二.管理員密碼上傳后門(mén)
這一個(gè)后門(mén)主要是影響CMS等有管理員后臺(tái)的程序(比如某人開(kāi)發(fā)的EMLOG模板中就包含了此后門(mén)),通過(guò)file_put_contents向網(wǎng)站目錄中寫(xiě)入加密后的密碼或通過(guò)file_get_contents/curl向授權(quán)服務(wù)器發(fā)送管理員用戶名密碼(不一定是用戶名密碼,比如數(shù)據(jù)庫(kù)密碼皆有可能)
解決方式:搜索以上字符串,若為函數(shù)則搜索這個(gè)函數(shù)名,直到找到未包含機(jī)密信息則可排除,若找到將機(jī)密信息隨便亂改(比如后門(mén)獲取數(shù)據(jù)庫(kù)密碼改為獲取值888888)
PS:請(qǐng)注意eval包裹的加密代碼
問(wèn)題未解決?付費(fèi)解決問(wèn)題加Q或微信 2589053300 (即Q號(hào)又微信號(hào))右上方掃一掃可加博主微信
所寫(xiě)所說(shuō),是心之所感,思之所悟,行之所得;文當(dāng)無(wú)敷衍,落筆求簡(jiǎn)潔。 以所舍,求所獲;有所依,方所成!