為用戶(hù)創(chuàng)造價(jià)值的開(kāi)發(fā)公司

    始終追求工匠精神,是您靠譜的H5開(kāi)發(fā)、小程序開(kāi)發(fā)、微信開(kāi)發(fā)供應(yīng)商

    藍(lán)暢首頁(yè) >> 動(dòng)態(tài)

    Thinkphp框架filter參數(shù)漏洞解析

    時(shí)間:2019-05-24 00:00:00 | 來(lái)源:


       

    漏洞介紹

    CNNVD編號(hào):CNNVD-201812-489

    漏洞介紹鏈接

    noneCms github issue

    nonecms的作者通過(guò)升級(jí) thinkphp 框架的版本把漏洞修復(fù)了

    查看 thinkphp/library/think/App.php 這個(gè)文件的修改歷史可以發(fā)現(xiàn)

    更新框架前是5.1.0

    const VERSION = '5.1.0';

    更新框架后是5.1.31

    const VERSION = '5.1.31 LTS';

    漏洞修復(fù)

    漏洞出現(xiàn)在 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. // 解析額外參數(shù)

    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. }

    為了修復(fù)漏洞,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 修改歷史

    概括地說(shuō),就是把library/think/route/dispatch/Module.php 的代碼移動(dòng)到 library/think/route/dispatch/Url.php

    $controller變量的校驗(yàn)代碼經(jīng)過(guò)多次改進(jìn)之后,變成下面這個(gè)樣子

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

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

    3. }

    [A-Za-z][w|.]* 這個(gè)正則表達(dá)式的含義是 $controller 的第一個(gè)字符是字母A-Za-z。 [w|.] 匹配 a-zA-Z0-9_ 和 .。 例如可以匹配 a.b.abc123.., 所以嚴(yán)格來(lái)說(shuō), 這個(gè)正則表達(dá)式不是特別準(zhǔn)確

    漏洞運(yùn)行

    如果上面這段 $controller 變量的校驗(yàn)代碼去掉并訪問(wèn)下面類(lèi)似的鏈接,就會(huì)復(fù)現(xiàn)之前的漏洞。

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

    這時(shí)候變量 $controller 等于 thinkRequest

    當(dāng)執(zhí)行到文件 NoneCMS/thinkphp/library/think/Request.php 中的代碼的時(shí)候, $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. // 調(diào)用函數(shù)或者方法過(guò)濾

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

    等于執(zhí)行了以下代碼,這樣php運(yùn)行環(huán)境的敏感信息就泄露了。適當(dāng)構(gòu)造URL參數(shù)就可以實(shí)現(xiàn)更多攻擊和破解操作。

    1. $filter="phpinfo";

    2. $value=1;

    3. call_user_func($filter, $value);

    總結(jié)

    1. 調(diào)用call_user_func函數(shù)時(shí),要進(jìn)行參數(shù)校驗(yàn)。

    2. 對(duì)于 HTTP GET 請(qǐng)求里的參數(shù)盡可能使用嚴(yán)格的正則表達(dá)式進(jìn)行校驗(yàn)。


    本文轉(zhuǎn)自:http://blog.hexccc.com

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


    本文地址:
    更多內(nèi)容推薦:
    專(zhuān)欄最新閱讀:
    更多文章閱讀請(qǐng)至:技術(shù)專(zhuān)欄
    Tips: 為您提供 微信開(kāi)發(fā)H5開(kāi)發(fā)微信小程序開(kāi)發(fā)微信定制開(kāi)發(fā)網(wǎng)站開(kāi)發(fā)小程序商城開(kāi)發(fā)SEO網(wǎng)站優(yōu)化視頻后期制作等定制化開(kāi)發(fā)服務(wù)
    日本一区二区在线视频| 精品视频无码一区二区三区| 国产精品视频一区二区噜噜| 精品熟女少妇av免费久久| 国产精品无码久久久久久| 日韩欧美精品不卡| 久久se精品一区精品二区国产| 欧美性精品hd在线观看| 国产精品区一区二区三在线播放| 91精品国产色综久久| 亚洲国产欧美日韩精品一区二区三区| 亚洲第一极品精品无码久久| 国产精品久久久久久搜索| 精品亚洲一区二区三区在线观看| 亚洲AV无码国产精品色午友在线| 久久精品国产亚洲沈樵| 无码国产亚洲日韩国精品视频一区二区三区| 亚洲动漫精品无码av天堂| 在线欧美v日韩v国产精品v| 日韩精品中文字幕第2页| 欧美精品hdvideosex4k| 99久久精品免费观看国产| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 色偷偷88888欧美精品久久久| 日本精品卡一卡2卡3卡四卡| 亚洲国产精品人人做人人爽| 国产成人精品优优av| 久久久人妻精品无码一区| 久久精品人人做人人爽电影蜜月| 国产AV国片精品一区二区| 国产男靠女免费视频网站| 欧美国产日韩精品| 国产一区二区不卡视频| 亚洲综合精品香蕉久久网97| 免费在线观看黄色小视频| 在线人成精品免费视频| 七色视频男人的天堂| 伊人久久大香线蕉精品| 黄色在线视频网站| 国产韩国精品一区二区三区| 午夜天堂精品久久久久|