ThinkPHP官方2018年12月9日發佈重要的安全更新,修復了一個嚴重的遠程代碼執行漏洞。該更新主要涉及一個安全更新,由於框架對控制器名沒有進行足夠的檢測會導致在沒有開啓強制路由的情況下可能的getshell漏洞,受影響的版本包括5.0和5.1版本,推薦儘快更新到最新版本。
漏洞分析
Thinkphp v5.0.x補丁地址: https://github.com/top-think/framework/commit/b797d72352e6b4eb0e11b6bc2a2ef25907b7756f
Thinkphp v5.1.x補丁地址: https://github.com/top-think/framework/commit/802f284bec821a608e7543d91126abc5901b2815
關鍵代碼:
// 獲取控制器名
$controller = strip_tags($result[1] ?: $this->rule->getConfig('default_controller'));
在修復之前程序未對控制器進行過濾,導致攻擊者可以通過引入\
符號來調用任意類方法。