如何从防护角度看Thinkphp历史漏洞

admin3年前PHP教程93
thinkphp rce漏洞和扫描流量

漏洞原理回顾

5.0.x版本漏洞

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

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

5.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)忽略异常继续运行代码,如下图:

thinkphp漏洞全网扫描

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

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

全网扫描发送exp

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

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

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

菜刀连接

在攻击者手工菜刀连接被攻陷的站点时,也会被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历史漏洞的详细内容,更多关于从防护角度看thinkphp历史漏洞的资料请关注其它相关文章!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

高防IP有什么用?租用美国BGP高防物理机配置推荐?

什么是高防IP?IP就像服务器的门牌号,无论是访问还是管理服务器,都要通过IP进行。同理,如果黑客想要对目标服务器进行DDos攻击,也要知道这个目标服务器的IP,并用大量的无效流量数据对目标IP发起请...

spss数据分析(大数据如何分析数据)

spss数据分析SPSS数据剖析办法有许多,本文从描绘性剖析、问卷剖析、量化剖析、核算建模、差异性剖析这几个模块,用一句话简述各个剖析办法的效果以及分享事例示例描绘性剖析频数剖析:一组数据的不同数值的...

GPU服务器的种类有哪些泉州GPU服务器如何选择

对GPU服务器的分类,首先需要确定一个角度(维度)来对GPU服务器做分类。1、按GPU服务器外形分类。分为塔式GPU服务器、机架式GPU服务器1)塔式GPU服务器塔式GPU服务器机箱比较大,服务器的配...

如何使用Casbin作为ThinkPHP的权限控制中间件

目录概述安装中间件Casbin Model 配置验证概述PHP-Casbin是一个强大的、高效的开源访问控制框架,它支持基于各种访问控制模型的权限管理。Think-Casbin是一个专为 ThinkP...

PHP中 empty() 和 isset() 的区别介绍

目录二者共同点二者区别1、对于未设置的变量的判断2、对于 "" (空字符串) 的判断3、对于 0 (作为整数的0) 的判断4、对于 0.0 (作为浮点数的0) 的判断5、对于 &q...

带GPU的服务器可以打游戏吗租用美国gpu服务器一般多少钱

带GPU的服务器可以打游戏吗?GPU服务器具有实时高速的并行计算和浮点计算能力,适应用于3D图形应用程序、视频解码、深度学习、科学计算等应用场景。完美支持Direct3D、OpenGL、DirectD...