孫海波 陳哲 周琪 陳霓
【摘要】? ? 本文就工作中發(fā)現(xiàn)的一起“ThinkPHP-3.2.X遠程代碼執(zhí)行漏洞”,淺談如何做好網(wǎng)站的安全漏洞防范,防止攻擊者利用該漏洞進行遠程執(zhí)行代碼,對目標網(wǎng)站進行掛馬、數(shù)據(jù)竊取、遠程控制等惡意操作。
【關(guān)鍵詞】? ? 網(wǎng)絡(luò)安全漏洞? ? ThinkPHP 遠程代碼執(zhí)行
引言:
互聯(lián)網(wǎng)技術(shù)快速發(fā)展的同時,也出現(xiàn)了越來越多的安全漏洞,必須高度重視。相比于2019年,2020年網(wǎng)絡(luò)安全漏洞數(shù)量仍呈現(xiàn)增長的趨勢。根據(jù)國家信息安全漏洞庫(CNNVD)數(shù)據(jù)統(tǒng)計,2020 年全年至 2021 年上半年新增漏洞信息27097條。從廠商分布來看,產(chǎn)生網(wǎng)絡(luò)安全漏洞前五的公司分別為:Microsoft公司、Google公司、Oracle公司、Netgear公司、IBM公司;從漏洞類型來看, 網(wǎng)絡(luò)安全漏洞前五的類型分別為:緩沖區(qū)錯誤、跨站腳本、輸入驗證錯誤、信息泄露、代碼問題;從漏洞修復(fù)情況來看,前五名的國內(nèi)廠商分別為:華為(Huawei)、福昕(Foxit)、聯(lián)想(Lenovo)、研華(Advantech)、中興通訊(ZTE),且漏洞修復(fù)率均為100%[1]。
ThinkPHP是一種簡便易用的輕量級PHP框架,原名FCS,最早出現(xiàn)在2006年初。其支持Windows/Unix/Linux等操作系統(tǒng)環(huán)境,兼容性強,操作簡單方便。其突出的特點是支持跨版本、跨平臺和跨數(shù)據(jù)庫移植。
網(wǎng)站在運營過程中,為了提高訪問時效性,會將用戶信息存入緩存來減少訪問次數(shù)。而ThinkPHP框架在處理緩存數(shù)據(jù)時將數(shù)據(jù)進行序列化,并存入一個PHP文件中,這種方法在帶來快捷的同時可能會造成命令執(zhí)行風險。存在ThinkPHP-3.2.X遠程代碼執(zhí)行漏洞的網(wǎng)站在其業(yè)務(wù)代碼中,如果模板賦值給assign方法的第一個參數(shù)可控,則可導(dǎo)致模板文件路徑被覆蓋為攜帶攻擊代碼的文件路徑,從而攻擊者可以插入惡意代碼,造成遠程命令執(zhí)行。
一、事件經(jīng)過
筆者一直從事對web網(wǎng)站的安全漏洞挖掘工作,于2021年7月發(fā)現(xiàn)一起比較典型的ThinkPHP-3.2.X遠程代碼執(zhí)行漏洞,供讀者參考。漏洞詳細情況:漏洞名稱為ThinkPHP-3.2.X遠程代碼執(zhí)行漏洞;漏洞數(shù)量1個;漏洞等級為高危;網(wǎng)站地址為http://118.---.--.37:39916/ (“---”代表網(wǎng)站部分域名地址)。
二、驗證過程
我們通過Web安全漏洞掃描工具,發(fā)現(xiàn)該網(wǎng)站(http://118.---.--.37:39916/)存在ThinkPHP-3.2.X遠程代碼執(zhí)行漏洞。下面我們開始對這個鏈接地址進行漏洞驗證,在驗證時需要使用“蟻劍”工具進行端口shell鏈接,進而對目標服務(wù)器進行攻擊驗證。
1.網(wǎng)站基本情況分析。我們打開網(wǎng)站頁面,使用瀏覽器插件Wappalyzer來探測是否使用ThinkPHP框架。Wappalyzer插件可以快速對目標網(wǎng)站進行基本情況分析,是一款非常實用的插件工具,通過該插件能夠分析目標網(wǎng)站所采用的平臺構(gòu)架、網(wǎng)站環(huán)境、服務(wù)器配置環(huán)境、JavaScript框架、編程語言等參數(shù),可通過Google、火狐商店等安裝或者離線安裝此插件。該插件使用簡單易懂,首先打開我們要分析檢測的網(wǎng)頁,然后點擊插件就可以看到對該網(wǎng)站分析的結(jié)果,通過Wappalyzer插件分析目標網(wǎng)頁結(jié)果如圖1所示。
2.debug模式測試。我們抓取對目標網(wǎng)站的請求包,并對該請求進行分析,測試payload為http://118.---.--.37:39916/index.php?m=Home&c=Index&a=index&test=--><?=phpinfo();?>。
測試該漏洞可能會有兩種情況,一種就是目標網(wǎng)站開啟debug模式,一種就是目標網(wǎng)站未開啟debug模式。該漏洞的利用原理就是我們在請求包中輸入攻擊代碼,發(fā)送請求,響應(yīng)會報系統(tǒng)錯誤的提示,而日志會寫入日志文件中,日志文件路徑同樣有兩種:開啟debug模式是\Application\Runtime\Logs\Home\21_07_31.log;未開啟debug模式是\Application\Runtime\Logs\Common\21_07_31.log。其中的21_07_31.log文件名以當天的日期命名,我們先對開啟debug模式進行測試,如圖2所示。
經(jīng)過測試,在debug模式下未出現(xiàn)系統(tǒng)錯誤提示,所以目標網(wǎng)站未開啟debug模式。漏洞利用payload為http://118.---.--.37:39916/index.php?m=Home&c=Index&a=index&value[_filename]=./Application/Runtime/Logs/Home/21_07_31.log。
3.非debug模式測試。抓包并分析,測試Payload為http://118.---.--.37:39916/index.php?m=--><?=phpinfo();?>。如圖3所示,顯示“系統(tǒng)發(fā)生錯誤”,即在非debug模式下出現(xiàn)系統(tǒng)錯誤提示。
漏洞利用payload為http://118.---.--.37:39916/index.php?m=Home&c=Index&a=index&value[_filename]=./Application/Runtime/Logs/Common/21_07-31.log,漏洞利用成功,說明phpinfo已被寫入日志文件中。
4.寫入測試代碼。我們進一步利用漏洞,寫入一句測試代碼,如圖4所示。使用蟻劍鏈接服務(wù)器終端工具,中國蟻劍是一款開源的跨平臺網(wǎng)站管理工具,它主要面向于合法授權(quán)的滲透測試安全人員以及進行常規(guī)操作的網(wǎng)站管理員。我們可以從GitHub網(wǎng)站中下載蟻劍的源碼,下載地址為:https://github.com/AntSwordProject/AntSword-Loader。連接時在蟻劍界面右擊點擊新增,輸入鏈接http://118.---.--.37:39916/index.php?m=Home&c=Index&a=index&value[_filename]=./Application/Runtime/Logs/Common/21_07-31.log,以及要連接的密碼123,連接成功后如圖5所示。
5.連接目標服務(wù)器。通過上一步驟,我們已經(jīng)可以連接到目標服務(wù)器,可以看到目標服務(wù)器的當前路徑、磁盤列表、系統(tǒng)信息、當前用戶等信息。至此,我們可以判定網(wǎng)站http://118.---.--.37:39916/index.php)存在ThinkPHP-3.2.X遠程代碼執(zhí)行漏洞,我們利用緩存邏輯缺陷可直接寫入代碼,直觀顯示出ThinkPHP-3.2.X遠程代碼執(zhí)行漏洞的巨大危害。
三、修復(fù)建議
1.最好的修復(fù)方法就是升級到最新的ThinkPHP版本,或者其它不受此漏洞影響的安全版本。
2.不建議直接使用assign方法對模板變量進行賦值。
3.減少使用高危函數(shù)如include等,如果必須使用可對函數(shù)進行文件內(nèi)容過濾操作。
4.對所有輸入提交可能包含文件地址的內(nèi)容,包括服務(wù)器本地文件及遠程文件,進行嚴格檢查,參數(shù)中不允許出現(xiàn)./和../等目錄跳轉(zhuǎn)符。
5.嚴格檢查文件包含函數(shù)中的參數(shù)是否被外界可控。
6.嚴格檢查變量是否已經(jīng)初始化。
四、結(jié)束語
一直以來,網(wǎng)絡(luò)安全漏洞呈上升趨勢,為了確保我們網(wǎng)站的安全,必須增強我們的責任心,經(jīng)常開展對網(wǎng)站的漏洞掃描工作。這次發(fā)現(xiàn)的ThinkPHP-3.2.X遠程代碼執(zhí)行漏洞,由于網(wǎng)站程序設(shè)計錯誤,導(dǎo)致遠程代碼執(zhí)行問題。所以,我們在使用ThinkPHP等開源框架的時候,不僅僅要考慮易用性,也必須重視安全問題,否則會導(dǎo)致用戶數(shù)據(jù)泄露,服務(wù)器被提權(quán)等問題的發(fā)生。2021年8月17日,國務(wù)院頒布了《關(guān)鍵信息基礎(chǔ)設(shè)施安全保護條例》,將于9月1日起施行?!蛾P(guān)鍵信息基礎(chǔ)設(shè)施安全保護條例》的施行,對于我國的網(wǎng)絡(luò)信息化建設(shè)具有重要作用。本條例所指的關(guān)鍵信息基礎(chǔ)設(shè)施,主要是指公共通信和信息服務(wù)、能源、交通、水利、金融、公共服務(wù)、電子政務(wù)、國防科技工業(yè)等重要行業(yè),如果這些領(lǐng)域的基礎(chǔ)設(shè)施遭到破壞、喪失功能或者數(shù)據(jù)泄露,會造成嚴重的后果,可能會嚴重危害國家安全、國計民生等。網(wǎng)絡(luò)安全至關(guān)重要,必須高度重視,防患于未然。
參? 考? 文? 獻
[1]啟明星辰發(fā)布《2020~2021網(wǎng)絡(luò)安全態(tài)勢觀察報告》. 2021-08-16. https://www.venustech.com.cn/u/cms/www/202108/181454025drp.pdf;