<delect id="lnrzz"></delect>
<i id="lnrzz"><delect id="lnrzz"><meter id="lnrzz"></meter></delect></i>
<dl id="lnrzz"><i id="lnrzz"></i></dl>
<video id="lnrzz"><i id="lnrzz"></i></video><dl id="lnrzz"></dl>
<dl id="lnrzz"></dl><video id="lnrzz"><dl id="lnrzz"></dl></video>
<video id="lnrzz"></video>
<dl id="lnrzz"></dl><dl id="lnrzz"></dl>
<noframes id="lnrzz"><dl id="lnrzz"></dl><dl id="lnrzz"></dl><video id="lnrzz"><dl id="lnrzz"><i id="lnrzz"></i></dl></video>
<i id="lnrzz"><dl id="lnrzz"><delect id="lnrzz"></delect></dl></i><dl id="lnrzz"></dl><video id="lnrzz"></video><video id="lnrzz"><dl id="lnrzz"></dl></video>
<video id="lnrzz"><dl id="lnrzz"></dl></video> <dl id="lnrzz"><dl id="lnrzz"><i id="lnrzz"></i></dl></dl><video id="lnrzz"><dl id="lnrzz"></dl></video><video id="lnrzz"></video><video id="lnrzz"><dl id="lnrzz"></dl></video><i id="lnrzz"></i>
<dl id="lnrzz"></dl><video id="lnrzz"><noframes id="lnrzz"><noframes id="lnrzz"><dl id="lnrzz"></dl>
<video id="lnrzz"></video>

為用戶創造價值

始終追求工匠精神,是您靠譜的H5開發、小程序開發、微信開發供應商

Thinkphp框架filter參數漏洞解析

2019-05-24 00:00:00 來源:Infocode藍暢


   

漏洞介紹

CNNVD編號:CNNVD-201812-489

漏洞介紹鏈接

noneCms github issue

nonecms的作者通過升級 thinkphp 框架的版本把漏洞修復了

查看 thinkphp/library/think/App.php 這個文件的修改歷史可以發現

更新框架前是5.1.0

const VERSION = '5.1.0';

更新框架后是5.1.31

const VERSION = '5.1.31 LTS';

漏洞修復

漏洞出現在 NoneCMS/thinkphp/library/think/route/dispatch/Url.php 文件中的parseUrl方法里

  1. // 解析模塊

  2. $module=$this->app->config('app_multi_module') ? array_shift($path) : null;

  3. if($this->param['auto_search']){

  4. $controller=$this->autoFindController($module, $path);

  5. }else{

  6. // 解析控制器

  7. $controller=!empty($path) ? array_shift($path) : null;

  8. }

  9. // 解析操作

  10. $action=!empty($path) ? array_shift($path) : null;

  11. // 解析額外參數

  12. if($path){

  13. if($this->app['config']->get('url_param_type')){

  14. $var+=$path;

  15. }else{

  16. preg_replace_callback('/(w+)|([^|]+)/', function($match)use(&$var){

  17. $var[$match[1]]=strip_tags($match[2]);

  18. }, implode('|', $path));

  19. }

  20. }

為了修復漏洞,thinkphp官方添加了新的代碼

  1. if($this->param['auto_search']){

  2. $controller=$this->autoFindController($module, $path);

  3. }else{

  4. // 解析控制器

  5. $controller=!empty($path) ? array_shift($path) : null;

  6. }

  7. /**** 加入了這段代碼 ****

  8.        if ($controller && !preg_match('/^[A-Za-z](w|.)*$/', $controller)) {

  9.            throw new HttpException(404, 'controller not exists:' . $controller);

  10.        }

  11.        **** 加入了這段代碼 ****/

  12. // 解析操作

  13. $action=!empty($path) ? array_shift($path) : null;

具體修改歷史可以在以下鏈接找到

Url.php 修改歷史

概括地說,就是把library/think/route/dispatch/Module.php 的代碼移動到 library/think/route/dispatch/Url.php

$controller變量的校驗代碼經過多次改進之后,變成下面這個樣子

  1. if($controller&&!preg_match('/^[A-Za-z][w|.]*$/', $controller)){

  2. thrownewHttpException(404, 'controller not exists:' . $controller);

  3. }

[A-Za-z][w|.]* 這個正則表達式的含義是 $controller 的第一個字符是字母A-Za-z。 [w|.] 匹配 a-zA-Z0-9_ 和 .。 例如可以匹配 a.b.abc123.., 所以嚴格來說, 這個正則表達式不是特別準確 。

漏洞運行

如果上面這段 $controller 變量的校驗代碼去掉并訪問下面類似的鏈接,就會復現之前的漏洞。

   http://xxx.com/NoneCms/public/?s=index/thinkRequest/input&filter=phpinfo&data=1

這時候變量 $controller 等于 thinkRequest

當執行到文件 NoneCMS/thinkphp/library/think/Request.php 中的代碼的時候, $filter = "phpinfo", $value = 1

  1. privatefunctionfilterValue(&$value, $key, $filters)

  2. {

  3. $default=array_pop($filters);

  4. foreach($filtersas$filter){

  5. if(is_callable($filter)){

  6. // 調用函數或者方法過濾

  7. $value=call_user_func($filter, $value);

等于執行了以下代碼,這樣php運行環境的敏感信息就泄露了。適當構造URL參數就可以實現更多攻擊和破解操作。

  1. $filter="phpinfo";

  2. $value=1;

  3. call_user_func($filter, $value);

總結

  1. 調用call_user_func函數時,要進行參數校驗。

  2. 對于 HTTP GET 請求里的參數盡可能使用嚴格的正則表達式進行校驗。


本文轉自:http://blog.hexccc.com

原文地址:http://blog.hexccc.com/thinkphp-filter-code-vulnerability/


 
上一篇:什么是CDN加速?為什么要給客戶做CDN加速
下一篇:服務器選Linux還是 Windows?

相關閱讀推薦:

什么是雙機熱備?雙機熱備的解決方案

什么是負載均衡?負載均衡在什么情況下使用

教您正確識別百度蜘蛛

服務器選Linux還是 Windows?

什么是CDN加速?為什么要給客戶做CDN加速

什么是SSL安全證書?為什么要安裝SSL證書?

Tips: 專業提供H5開發、小程序開發、微信開發、網站開發、APP開發、SEO優化、以及產品規劃和安全運維服務
午夜嘿嘿嘿影院_337p西西人体大胆瓣开下部_反派她声娇体软[快穿]_亚洲国产精品电影人久久
<delect id="lnrzz"></delect>
<i id="lnrzz"><delect id="lnrzz"><meter id="lnrzz"></meter></delect></i>
<dl id="lnrzz"><i id="lnrzz"></i></dl>
<video id="lnrzz"><i id="lnrzz"></i></video><dl id="lnrzz"></dl>
<dl id="lnrzz"></dl><video id="lnrzz"><dl id="lnrzz"></dl></video>
<video id="lnrzz"></video>
<dl id="lnrzz"></dl><dl id="lnrzz"></dl>
<noframes id="lnrzz"><dl id="lnrzz"></dl><dl id="lnrzz"></dl><video id="lnrzz"><dl id="lnrzz"><i id="lnrzz"></i></dl></video>
<i id="lnrzz"><dl id="lnrzz"><delect id="lnrzz"></delect></dl></i><dl id="lnrzz"></dl><video id="lnrzz"></video><video id="lnrzz"><dl id="lnrzz"></dl></video>
<video id="lnrzz"><dl id="lnrzz"></dl></video> <dl id="lnrzz"><dl id="lnrzz"><i id="lnrzz"></i></dl></dl><video id="lnrzz"><dl id="lnrzz"></dl></video><video id="lnrzz"></video><video id="lnrzz"><dl id="lnrzz"></dl></video><i id="lnrzz"></i>
<dl id="lnrzz"></dl><video id="lnrzz"><noframes id="lnrzz"><noframes id="lnrzz"><dl id="lnrzz"></dl>
<video id="lnrzz"></video>