• <strike id="2k0e4"></strike>
    <ul id="2k0e4"><tbody id="2k0e4"></tbody></ul>
  • <th id="2k0e4"><menu id="2k0e4"></menu></th>
  • 為用戶創造價值

    始終追求工匠精神,是您靠譜的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優化、以及產品規劃和安全運維服務
    主站蜘蛛池模板: 中文无码字慕在线观看| 日韩无码系列综合区| 成年无码av片在线| 不卡无码人妻一区三区音频 | 国产亚洲精品a在线无码| 亚洲第一极品精品无码久久| 亚洲国产成人精品无码区在线网站| 蜜臀亚洲AV无码精品国产午夜. | 精品无码久久久久久久久水蜜桃| 一本加勒比HEZYO无码资源网 | 亚洲国产91精品无码专区| 精品深夜AV无码一区二区| 狠狠躁天天躁无码中文字幕图| 中文字幕无码乱码人妻系列蜜桃| 国产成人无码精品久久久免费 | 亚洲va中文字幕无码久久| 无码人妻精品一区二区三区99不卡| 日日麻批免费40分钟无码| 亚洲中文字幕不卡无码| 粉嫩高中生无码视频在线观看| 久久人午夜亚洲精品无码区| 精品无码无人网站免费视频| 无码人妻精品一区二区三区夜夜嗨| 亚洲?v无码国产在丝袜线观看| 无码人妻精品内射一二三AV| 亚洲国产精品无码久久九九大片| 无码精品人妻一区二区三区漫画| 国产亚洲3p无码一区二区| 国产精品99久久久精品无码 | 国产精品亚洲一区二区无码| 无码中文字幕人妻在线一区二区三区| 麻豆国产精品无码视频| 久久亚洲精品成人av无码网站| 无码专区—VA亚洲V天堂| 无码人妻丰满熟妇区免费| 亚洲av激情无码专区在线播放| 亚洲AV无码成人精品区天堂| 精品无码人妻夜人多侵犯18| 中文无码一区二区不卡αv| 无码射肉在线播放视频| 国产成人无码av片在线观看不卡|