教你从防护角度看Thinkphp历史漏洞

发布时间 - 2020-05-10 00:00:00    点击率:

下面由thinkphp框架开发教程栏目给大家介绍从防护角度看thinkphp历史漏洞,希望对需要的朋友有所帮助!

一、前言

19年初,网上公开了2个Thinkphp5的RCE漏洞,漏洞非常好用,导致有很多攻击者用扫描器进行全网扫描。我们通过ips设备持续观察到大量利用这几个漏洞进行批量getshell的攻击流量,本文主要从流量角度简要分析和利用thinkphp进行攻击的全网扫描和getshell流量痕迹。

二、Thinkphp RCE漏洞和扫描流量

2.1漏洞原理回顾

2.1.15.0.x版本漏洞

原理在于Thinkphp处理请求的关键类为Request(thinkphp/library/think/Request.php),该类可以实现对HTTP请求的一些设置

Thinkphp支持配置“表单伪装变量”,默认情况下该变量值为_method,因此在method()中,可以通过“表单伪装变量”进行变量覆盖实现对该类任意函数的调用,并且$_POST作为函数的参数传入。可以构造请求来实现对Request类属性值的覆盖,例如覆盖filter属性(filter属性保存了用于全局过滤的函数),从而实现代码执行。      

2.1.25.1.x-5.2.x版本漏洞

与5.0.x版本漏洞相似,漏洞点都存在于Request(thinkphp/library/think/Request.php)类中,其中:

$method变量是$this->method,其等同于POST的“_method”参数值,可以利用覆盖$filter的属性值(filter属性保存了用于全局过滤的函数),从而实现代码执行。

该漏洞触发时会出现警告级别的异常导致程序终止,此时需要设置忽略异常提示,在public/index.php中配置error_reporting(0)忽略异常继续运行代码,如下图:

2.2Thinkphp漏洞全网扫描

从流量角度来看,利用Thinkphp漏洞就是发一个http包。我们发现某黑客的扫描器是先写一个简单的一句话作为指纹,后续再访问这个文件看是否返回指纹信息,访问成功说明shell已经成功,基本就是发两个http包,扫描器记下成功写入的shell的网站ip和url然后手工用菜刀连接,进行后续操作。

从IPS设备日志和人工验证,攻击者的攻击步骤包含2步:1、全网扫描发送exp,根据指纹识别是否getshell;2、菜刀连接,进行远程控制;

2.2.1全网扫描发送exp

一般扫描日志都是遍历B段或C段,时间也比较密集,某个被记录的扫描器日志片段如下,

具备3个特征:1、目的ip为相同C段或者B段,2、端口比较固定,3扫描时间非常密集

扫描器发送的确认shell已经写入成功的报文,采用扫描器专用的指纹,所以ips是没有这种检测规则的。

2.2.2菜刀连接

在攻击者手工菜刀连接被攻陷的站点时,也会被ips检测到,通过上下文关联溯源到thinkphp漏洞作为攻击者的突破口。挑选几个当时记录的典型案例:

被攻陷的郑州服务器1(122.114.24.216):

该网站确实为thinkphp5发开,当时webshell木马还在服务器上未被删除。可以通过服务器访问黑客上传的该木马,指纹信息为baidu,扫描器用这个指纹来自动判断getshell成功并记录url。

被攻陷的四川服务器(182.151.214.106):

被攻陷的四川服务器(182.151.214.106):

这个案例木马虽然被清除,但是当时服务器还是可以连通,服务器也是thinkphp框架,用户名疑似chanpei

设备记录了黑客连接木马并执行网络查询命令时的报文,得到的信息与以上报错信息一致。并且看得出服务器也所处为内网的一台机器,截图看到至少该网络包含192.168.9.0和192.168.56.0两个子网,如下图:

被攻陷的美国服务器(161.129.41.36):

美国这台服务器上的webshell也被清理掉了,通过设备抓包,发现有黑客使用了相同的webshell木马,即 x.php,怀疑是同一批黑客。

黑客在浏览美国服务器上x.php(webshell)文件内容时,设备记录了x.php的密码为xiao,并且标志位也是baidu。

可以看出利用这两个Thinkphp高危RCE漏洞,当时是扫到了大量的服务器漏洞的。

三、总结

本文结合Thinkphp的历史漏洞原理,分享了发现利用Thinkphp漏洞攻击成功的案例。目前设备每天检测到最多的日志就是weblogic、struts2、thinkphp这类直接getshell的日志或者ssh rdp暴力破解日志。很多攻击者一旦发现最新的exp就装备到自己的扫描器上面全网一阵扫,一天下来可能就是若干个shell。所以出现高危漏洞后建议用户及时打上补丁,配置好安全设备策略,从实际几个案例来看,扫描器的风险一直都在。如果能配置好网站禁止ip直接访问,能在某种程度上缓解一下这种威胁。由于水平有限,欢迎大家指出文中的错误和交流指教


# thinkphp  # php  # Filter  # public  # this  # http  # ssh  # 美国  # 几个  # 可以通过  # 工用  # 器上  # 表单  # 子网  # 如下图  # 自己的  # 检测到 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel安装步骤详细教程_Laravel环境搭建指南  如何用AWS免费套餐快速搭建高效网站?  个人网站制作流程图片大全,个人网站如何注销?  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  公司网站制作需要多少钱,找人做公司网站需要多少钱?  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  香港服务器网站推广:SEO优化与外贸独立站搭建策略  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  lovemo网页版地址 lovemo官网手机登录  简历没回改:利用AI润色让你的文字更专业  Linux系统运维自动化项目教程_Ansible批量管理实战  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  实现点击下箭头变上箭头来回切换的两种方法【推荐】  郑州企业网站制作公司,郑州招聘网站有哪些?  用v-html解决Vue.js渲染中html标签不被解析的问题  JavaScript如何实现继承_有哪些常用方法  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  Android Socket接口实现即时通讯实例代码  如何用PHP工具快速搭建高效网站?  详解阿里云nginx服务器多站点的配置  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  活动邀请函制作网站有哪些,活动邀请函文案?  Android使用GridView实现日历的简单功能  Laravel如何处理文件下载请求?(Response示例)  iOS中将个别页面强制横屏其他页面竖屏  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  js实现点击每个li节点,都弹出其文本值及修改  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  如何快速生成专业多端适配建站电话?  Laravel API资源类怎么用_Laravel API Resource数据转换  Thinkphp 中 distinct 的用法解析  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  javascript中对象的定义、使用以及对象和原型链操作小结  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  详解Oracle修改字段类型方法总结  制作企业网站建设方案,怎样建设一个公司网站?  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  如何在VPS电脑上快速搭建网站?  如何在阿里云高效完成企业建站全流程?  Laravel如何使用.env文件管理环境变量?(最佳实践)  Laravel如何使用Service Container和依赖注入?(代码示例)  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?